What's the "_ddot_" hierarchy for? Is it necessary to flash the kernel?

When running the Makefile of the Kernel-4.9 source, the output generates in the device tree path (arch/arm64/boot/dts) a “ddot” tree (a hierarchy of 6 ddot folders, and a hardware/nvidia/platform/… hierarchy at the end). What’s that folder for? Is it necessary to copy it to the Linux_for_Tegra/Kernel path to flash the TX2?

As an analogy, there are certain characters in web addresses which are escaped and interpreted. For example, a space is not allowed, but a “%20” is.

In the kernel build there are sometimes relative directory names. The current directory is “.”, the parent directory is “…”. Dot-dot. If you were to use a standard tool which is looking at existing directories, then if you have too many “…/…/…” in a chain, then the extras which go beyond the root of everything are truncated. By using a “ddot” macro and having the kernel itself deal with this the configuration for out of tree content is preserved without truncating by various tools.

I always use source_sync.sh to download source. For example, R32.1 kernel is:

./source_sync.sh -k tegra-l4t-r32.1

This results in:

.
├── sources
    ├── hardware
    │   └── nvidia
    └── kernel
        ├── kernel-4.9

Note that within the kernel source, technically only the “kernel-4.9/” subdirectory, there is code which uses relative paths to refer to items in the “hardware/nvidia/” area…and without the ddot the paths would get cut short.

You can build the kernel anywhere. The reason for placing the kernel at a specific location and using flash tools to add the resulting kernel is because of the need to sign the kernel (and device tree or bootloader if that is built).

you can ignore it, it is same as (arch/arm64/boot/dts)