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).

1 Like

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