[U-Boot] [PATCH 0/7] Fix incorrect usage of the (FIT) DT node unit address

The DT spec[1] demands a unit-address in a node name (name@address) to match the "reg" property inside that node: uart0: serial@1c28000 { reg = <0x01c28000 0x400>; .... If there is no reg property in a node, there must not be a unit address in the node name as well (so no '@' sign at all).
Newer version of the device tree compiler (dtc) will warn about violations of this rule: .... <stdout>: Warning (unit_address_vs_reg): Node /images/fdt@1 has a unit name, but no reg property ....
To avoid those warnings, but still keep enumerable node names, we replace the "@" sign with a dash ("-"), which does not have a specical meaning, but is a valid node name character. So the first fdt file (as referenced above in the warning message) would be called "fdt-1" instead.
This affects mostly documenation files and some examples of FIT image files, but also some code which actually generates FIT images: - The first four patches fix documentation, example files and comments, they should not affect actual generated code or files. In places where having multiple instances of a node is normal (fdt, hash, signature), I simply replaced the '@' sign with the dash. Where one would expect only one instance (kernel, initrd), I removed the bogus '@1' completely, so a "kernel" just goes by just this very name. - Patch 5/7 fixes the usage in the Allwinner SPL FIT image files, this has been on the list before. - Patch 6/7 fixes the usage when the mkimage tool (auto-)generates FIT images. - The final patch 7/7 fixes the usage for the ARMv8 secure firmware image handling. I am a bit unsure about this one, as this seems to *look* for a specific node name, which sounds a bit dodgy to me. I think DT parsers should never rely on a certain node name, but either use references or look inside nodes to find a matching one. Also I am not sure who actually generates those FIT image files this code gets to read. Any input would be welcome here.
Please let me know if this makes some sense or not.
Cheers, Andre.
[1] https://www.devicetree.org/downloads/devicetree-specification-v0.1-20160524....; chapter 2.2.1 "Node names", page 6
Andre Przywara (7): doc: FIT image: fix incorrect description of DT node unit address doc: FIT image: fix incorrect examples of DT node unit address doc: fix incorrect usage of DT node unit address fix incorrect usage of DT node unit address in comments sunxi: arm64: correct usage of DT node address in FIT generation tools: fix incorrect usage of DT node unit address armv8: secure firmware: fix incorrect unit address in node name
.../arm/cpu/armv8/fsl-layerscape/doc/README.falcon | 16 ++-- arch/arm/cpu/armv8/sec_firmware.c | 2 +- board/sunxi/mksunxi_fit_atf.sh | 16 ++-- common/image-fit.c | 16 ++-- common/image-sig.c | 2 +- doc/README.uniphier | 36 ++++---- doc/chromium/chromebook_jerry.its | 16 ++-- doc/chromium/nyan-big.its | 16 ++-- doc/uImage.FIT/beaglebone_vboot.txt | 84 ++++++++--------- doc/uImage.FIT/command_syntax_extensions.txt | 42 ++++----- doc/uImage.FIT/howto.txt | 52 +++++------ doc/uImage.FIT/kernel.its | 28 +++--- doc/uImage.FIT/kernel_fdt.its | 20 ++--- doc/uImage.FIT/multi-with-fpga.its | 28 +++--- doc/uImage.FIT/multi-with-loadables.its | 40 ++++----- doc/uImage.FIT/multi.its | 54 +++++------ doc/uImage.FIT/multi_spl.its | 14 +-- doc/uImage.FIT/overlay-fdt-boot.txt | 78 ++++++++-------- doc/uImage.FIT/sign-configs.its | 18 ++-- doc/uImage.FIT/sign-images.its | 16 ++-- doc/uImage.FIT/signature.txt | 100 ++++++++++----------- doc/uImage.FIT/source_file_format.txt | 26 +++--- doc/uImage.FIT/update3.its | 12 +-- doc/uImage.FIT/update_uboot.its | 4 +- doc/uImage.FIT/x86-fit-boot.txt | 10 +-- include/image.h | 26 +++--- tools/fit_image.c | 24 ++--- tools/image-host.c | 10 +-- 28 files changed, 403 insertions(+), 403 deletions(-)

The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Fix all occurences in the FIT image documentation files where this was not observed, to not give bad examples to the reader.
Signed-off-by: Andre Przywara andre.przywara@arm.com --- doc/uImage.FIT/beaglebone_vboot.txt | 84 +++++++++++----------- doc/uImage.FIT/command_syntax_extensions.txt | 42 +++++------ doc/uImage.FIT/howto.txt | 52 +++++++------- doc/uImage.FIT/overlay-fdt-boot.txt | 78 ++++++++++----------- doc/uImage.FIT/signature.txt | 100 +++++++++++++-------------- doc/uImage.FIT/source_file_format.txt | 26 +++---- doc/uImage.FIT/x86-fit-boot.txt | 10 +-- 7 files changed, 196 insertions(+), 196 deletions(-)
diff --git a/doc/uImage.FIT/beaglebone_vboot.txt b/doc/uImage.FIT/beaglebone_vboot.txt index b4ab28542e..f1862c2753 100644 --- a/doc/uImage.FIT/beaglebone_vboot.txt +++ b/doc/uImage.FIT/beaglebone_vboot.txt @@ -130,7 +130,7 @@ Put this into a file in that directory called sign.its: #address-cells = <1>;
images { - kernel@1 { + kernel { data = /incbin/("Image.lzo"); type = "kernel"; arch = "arm"; @@ -138,27 +138,27 @@ Put this into a file in that directory called sign.its: compression = "lzo"; load = <0x80008000>; entry = <0x80008000>; - hash@1 { + hash-1 { algo = "sha1"; }; }; - fdt@1 { + fdt-1 { description = "beaglebone-black"; data = /incbin/("am335x-boneblack.dtb"); type = "flat_dt"; arch = "arm"; compression = "none"; - hash@1 { + hash-1 { algo = "sha1"; }; }; }; configurations { - default = "conf@1"; - conf@1 { - kernel = "kernel@1"; - fdt = "fdt@1"; - signature@1 { + default = "conf-1"; + conf-1 { + kernel = "kernel"; + fdt = "fdt-1"; + signature-1 { algo = "sha1,rsa2048"; key-name-hint = "dev"; sign-images = "fdt", "kernel"; @@ -211,7 +211,7 @@ You should see something like this:
FIT description: Beaglebone black Created: Sun Jun 1 12:50:30 2014 - Image 0 (kernel@1) + Image 0 (kernel) Description: unavailable Created: Sun Jun 1 12:50:30 2014 Type: Kernel Image @@ -223,7 +223,7 @@ Created: Sun Jun 1 12:50:30 2014 Entry Point: 0x80008000 Hash algo: sha1 Hash value: c94364646427e10f423837e559898ef02c97b988 - Image 1 (fdt@1) + Image 1 (fdt-1) Description: beaglebone-black Created: Sun Jun 1 12:50:30 2014 Type: Flat Device Tree @@ -232,11 +232,11 @@ Created: Sun Jun 1 12:50:30 2014 Architecture: ARM Hash algo: sha1 Hash value: cb09202f889d824f23b8e4404b781be5ad38a68d - Default Configuration: 'conf@1' - Configuration 0 (conf@1) + Default Configuration: 'conf-1' + Configuration 0 (conf-1) Description: unavailable - Kernel: kernel@1 - FDT: fdt@1 + Kernel: kernel + FDT: fdt-1
Now am335x-boneblack-pubkey.dtb contains the public key and image.fit contains @@ -251,12 +251,12 @@ which results in:
Verifying Hash Integrity ... sha1,rsa2048:dev+ ## Loading kernel from FIT Image at 7fc6ee469000 ... - Using 'conf@1' configuration + Using 'conf-1' configuration Verifying Hash Integrity ... sha1,rsa2048:dev+ OK
- Trying 'kernel@1' kernel subimage + Trying 'kernel' kernel subimage Description: unavailable Created: Sun Jun 1 12:50:30 2014 Type: Kernel Image @@ -274,8 +274,8 @@ OK
Unimplemented compression type 4 ## Loading fdt from FIT Image at 7fc6ee469000 ... - Using 'conf@1' configuration - Trying 'fdt@1' fdt subimage + Using 'conf-1' configuration + Trying 'fdt-1' fdt subimage Description: beaglebone-black Created: Sun Jun 1 12:50:30 2014 Type: Flat Device Tree @@ -291,7 +291,7 @@ OK Loading Flat Device Tree ... OK
## Loading ramdisk from FIT Image at 7fc6ee469000 ... - Using 'conf@1' configuration + Using 'conf-1' configuration Could not find subimage node
Signature check OK @@ -313,8 +313,8 @@ the above flow works. But it is fun to do this by hand, so you can load image.fit into a hex editor like ghex, and change a byte in the kernel:
- $UOUT/tools/fit_info -f image.fit -n /images/kernel@1 -p data -NAME: kernel@1 + $UOUT/tools/fit_info -f image.fit -n /images/kernel -p data +NAME: kernel LEN: 7790938 OFF: 168
@@ -324,12 +324,12 @@ fit_check_sign again. You should see something like:
Verifying Hash Integrity ... sha1,rsa2048:dev+ ## Loading kernel from FIT Image at 7f5a39571000 ... - Using 'conf@1' configuration + Using 'conf-1' configuration Verifying Hash Integrity ... sha1,rsa2048:dev+ OK
- Trying 'kernel@1' kernel subimage + Trying 'kernel' kernel subimage Description: unavailable Created: Sun Jun 1 13:09:21 2014 Type: Kernel Image @@ -343,12 +343,12 @@ OK Hash value: c94364646427e10f423837e559898ef02c97b988 Verifying Hash Integrity ... sha1 error -Bad hash value for 'hash@1' hash node in 'kernel@1' image node +Bad hash value for 'hash-1' hash node in 'kernel' image node Bad Data Hash
## Loading fdt from FIT Image at 7f5a39571000 ... - Using 'conf@1' configuration - Trying 'fdt@1' fdt subimage + Using 'conf-1' configuration + Trying 'fdt-1' fdt subimage Description: beaglebone-black Created: Sun Jun 1 13:09:21 2014 Type: Flat Device Tree @@ -364,7 +364,7 @@ OK Loading Flat Device Tree ... OK
## Loading ramdisk from FIT Image at 7f5a39571000 ... - Using 'conf@1' configuration + Using 'conf-1' configuration Could not find subimage node
Signature check Bad (error 1) @@ -386,11 +386,11 @@ images configurations
fdtget -l image.fit /configurations -conf@1 -fdtget -l image.fit /configurations/conf@1 -signature@1 +conf-1 +fdtget -l image.fit /configurations/conf-1 +signature-1
- fdtget -p image.fit /configurations/conf@1/signature@1 + fdtget -p image.fit /configurations/conf-1/signature-1 hashed-strings hashed-nodes timestamp @@ -401,20 +401,20 @@ algo key-name-hint sign-images
- fdtget image.fit /configurations/conf@1/signature@1 hashed-nodes -/ /configurations/conf@1 /images/fdt@1 /images/fdt@1/hash@1 /images/kernel@1 /images/kernel@1/hash@1 + fdtget image.fit /configurations/conf-1/signature-1 hashed-nodes +/ /configurations/conf-1 /images/fdt-1 /images/fdt-1/hash /images/kernel /images/kernel/hash-1
This gives us a bit of a look into the signature that mkimage added. Note you can also use fdtdump to list the entire device tree.
Say we want to change the kernel that this configuration uses -(/images/kernel@1). We could just put a new kernel in the image, but we will +(/images/kernel). We could just put a new kernel in the image, but we will need to change the hash to match. Let's simulate that by changing a byte of the hash:
- fdtget -tx image.fit /images/kernel@1/hash@1 value + fdtget -tx image.fit /images/kernel/hash-1 value c9436464 6427e10f 423837e5 59898ef0 2c97b988 - fdtput -tx image.fit /images/kernel@1/hash@1 value c9436464 6427e10f 423837e5 59898ef0 2c97b981 + fdtput -tx image.fit /images/kernel/hash-1 value c9436464 6427e10f 423837e5 59898ef0 2c97b981
Now check it again:
@@ -437,7 +437,7 @@ configuration. But that won't work since you are not allowed to change the configuration in any way. Try it with a fresh (valid) image if you like by running the mkimage link again. Then:
- fdtput -p image.fit /configurations/conf@1/signature@2 value fred + fdtput -p image.fit /configurations/conf-1/signature-1 value fred $UOUT/tools/fit_check_sign -f image.fit -k am335x-boneblack-pubkey.dtb Verifying Hash Integrity ... - sha1,rsa2048:devrsa_verify_with_keynode: RSA failed to verify: -13 @@ -521,9 +521,9 @@ U-Boot# ext2load mmc 0:2 82000000 /boot/image.fit 7824930 bytes read in 589 ms (12.7 MiB/s) U-Boot# bootm 82000000 ## Loading kernel from FIT Image at 82000000 ... - Using 'conf@1' configuration + Using 'conf-1' configuration Verifying Hash Integrity ... sha1,rsa2048:dev+ OK - Trying 'kernel@1' kernel subimage + Trying 'kernel' kernel subimage Description: unavailable Created: 2014-06-01 19:32:54 UTC Type: Kernel Image @@ -538,8 +538,8 @@ U-Boot# bootm 82000000 Hash value: c94364646427e10f423837e559898ef02c97b988 Verifying Hash Integrity ... sha1+ OK ## Loading fdt from FIT Image at 82000000 ... - Using 'conf@1' configuration - Trying 'fdt@1' fdt subimage + Using 'conf-1' configuration + Trying 'fdt-1' fdt subimage Description: beaglebone-black Created: 2014-06-01 19:32:54 UTC Type: Flat Device Tree diff --git a/doc/uImage.FIT/command_syntax_extensions.txt b/doc/uImage.FIT/command_syntax_extensions.txt index 676f992f90..6a99089ab5 100644 --- a/doc/uImage.FIT/command_syntax_extensions.txt +++ b/doc/uImage.FIT/command_syntax_extensions.txt @@ -138,31 +138,31 @@ unit.
Examples:
-- boot kernel "kernel@1" stored in a new uImage located at 200000: -bootm 200000:kernel@1 +- boot kernel "kernel-1" stored in a new uImage located at 200000: +bootm 200000:kernel-1
-- boot configuration "cfg@1" from a new uImage located at 200000: -bootm 200000#cfg@1 +- boot configuration "cfg-1" from a new uImage located at 200000: +bootm 200000#cfg-1
-- boot configuration "cfg@1" with extra "cfg@2" from a new uImage located +- boot configuration "cfg-1" with extra "cfg-2" from a new uImage located at 200000: -bootm 200000#cfg@1#cfg@2 +bootm 200000#cfg-1#cfg-2
-- boot "kernel@1" from a new uImage at 200000 with initrd "ramdisk@2" found in +- boot "kernel-1" from a new uImage at 200000 with initrd "ramdisk-2" found in some other new uImage stored at address 800000: -bootm 200000:kernel@1 800000:ramdisk@2 +bootm 200000:kernel-1 800000:ramdisk-2
-- boot "kernel@2" from a new uImage at 200000, with initrd "ramdisk@1" and FDT - "fdt@1", both stored in some other new uImage located at 800000: -bootm 200000:kernel@1 800000:ramdisk@1 800000:fdt@1 +- boot "kernel-2" from a new uImage at 200000, with initrd "ramdisk-1" and FDT + "fdt-1", both stored in some other new uImage located at 800000: +bootm 200000:kernel-1 800000:ramdisk-1 800000:fdt-1
-- boot kernel "kernel@2" with initrd "ramdisk@2", both stored in a new uImage +- boot kernel "kernel-2" with initrd "ramdisk-2", both stored in a new uImage at address 200000, with a raw FDT blob stored at address 600000: -bootm 200000:kernel@2 200000:ramdisk@2 600000 +bootm 200000:kernel-2 200000:ramdisk-2 600000
-- boot kernel "kernel@2" from new uImage at 200000 with FDT "fdt@1" from the +- boot kernel "kernel-2" from new uImage at 200000 with FDT "fdt-1" from the same new uImage: -bootm 200000:kernel@2 - 200000:fdt@1 +bootm 200000:kernel-2 - 200000:fdt-1
Note on current image address @@ -186,16 +186,16 @@ current image address is to be used. For example, consider the following commands:
tftp 200000 /tftpboot/uImage -bootm :kernel@1 +bootm :kernel-1 Last command is equivalent to: -bootm 200000:kernel@1 +bootm 200000:kernel-1
tftp 200000 /tftpboot/uImage -bootm 400000:kernel@1 :ramdisk@1 +bootm 400000:kernel-1 :ramdisk-1 Last command is equivalent to: -bootm 400000:kernel@1 400000:ramdisk@1 +bootm 400000:kernel-1 400000:ramdisk-1
tftp 200000 /tftpboot/uImage -bootm :kernel@1 400000:ramdisk@1 :fdt@1 +bootm :kernel-1 400000:ramdisk-1 :fdt-1 Last command is equivalent to: -bootm 200000:kernel@1 400000:ramdisk@1 400000:fdt@1 +bootm 200000:kernel-1 400000:ramdisk-1 400000:fdt-1 diff --git a/doc/uImage.FIT/howto.txt b/doc/uImage.FIT/howto.txt index 2988a52aa1..8592719685 100644 --- a/doc/uImage.FIT/howto.txt +++ b/doc/uImage.FIT/howto.txt @@ -86,7 +86,7 @@ $ $ mkimage -l kernel.itb FIT description: Simple image with single Linux kernel Created: Tue Mar 11 17:26:15 2008 - Image 0 (kernel@1) + Image 0 (kernel) Description: Vanilla Linux kernel Type: Kernel Image Compression: gzip compressed @@ -99,10 +99,10 @@ Created: Tue Mar 11 17:26:15 2008 Hash value: 2ae2bb40 Hash algo: sha1 Hash value: 3c200f34e2c226ddc789240cca0c59fc54a67cf4 - Default Configuration: 'config@1' - Configuration 0 (config@1) + Default Configuration: 'config-1' + Configuration 0 (config-1) Description: Boot Linux kernel - Kernel: kernel@1 + Kernel: kernel
The resulting image file kernel.itb can be now transferred to the target, @@ -130,7 +130,7 @@ Bytes transferred = 944464 (e6950 hex) FIT image found FIT description: Simple image with single Linux kernel Created: 2008-03-11 16:26:15 UTC - Image 0 (kernel@1) + Image 0 (kernel) Description: Vanilla Linux kernel Type: Kernel Image Compression: gzip compressed @@ -144,15 +144,15 @@ Bytes transferred = 944464 (e6950 hex) Hash value: 2ae2bb40 Hash algo: sha1 Hash value: 3c200f34e2c226ddc789240cca0c59fc54a67cf4 - Default Configuration: 'config@1' - Configuration 0 (config@1) + Default Configuration: 'config-1' + Configuration 0 (config-1) Description: Boot Linux kernel - Kernel: kernel@1 + Kernel: kernel
=> bootm ## Booting kernel from FIT Image at 00900000 ... - Using 'config@1' configuration - Trying 'kernel@1' kernel subimage + Using 'config-1' configuration + Trying 'kernel' kernel subimage Description: Vanilla Linux kernel Type: Kernel Image Compression: gzip compressed @@ -196,7 +196,7 @@ $ $ mkimage -l kernel_fdt.itb FIT description: Simple image with single Linux kernel and FDT blob Created: Tue Mar 11 16:29:22 2008 - Image 0 (kernel@1) + Image 0 (kernel) Description: Vanilla Linux kernel Type: Kernel Image Compression: gzip compressed @@ -209,7 +209,7 @@ Created: Tue Mar 11 16:29:22 2008 Hash value: 2c0cc807 Hash algo: sha1 Hash value: 264b59935470e42c418744f83935d44cdf59a3bb - Image 1 (fdt@1) + Image 1 (fdt-1) Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed @@ -219,11 +219,11 @@ Created: Tue Mar 11 16:29:22 2008 Hash value: 0d655d71 Hash algo: sha1 Hash value: 25ab4e15cd4b8a5144610394560d9c318ce52def - Default Configuration: 'conf@1' - Configuration 0 (conf@1) + Default Configuration: 'conf-1' + Configuration 0 (conf-1) Description: Boot Linux kernel with FDT blob - Kernel: kernel@1 - FDT: fdt@1 + Kernel: kernel + FDT: fdt-1
The resulting image file kernel_fdt.itb can be now transferred to the target, @@ -245,7 +245,7 @@ Bytes transferred = 1109776 (10ef10 hex) FIT image found FIT description: Simple image with single Linux kernel and FDT blob Created: 2008-03-11 15:29:22 UTC - Image 0 (kernel@1) + Image 0 (kernel) Description: Vanilla Linux kernel Type: Kernel Image Compression: gzip compressed @@ -259,7 +259,7 @@ Bytes transferred = 1109776 (10ef10 hex) Hash value: 2c0cc807 Hash algo: sha1 Hash value: 264b59935470e42c418744f83935d44cdf59a3bb - Image 1 (fdt@1) + Image 1 (fdt-1) Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed @@ -270,15 +270,15 @@ Bytes transferred = 1109776 (10ef10 hex) Hash value: 0d655d71 Hash algo: sha1 Hash value: 25ab4e15cd4b8a5144610394560d9c318ce52def - Default Configuration: 'conf@1' - Configuration 0 (conf@1) + Default Configuration: 'conf-1' + Configuration 0 (conf-1) Description: Boot Linux kernel with FDT blob - Kernel: kernel@1 - FDT: fdt@1 + Kernel: kernel + FDT: fdt-1 => bootm ## Booting kernel from FIT Image at 00900000 ... - Using 'conf@1' configuration - Trying 'kernel@1' kernel subimage + Using 'conf-1' configuration + Trying 'kernel' kernel subimage Description: Vanilla Linux kernel Type: Kernel Image Compression: gzip compressed @@ -295,8 +295,8 @@ Bytes transferred = 1109776 (10ef10 hex) Verifying Hash Integrity ... crc32+ sha1+ OK Uncompressing Kernel Image ... OK ## Flattened Device Tree from FIT Image at 00900000 - Using 'conf@1' configuration - Trying 'fdt@1' FDT blob subimage + Using 'conf-1' configuration + Trying 'fdt-1' FDT blob subimage Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed diff --git a/doc/uImage.FIT/overlay-fdt-boot.txt b/doc/uImage.FIT/overlay-fdt-boot.txt index 63e47da2a9..dddc4db1a6 100644 --- a/doc/uImage.FIT/overlay-fdt-boot.txt +++ b/doc/uImage.FIT/overlay-fdt-boot.txt @@ -24,7 +24,7 @@ Without using overlays the configuration would be as follows for every case. /dts-v1/; / { images { - kernel@1 { + kernel { data = /incbin/("./zImage"); type = "kernel"; arch = "arm"; @@ -32,32 +32,32 @@ Without using overlays the configuration would be as follows for every case. load = <0x82000000>; entry = <0x82000000>; }; - fdt@1 { + fdt-1 { data = /incbin/("./foo-reva.dtb"); type = "flat_dt"; arch = "arm"; }; - fdt@2 { + fdt-2 { data = /incbin/("./foo-revb.dtb"); type = "flat_dt"; arch = "arm"; }; - fdt@3 { + fdt-3 { data = /incbin/("./foo-reva-bar.dtb"); type = "flat_dt"; arch = "arm"; }; - fdt@4 { + fdt-4 { data = /incbin/("./foo-revb-bar.dtb"); type = "flat_dt"; arch = "arm"; }; - fdt@5 { + fdt-5 { data = /incbin/("./foo-revb-baz.dtb"); type = "flat_dt"; arch = "arm"; }; - fdt@6 { + fdt-6 { data = /incbin/("./foo-revb-bar-baz.dtb"); type = "flat_dt"; arch = "arm"; @@ -67,28 +67,28 @@ Without using overlays the configuration would be as follows for every case. configurations { default = "foo-reva.dtb; foo-reva.dtb { - kernel = "kernel@1"; - fdt = "fdt@1"; + kernel = "kernel"; + fdt = "fdt-1"; }; foo-revb.dtb { - kernel = "kernel@1"; - fdt = "fdt@2"; + kernel = "kernel"; + fdt = "fdt-2"; }; foo-reva-bar.dtb { - kernel = "kernel@1"; - fdt = "fdt@3"; + kernel = "kernel"; + fdt = "fdt-3"; }; foo-revb-bar.dtb { - kernel = "kernel@1"; - fdt = "fdt@4"; + kernel = "kernel"; + fdt = "fdt-4"; }; foo-revb-baz.dtb { - kernel = "kernel@1"; - fdt = "fdt@5"; + kernel = "kernel"; + fdt = "fdt-5"; }; foo-revb-bar-baz.dtb { - kernel = "kernel@1"; - fdt = "fdt@6"; + kernel = "kernel"; + fdt = "fdt-6"; }; }; }; @@ -117,7 +117,7 @@ explosion problem. /dts-v1/; / { images { - kernel@1 { + kernel { data = /incbin/("./zImage"); type = "kernel"; arch = "arm"; @@ -125,31 +125,31 @@ explosion problem. load = <0x82000000>; entry = <0x82000000>; }; - fdt@1 { + fdt-1 { data = /incbin/("./foo.dtb"); type = "flat_dt"; arch = "arm"; load = <0x87f00000>; }; - fdt@2 { + fdt-2 { data = /incbin/("./reva.dtbo"); type = "flat_dt"; arch = "arm"; load = <0x87fc0000>; }; - fdt@3 { + fdt-3 { data = /incbin/("./revb.dtbo"); type = "flat_dt"; arch = "arm"; load = <0x87fc0000>; }; - fdt@4 { + fdt-4 { data = /incbin/("./bar.dtbo"); type = "flat_dt"; arch = "arm"; load = <0x87fc0000>; }; - fdt@5 { + fdt-5 { data = /incbin/("./baz.dtbo"); type = "flat_dt"; arch = "arm"; @@ -160,34 +160,34 @@ explosion problem. configurations { default = "foo-reva.dtb; foo-reva.dtb { - kernel = "kernel@1"; - fdt = "fdt@1", "fdt@2"; + kernel = "kernel"; + fdt = "fdt-1", "fdt-2"; }; foo-revb.dtb { - kernel = "kernel@1"; - fdt = "fdt@1", "fdt@3"; + kernel = "kernel"; + fdt = "fdt-1", "fdt-3"; }; foo-reva-bar.dtb { - kernel = "kernel@1"; - fdt = "fdt@1", "fdt@2", "fdt@4"; + kernel = "kernel"; + fdt = "fdt-1", "fdt-2", "fdt-4"; }; foo-revb-bar.dtb { - kernel = "kernel@1"; - fdt = "fdt@1", "fdt@3", "fdt@4"; + kernel = "kernel"; + fdt = "fdt-1", "fdt-3", "fdt-4"; }; foo-revb-baz.dtb { - kernel = "kernel@1"; - fdt = "fdt@1", "fdt@3", "fdt@5"; + kernel = "kernel"; + fdt = "fdt-1", "fdt-3", "fdt-5"; }; foo-revb-bar-baz.dtb { - kernel = "kernel@1"; - fdt = "fdt@1", "fdt@3", "fdt@4", "fdt@5"; + kernel = "kernel"; + fdt = "fdt-1", "fdt-3", "fdt-4", "fdt-5"; }; bar { - fdt = "fdt@4"; + fdt = "fdt-4"; }; baz { - fdt = "fdt@5"; + fdt = "fdt-5"; }; }; }; diff --git a/doc/uImage.FIT/signature.txt b/doc/uImage.FIT/signature.txt index 2ece4c47de..a765722679 100644 --- a/doc/uImage.FIT/signature.txt +++ b/doc/uImage.FIT/signature.txt @@ -83,7 +83,7 @@ Device Tree Bindings The following properties are required in the FIT's signature node(s) to allow the signer to operate. These should be added to the .its file. Signature nodes sit at the same level as hash nodes and are called -signature@1, signature@2, etc. +signature-1, signature-2, etc.
- algo: Algorithm name (e.g. "sha1,rsa2048")
@@ -118,9 +118,9 @@ For config bindings, these properties are added by the signer: - hashed-nodes: A list of nodes which were hashed by the signer. Each is a string - the full path to node. A typical value might be:
- hashed-nodes = "/", "/configurations/conf@1", "/images/kernel@1", - "/images/kernel@1/hash@1", "/images/fdt@1", - "/images/fdt@1/hash@1"; + hashed-nodes = "/", "/configurations/conf-1", "/images/kernel", + "/images/kernel/hash-1", "/images/fdt-1", + "/images/fdt-1/hash-1";
- hashed-strings: The start and size of the string region of the FIT that was hashed @@ -178,44 +178,44 @@ As an example, consider this FIT:
/ { images { - kernel@1 { + kernel-1 { data = <data for kernel1> - signature@1 { + signature-1 { algo = "sha1,rsa2048"; value = <...kernel signature 1...> }; }; - kernel@2 { + kernel-2 { data = <data for kernel2> - signature@1 { + signature-1 { algo = "sha1,rsa2048"; value = <...kernel signature 2...> }; }; - fdt@1 { + fdt-1 { data = <data for fdt1>; - signature@1 { + signature-1 { algo = "sha1,rsa2048"; vaue = <...fdt signature 1...> }; }; - fdt@2 { + fdt-2 { data = <data for fdt2>; - signature@1 { + signature-1 { algo = "sha1,rsa2048"; vaue = <...fdt signature 2...> }; }; }; configurations { - default = "conf@1"; - conf@1 { - kernel = "kernel@1"; - fdt = "fdt@1"; + default = "conf-1"; + conf-1 { + kernel = "kernel-1"; + fdt = "fdt-1"; }; - conf@1 { - kernel = "kernel@2"; - fdt = "fdt@2"; + conf-1 { + kernel = "kernel-2"; + fdt = "fdt-2"; }; }; }; @@ -224,18 +224,18 @@ Since both kernels are signed it is easy for an attacker to add a new configuration 3 with kernel 1 and fdt 2:
configurations { - default = "conf@1"; - conf@1 { - kernel = "kernel@1"; - fdt = "fdt@1"; + default = "conf-1"; + conf-1 { + kernel = "kernel-1"; + fdt = "fdt-1"; }; - conf@1 { - kernel = "kernel@2"; - fdt = "fdt@2"; + conf-1 { + kernel = "kernel-2"; + fdt = "fdt-2"; }; - conf@3 { - kernel = "kernel@1"; - fdt = "fdt@2"; + conf-3 { + kernel = "kernel-1"; + fdt = "fdt-2"; }; };
@@ -250,49 +250,49 @@ So the above example is adjusted to look like this:
/ { images { - kernel@1 { + kernel-1 { data = <data for kernel1> - hash@1 { + hash-1 { algo = "sha1"; value = <...kernel hash 1...> }; }; - kernel@2 { + kernel-2 { data = <data for kernel2> - hash@1 { + hash-1 { algo = "sha1"; value = <...kernel hash 2...> }; }; - fdt@1 { + fdt-1 { data = <data for fdt1>; - hash@1 { + hash-1 { algo = "sha1"; value = <...fdt hash 1...> }; }; - fdt@2 { + fdt-2 { data = <data for fdt2>; - hash@1 { + hash-1 { algo = "sha1"; value = <...fdt hash 2...> }; }; }; configurations { - default = "conf@1"; - conf@1 { - kernel = "kernel@1"; - fdt = "fdt@1"; - signature@1 { + default = "conf-1"; + conf-1 { + kernel = "kernel-1"; + fdt = "fdt-1"; + signature-1 { algo = "sha1,rsa2048"; value = <...conf 1 signature...>; }; }; - conf@2 { - kernel = "kernel@2"; - fdt = "fdt@2"; - signature@1 { + conf-2 { + kernel = "kernel-2"; + fdt = "fdt-2"; + signature-1 { algo = "sha1,rsa2048"; value = <...conf 1 signature...>; }; @@ -303,11 +303,11 @@ So the above example is adjusted to look like this:
You can see that we have added hashes for all images (since they are no longer signed), and a signature to each configuration. In the above example, -mkimage will sign configurations/conf@1, the kernel and fdt that are -pointed to by the configuration (/images/kernel@1, /images/kernel@1/hash@1, -/images/fdt@1, /images/fdt@1/hash@1) and the root structure of the image +mkimage will sign configurations/conf-1, the kernel and fdt that are +pointed to by the configuration (/images/kernel-1, /images/kernel-1/hash-1, +/images/fdt-1, /images/fdt-1/hash-1) and the root structure of the image (so that it isn't possible to add or remove root nodes). The signature is -written into /configurations/conf@1/signature@1/value. It can easily be +written into /configurations/conf-1/signature-1/value. It can easily be verified later even if the FIT has been signed with other keys in the meantime.
diff --git a/doc/uImage.FIT/source_file_format.txt b/doc/uImage.FIT/source_file_format.txt index 6f727a1e8a..b617b6ccec 100644 --- a/doc/uImage.FIT/source_file_format.txt +++ b/doc/uImage.FIT/source_file_format.txt @@ -102,15 +102,15 @@ Root node of the uImage Tree should have the following layout: | o images | | - | o image@1 {...} - | o image@2 {...} + | o image-1 {...} + | o image-2 {...} | ... | o configurations - |- default = "conf@1" + |- default = "conf-1" | - o conf@1 {...} - o conf@2 {...} + o conf-1 {...} + o conf-2 {...} ...
@@ -142,7 +142,7 @@ Root node of the uImage Tree should have the following layout: This node is a container node for component sub-image nodes. Each sub-node of the '/images' node should have the following layout:
- o image@1 + o image-1 |- description = "component sub-image description" |- data = /incbin/("path/to/data/file.bin") |- type = "sub-image type name" @@ -152,8 +152,8 @@ the '/images' node should have the following layout: |- load = <00000000> |- entry = <00000000> | - o hash@1 {...} - o hash@2 {...} + o hash-1 {...} + o hash-2 {...} ...
Mandatory properties: @@ -183,14 +183,14 @@ the '/images' node should have the following layout: property of the root node. Mandatory for types: "standalone" and "kernel".
Optional nodes: - - hash@1 : Each hash sub-node represents separate hash or checksum + - hash-1 : Each hash sub-node represents separate hash or checksum calculated for node's data according to specified algorithm.
5) Hash nodes -------------
-o hash@1 +o hash-1 |- algo = "hash or checksum algorithm name" |- value = [hash or checksum value]
@@ -212,8 +212,8 @@ The 'configurations' node has has the following structure: o configurations |- default = "default configuration sub-node unit name" | - o config@1 {...} - o config@2 {...} + o config-1 {...} + o config-2 {...} ...
@@ -231,7 +231,7 @@ o configurations
Each configuration has the following structure:
-o config@1 +o config-1 |- description = "configuration description" |- kernel = "kernel sub-node unit name" |- ramdisk = "ramdisk sub-node unit name" diff --git a/doc/uImage.FIT/x86-fit-boot.txt b/doc/uImage.FIT/x86-fit-boot.txt index 02238f9df8..88d3460a83 100644 --- a/doc/uImage.FIT/x86-fit-boot.txt +++ b/doc/uImage.FIT/x86-fit-boot.txt @@ -197,7 +197,7 @@ You can take a look at the resulting fit file if you like: $ dumpimage -l image.fit FIT description: Simple image with single Linux kernel on x86 Created: Tue Oct 7 10:57:24 2014 - Image 0 (kernel@1) + Image 0 (kernel) Description: Vanilla Linux kernel Created: Tue Oct 7 10:57:24 2014 Type: Kernel Image @@ -209,7 +209,7 @@ Created: Tue Oct 7 10:57:24 2014 Entry Point: 0x00000000 Hash algo: sha1 Hash value: 446b5163ebfe0fb6ee20cbb7a8501b263cd92392 - Image 1 (setup@1) + Image 1 (setup) Description: Linux setup.bin Created: Tue Oct 7 10:57:24 2014 Type: x86 setup.bin @@ -217,10 +217,10 @@ Created: Tue Oct 7 10:57:24 2014 Data Size: 12912 Bytes = 12.61 kB = 0.01 MB Hash algo: sha1 Hash value: a1f2099cf47ff9816236cd534c77af86e713faad - Default Configuration: 'config@1' - Configuration 0 (config@1) + Default Configuration: 'config-1' + Configuration 0 (config-1) Description: Boot Linux kernel - Kernel: kernel@1 + Kernel: kernel
Booting the FIT

On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Fix all occurences in the FIT image documentation files where this was not observed, to not give bad examples to the reader.
Signed-off-by: Andre Przywara andre.przywara@arm.com
doc/uImage.FIT/beaglebone_vboot.txt | 84 +++++++++++----------- doc/uImage.FIT/command_syntax_extensions.txt | 42 +++++------ doc/uImage.FIT/howto.txt | 52 +++++++------- doc/uImage.FIT/overlay-fdt-boot.txt | 78 ++++++++++----------- doc/uImage.FIT/signature.txt | 100 +++++++++++++-------------- doc/uImage.FIT/source_file_format.txt | 26 +++---- doc/uImage.FIT/x86-fit-boot.txt | 10 +-- 7 files changed, 196 insertions(+), 196 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
I'm not hugely keen on the inconsistency of kernel vs. hash@1, but I suppose it does not matter.
Regards, Simon

On 18 December 2017 at 21:24, Simon Glass sjg@chromium.org wrote:
On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Fix all occurences in the FIT image documentation files where this was not observed, to not give bad examples to the reader.
Signed-off-by: Andre Przywara andre.przywara@arm.com
doc/uImage.FIT/beaglebone_vboot.txt | 84 +++++++++++----------- doc/uImage.FIT/command_syntax_extensions.txt | 42 +++++------ doc/uImage.FIT/howto.txt | 52 +++++++------- doc/uImage.FIT/overlay-fdt-boot.txt | 78 ++++++++++----------- doc/uImage.FIT/signature.txt | 100 +++++++++++++-------------- doc/uImage.FIT/source_file_format.txt | 26 +++---- doc/uImage.FIT/x86-fit-boot.txt | 10 +-- 7 files changed, 196 insertions(+), 196 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
I'm not hugely keen on the inconsistency of kernel vs. hash@1, but I suppose it does not matter.
Applied to u-boot-dm, thanks!

The DT spec demands a unit-address of a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Fix all occurences in the FIT image example files where this was not observed, to not give bad examples to the reader.
Signed-off-by: Andre Przywara andre.przywara@arm.com --- doc/uImage.FIT/kernel.its | 28 ++++++++--------- doc/uImage.FIT/kernel_fdt.its | 20 ++++++------ doc/uImage.FIT/multi-with-fpga.its | 28 ++++++++--------- doc/uImage.FIT/multi-with-loadables.its | 40 ++++++++++++------------ doc/uImage.FIT/multi.its | 54 ++++++++++++++++----------------- doc/uImage.FIT/multi_spl.its | 14 ++++----- doc/uImage.FIT/sign-configs.its | 18 +++++------ doc/uImage.FIT/sign-images.its | 16 +++++----- doc/uImage.FIT/update3.its | 12 ++++---- doc/uImage.FIT/update_uboot.its | 4 +-- 10 files changed, 117 insertions(+), 117 deletions(-)
diff --git a/doc/uImage.FIT/kernel.its b/doc/uImage.FIT/kernel.its index 0aaf47e6c6..77ddf622de 100644 --- a/doc/uImage.FIT/kernel.its +++ b/doc/uImage.FIT/kernel.its @@ -9,7 +9,7 @@ #address-cells = <1>;
images { - kernel@1 { + kernel { description = "Vanilla Linux kernel"; data = /incbin/("./vmlinux.bin.gz"); type = "kernel"; @@ -18,20 +18,20 @@ compression = "gzip"; load = <00000000>; entry = <00000000>; - hash@1 { + hash-1 { algo = "crc32"; }; - hash@2 { + hash-2 { algo = "sha1"; }; }; };
configurations { - default = "config@1"; - config@1 { + default = "config-1"; + config-1 { description = "Boot Linux kernel"; - kernel = "kernel@1"; + kernel = "kernel"; }; }; }; @@ -47,7 +47,7 @@ For x86 a setup node is also required: see x86-fit-boot.txt. #address-cells = <1>;
images { - kernel@1 { + kernel { description = "Vanilla Linux kernel"; data = /incbin/("./image.bin.lzo"); type = "kernel"; @@ -56,12 +56,12 @@ For x86 a setup node is also required: see x86-fit-boot.txt. compression = "lzo"; load = <0x01000000>; entry = <0x00000000>; - hash@2 { + hash-2 { algo = "sha1"; }; };
- setup@1 { + setup { description = "Linux setup.bin"; data = /incbin/("./setup.bin"); type = "x86_setup"; @@ -70,18 +70,18 @@ For x86 a setup node is also required: see x86-fit-boot.txt. compression = "none"; load = <0x00090000>; entry = <0x00090000>; - hash@2 { + hash-2 { algo = "sha1"; }; }; };
configurations { - default = "config@1"; - config@1 { + default = "config-1"; + config-1 { description = "Boot Linux kernel"; - kernel = "kernel@1"; - setup = "setup@1"; + kernel = "kernel"; + setup = "setup"; }; }; }; diff --git a/doc/uImage.FIT/kernel_fdt.its b/doc/uImage.FIT/kernel_fdt.its index 7c521486ef..000d85b8e0 100644 --- a/doc/uImage.FIT/kernel_fdt.its +++ b/doc/uImage.FIT/kernel_fdt.its @@ -9,7 +9,7 @@ #address-cells = <1>;
images { - kernel@1 { + kernel { description = "Vanilla Linux kernel"; data = /incbin/("./vmlinux.bin.gz"); type = "kernel"; @@ -18,34 +18,34 @@ compression = "gzip"; load = <00000000>; entry = <00000000>; - hash@1 { + hash-1 { algo = "crc32"; }; - hash@2 { + hash-2 { algo = "sha1"; }; }; - fdt@1 { + fdt-1 { description = "Flattened Device Tree blob"; data = /incbin/("./target.dtb"); type = "flat_dt"; arch = "ppc"; compression = "none"; - hash@1 { + hash-1 { algo = "crc32"; }; - hash@2 { + hash-2 { algo = "sha1"; }; }; };
configurations { - default = "conf@1"; - conf@1 { + default = "conf-1"; + conf-1 { description = "Boot Linux kernel with FDT blob"; - kernel = "kernel@1"; - fdt = "fdt@1"; + kernel = "kernel"; + fdt = "fdt-1"; }; }; }; diff --git a/doc/uImage.FIT/multi-with-fpga.its b/doc/uImage.FIT/multi-with-fpga.its index 0cdb31fe91..47ee5760c4 100644 --- a/doc/uImage.FIT/multi-with-fpga.its +++ b/doc/uImage.FIT/multi-with-fpga.its @@ -10,31 +10,31 @@ #address-cells = <1>;
images { - fdt@1 { + fdt-1 { description = "zc706"; data = /incbin/("/tftpboot/devicetree.dtb"); type = "flat_dt"; arch = "arm"; compression = "none"; load = <0x10000000>; - hash@1 { + hash-1 { algo = "md5"; }; };
- fpga@1 { + fpga { description = "FPGA"; data = /incbin/("/tftpboot/download.bit"); type = "fpga"; arch = "arm"; compression = "none"; load = <0x30000000>; - hash@1 { + hash-1 { algo = "md5"; }; };
- linux_kernel@1 { + linux_kernel { description = "Linux"; data = /incbin/("/tftpboot/zImage"); type = "kernel"; @@ -43,25 +43,25 @@ compression = "none"; load = <0x8000>; entry = <0x8000>; - hash@1 { + hash-1 { algo = "md5"; }; }; };
configurations { - default = "config@2"; - config@1 { + default = "config-2"; + config-1 { description = "Linux"; - kernel = "linux_kernel@1"; - fdt = "fdt@1"; + kernel = "linux_kernel"; + fdt = "fdt-1"; };
- config@2 { + config-2 { description = "Linux with fpga"; - kernel = "linux_kernel@1"; - fdt = "fdt@1"; - fpga = "fpga@1"; + kernel = "linux_kernel"; + fdt = "fdt-1"; + fpga = "fpga"; }; }; }; diff --git a/doc/uImage.FIT/multi-with-loadables.its b/doc/uImage.FIT/multi-with-loadables.its index a8545d245c..4d4909f832 100644 --- a/doc/uImage.FIT/multi-with-loadables.its +++ b/doc/uImage.FIT/multi-with-loadables.its @@ -10,7 +10,7 @@ #address-cells = <1>;
images { - xen_kernel@1 { + xen_kernel { description = "xen binary"; data = /incbin/("./xen"); type = "kernel"; @@ -19,36 +19,36 @@ compression = "none"; load = <0xa0000000>; entry = <0xa0000000>; - hash@1 { + hash-1 { algo = "md5"; }; };
- fdt@1 { + fdt-1 { description = "xexpress-ca15 tree blob"; data = /incbin/("./vexpress-v2p-ca15-tc1.dtb"); type = "flat_dt"; arch = "arm"; compression = "none"; load = <0xb0000000>; - hash@1 { + hash-1 { algo = "md5"; }; };
- fdt@2 { + fdt-2 { description = "xexpress-ca15 tree blob"; data = /incbin/("./vexpress-v2p-ca15-tc1.dtb"); type = "flat_dt"; arch = "arm"; compression = "none"; load = <0xb0400000>; - hash@1 { + hash-1 { algo = "md5"; }; };
- linux_kernel@1 { + linux_kernel { description = "Linux Image"; data = /incbin/("./Image"); type = "kernel"; @@ -57,33 +57,33 @@ compression = "none"; load = <0xa0000000>; entry = <0xa0000000>; - hash@1 { + hash-1 { algo = "md5"; }; }; };
configurations { - default = "config@2"; + default = "config-2";
- config@1 { + config-1 { description = "Just plain Linux"; - kernel = "linux_kernel@1"; - fdt = "fdt@1"; + kernel = "linux_kernel"; + fdt = "fdt-1"; };
- config@2 { + config-2 { description = "Xen one loadable"; - kernel = "xen_kernel@1"; - fdt = "fdt@1"; - loadables = "linux_kernel@1"; + kernel = "xen_kernel"; + fdt = "fdt-1"; + loadables = "linux_kernel"; };
- config@3 { + config-3 { description = "Xen two loadables"; - kernel = "xen_kernel@1"; - fdt = "fdt@1"; - loadables = "linux_kernel@1", "fdt@2"; + kernel = "xen_kernel"; + fdt = "fdt-1"; + loadables = "linux_kernel", "fdt-2"; }; }; }; diff --git a/doc/uImage.FIT/multi.its b/doc/uImage.FIT/multi.its index 37369ecc82..26c8dad6a2 100644 --- a/doc/uImage.FIT/multi.its +++ b/doc/uImage.FIT/multi.its @@ -9,7 +9,7 @@ #address-cells = <1>;
images { - kernel@1 { + kernel-1 { description = "vanilla-2.6.23"; data = /incbin/("./vmlinux.bin.gz"); type = "kernel"; @@ -18,15 +18,15 @@ compression = "gzip"; load = <00000000>; entry = <00000000>; - hash@1 { + hash-1 { algo = "md5"; }; - hash@2 { + hash-2 { algo = "sha1"; }; };
- kernel@2 { + kernel-2 { description = "2.6.23-denx"; data = /incbin/("./2.6.23-denx.bin.gz"); type = "kernel"; @@ -35,12 +35,12 @@ compression = "gzip"; load = <00000000>; entry = <00000000>; - hash@1 { + hash-1 { algo = "sha1"; }; };
- kernel@3 { + kernel-3 { description = "2.4.25-denx"; data = /incbin/("./2.4.25-denx.bin.gz"); type = "kernel"; @@ -49,12 +49,12 @@ compression = "gzip"; load = <00000000>; entry = <00000000>; - hash@1 { + hash-1 { algo = "md5"; }; };
- ramdisk@1 { + ramdisk-1 { description = "eldk-4.2-ramdisk"; data = /incbin/("./eldk-4.2-ramdisk"); type = "ramdisk"; @@ -63,12 +63,12 @@ compression = "gzip"; load = <00000000>; entry = <00000000>; - hash@1 { + hash-1 { algo = "sha1"; }; };
- ramdisk@2 { + ramdisk-2 { description = "eldk-3.1-ramdisk"; data = /incbin/("./eldk-3.1-ramdisk"); type = "ramdisk"; @@ -77,30 +77,30 @@ compression = "gzip"; load = <00000000>; entry = <00000000>; - hash@1 { + hash-1 { algo = "crc32"; }; };
- fdt@1 { + fdt-1 { description = "tqm5200-fdt"; data = /incbin/("./tqm5200.dtb"); type = "flat_dt"; arch = "ppc"; compression = "none"; - hash@1 { + hash-1 { algo = "crc32"; }; };
- fdt@2 { + fdt-2 { description = "tqm5200s-fdt"; data = /incbin/("./tqm5200s.dtb"); type = "flat_dt"; arch = "ppc"; compression = "none"; load = <00700000>; - hash@1 { + hash-1 { algo = "sha1"; }; }; @@ -108,26 +108,26 @@ };
configurations { - default = "config@1"; + default = "config-1";
- config@1 { + config-1 { description = "tqm5200 vanilla-2.6.23 configuration"; - kernel = "kernel@1"; - ramdisk = "ramdisk@1"; - fdt = "fdt@1"; + kernel = "kernel-1"; + ramdisk = "ramdisk-1"; + fdt = "fdt-1"; };
- config@2 { + config-2 { description = "tqm5200s denx-2.6.23 configuration"; - kernel = "kernel@2"; - ramdisk = "ramdisk@1"; - fdt = "fdt@2"; + kernel = "kernel-2"; + ramdisk = "ramdisk-1"; + fdt = "fdt-2"; };
- config@3 { + config-3 { description = "tqm5200s denx-2.4.25 configuration"; - kernel = "kernel@3"; - ramdisk = "ramdisk@2"; + kernel = "kernel-3"; + ramdisk = "ramdisk-2"; }; }; }; diff --git a/doc/uImage.FIT/multi_spl.its b/doc/uImage.FIT/multi_spl.its index d43563d87a..5942199744 100644 --- a/doc/uImage.FIT/multi_spl.its +++ b/doc/uImage.FIT/multi_spl.its @@ -45,7 +45,7 @@ load = <0x40000>; };
- fdt@1 { + fdt-1 { description = "Pine64+ DT"; type = "flat_dt"; compression = "none"; @@ -53,7 +53,7 @@ arch = "arm64"; };
- fdt@2 { + fdt-2 { description = "Pine64 DT"; type = "flat_dt"; compression = "none"; @@ -79,18 +79,18 @@ };
configurations { - default = "config@1"; + default = "config-1";
- config@1 { + config-1 { description = "sun50i-a64-pine64-plus"; loadables = "uboot", "atf", "kernel", "initrd"; - fdt = "fdt@1"; + fdt = "fdt-1"; };
- config@2 { + config-2 { description = "sun50i-a64-pine64"; loadables = "uboot", "atf", "mgmt-firmware"; - fdt = "fdt@2"; + fdt = "fdt-2"; }; }; }; diff --git a/doc/uImage.FIT/sign-configs.its b/doc/uImage.FIT/sign-configs.its index 3c17f040de..9e992c1988 100644 --- a/doc/uImage.FIT/sign-configs.its +++ b/doc/uImage.FIT/sign-configs.its @@ -5,7 +5,7 @@ #address-cells = <1>;
images { - kernel@1 { + kernel { data = /incbin/("test-kernel.bin"); type = "kernel_noload"; arch = "sandbox"; @@ -14,28 +14,28 @@ load = <0x4>; entry = <0x8>; kernel-version = <1>; - hash@1 { + hash-1 { algo = "sha1"; }; }; - fdt@1 { + fdt-1 { description = "snow"; data = /incbin/("sandbox-kernel.dtb"); type = "flat_dt"; arch = "sandbox"; compression = "none"; fdt-version = <1>; - hash@1 { + hash-1 { algo = "sha1"; }; }; }; configurations { - default = "conf@1"; - conf@1 { - kernel = "kernel@1"; - fdt = "fdt@1"; - signature@1 { + default = "conf-1"; + conf-1 { + kernel = "kernel"; + fdt = "fdt-1"; + signature { algo = "sha1,rsa2048"; key-name-hint = "dev"; sign-images = "fdt", "kernel"; diff --git a/doc/uImage.FIT/sign-images.its b/doc/uImage.FIT/sign-images.its index f69326a39b..18c759e9e6 100644 --- a/doc/uImage.FIT/sign-images.its +++ b/doc/uImage.FIT/sign-images.its @@ -5,7 +5,7 @@ #address-cells = <1>;
images { - kernel@1 { + kernel { data = /incbin/("test-kernel.bin"); type = "kernel_noload"; arch = "sandbox"; @@ -14,29 +14,29 @@ load = <0x4>; entry = <0x8>; kernel-version = <1>; - signature@1 { + signature { algo = "sha1,rsa2048"; key-name-hint = "dev"; }; }; - fdt@1 { + fdt-1 { description = "snow"; data = /incbin/("sandbox-kernel.dtb"); type = "flat_dt"; arch = "sandbox"; compression = "none"; fdt-version = <1>; - signature@1 { + signature { algo = "sha1,rsa2048"; key-name-hint = "dev"; }; }; }; configurations { - default = "conf@1"; - conf@1 { - kernel = "kernel@1"; - fdt = "fdt@1"; + default = "conf-1"; + conf-1 { + kernel = "kernel"; + fdt = "fdt-1"; }; }; }; diff --git a/doc/uImage.FIT/update3.its b/doc/uImage.FIT/update3.its index a6eaef691e..0659f20002 100644 --- a/doc/uImage.FIT/update3.its +++ b/doc/uImage.FIT/update3.its @@ -9,34 +9,34 @@ #address-cells = <1>;
images { - update@1 { + update-1 { description = "Linux kernel binary"; data = /incbin/("./vmlinux.bin.gz"); compression = "none"; type = "firmware"; load = <FF700000>; - hash@1 { + hash-1 { algo = "sha1"; }; }; - update@2 { + update-2 { description = "Ramdisk image"; data = /incbin/("./ramdisk_image.gz"); compression = "none"; type = "firmware"; load = <FF8E0000>; - hash@1 { + hash-1 { algo = "sha1"; }; };
- update@3 { + update-3 { description = "FDT blob"; data = /incbin/("./blob.fdt"); compression = "none"; type = "firmware"; load = <FFAC0000>; - hash@1 { + hash-1 { algo = "sha1"; }; }; diff --git a/doc/uImage.FIT/update_uboot.its b/doc/uImage.FIT/update_uboot.its index 846723e2d6..c2ac2663e6 100644 --- a/doc/uImage.FIT/update_uboot.its +++ b/doc/uImage.FIT/update_uboot.its @@ -10,13 +10,13 @@ #address-cells = <1>;
images { - update@1 { + update-1 { description = "U-Boot binary"; data = /incbin/("./u-boot.bin"); compression = "none"; type = "firmware"; load = <FFFC0000>; - hash@1 { + hash-1 { algo = "sha1"; }; };

On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address of a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Fix all occurences in the FIT image example files where this was not observed, to not give bad examples to the reader.
Signed-off-by: Andre Przywara andre.przywara@arm.com
doc/uImage.FIT/kernel.its | 28 ++++++++--------- doc/uImage.FIT/kernel_fdt.its | 20 ++++++------ doc/uImage.FIT/multi-with-fpga.its | 28 ++++++++--------- doc/uImage.FIT/multi-with-loadables.its | 40 ++++++++++++------------ doc/uImage.FIT/multi.its | 54 ++++++++++++++++----------------- doc/uImage.FIT/multi_spl.its | 14 ++++----- doc/uImage.FIT/sign-configs.its | 18 +++++------ doc/uImage.FIT/sign-images.its | 16 +++++----- doc/uImage.FIT/update3.its | 12 ++++---- doc/uImage.FIT/update_uboot.its | 4 +-- 10 files changed, 117 insertions(+), 117 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org

On 18 December 2017 at 21:24, Simon Glass sjg@chromium.org wrote:
On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address of a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Fix all occurences in the FIT image example files where this was not observed, to not give bad examples to the reader.
Signed-off-by: Andre Przywara andre.przywara@arm.com
doc/uImage.FIT/kernel.its | 28 ++++++++--------- doc/uImage.FIT/kernel_fdt.its | 20 ++++++------ doc/uImage.FIT/multi-with-fpga.its | 28 ++++++++--------- doc/uImage.FIT/multi-with-loadables.its | 40 ++++++++++++------------ doc/uImage.FIT/multi.its | 54 ++++++++++++++++----------------- doc/uImage.FIT/multi_spl.its | 14 ++++----- doc/uImage.FIT/sign-configs.its | 18 +++++------ doc/uImage.FIT/sign-images.its | 16 +++++----- doc/uImage.FIT/update3.its | 12 ++++---- doc/uImage.FIT/update_uboot.its | 4 +-- 10 files changed, 117 insertions(+), 117 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot-dm, thanks!

The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Fix all occurences in various documentation files where this was not observed, to not give bad examples to the reader.
Signed-off-by: Andre Przywara andre.przywara@arm.com --- .../arm/cpu/armv8/fsl-layerscape/doc/README.falcon | 16 +++++----- doc/README.uniphier | 36 +++++++++++----------- doc/chromium/chromebook_jerry.its | 16 +++++----- doc/chromium/nyan-big.its | 16 +++++----- 4 files changed, 42 insertions(+), 42 deletions(-)
diff --git a/arch/arm/cpu/armv8/fsl-layerscape/doc/README.falcon b/arch/arm/cpu/armv8/fsl-layerscape/doc/README.falcon index 2505f408ab..a00b5bc9c3 100644 --- a/arch/arm/cpu/armv8/fsl-layerscape/doc/README.falcon +++ b/arch/arm/cpu/armv8/fsl-layerscape/doc/README.falcon @@ -86,7 +86,7 @@ Example: #address-cells = <1>;
images { - kernel@1 { + kernel { description = "ARM64 Linux kernel"; data = /incbin/("./arch/arm64/boot/Image.gz"); type = "kernel"; @@ -96,7 +96,7 @@ Example: load = <0x80080000>; entry = <0x80080000>; }; - fdt@1 { + fdt-1 { description = "Flattened Device Tree blob"; data = /incbin/("./fsl-ls1043ardb-static.dtb"); type = "flat_dt"; @@ -104,7 +104,7 @@ Example: compression = "none"; load = <0x90000000>; }; - ramdisk@1 { + ramdisk { description = "LS1043 Ramdisk"; data = /incbin/("./rootfs.cpio.gz"); type = "ramdisk"; @@ -116,12 +116,12 @@ Example: };
configurations { - default = "config@1"; - config@1 { + default = "config-1"; + config-1 { description = "Boot Linux kernel"; - kernel = "kernel@1"; - fdt = "fdt@1"; - ramdisk = "ramdisk@1"; + kernel = "kernel"; + fdt = "fdt-1"; + ramdisk = "ramdisk"; loadables = "fdt", "ramdisk"; }; }; diff --git a/doc/README.uniphier b/doc/README.uniphier index 0fa3248fae..990806ab79 100644 --- a/doc/README.uniphier +++ b/doc/README.uniphier @@ -142,7 +142,7 @@ The following is an example for a simple usecase: #address-cells = <1>;
images { - kernel@0 { + kernel { description = "linux"; data = /incbin/("PATH/TO/YOUR/LINUX/DIR/arch/arm64/boot/Image.gz"); type = "kernel"; @@ -151,44 +151,44 @@ The following is an example for a simple usecase: compression = "gzip"; load = <0x82080000>; entry = <0x82080000>; - hash@0 { + hash-1 { algo = "sha256"; }; };
- fdt@0 { + fdt-1 { description = "fdt"; data = /incbin/("PATH/TO/YOUR/LINUX/DIR/arch/arm64/boot/dts/socionext/uniphier-ld20-ref.dtb"); type = "flat_dt"; arch = "arm64"; compression = "none"; - hash@0 { + hash-1 { algo = "sha256"; }; };
- ramdisk@0 { + ramdisk { description = "ramdisk"; data = /incbin/("PATH/TO/YOUR/ROOTFS/DIR/rootfs.cpio"); type = "ramdisk"; arch = "arm64"; os = "linux"; compression = "none"; - hash@0 { + hash-1 { algo = "sha256"; }; }; };
configurations { - default = "config@0"; + default = "config-1";
- config@0 { + config-1 { description = "Configuration0"; - kernel = "kernel@0"; - fdt = "fdt@0"; - ramdisk = "ramdisk@0"; - signature@0 { + kernel = "kernel"; + fdt = "fdt-1"; + ramdisk = "ramdisk"; + signature-1 { algo = "sha256,rsa2048"; key-name-hint = "dev"; sign-images = "kernel", "fdt", "ramdisk"; @@ -268,9 +268,9 @@ If it is successful, you will see messages like follows:
---------------------------------------->8---------------------------------------- ## Loading kernel from FIT Image at 84100000 ... - Using 'config@0' configuration + Using 'config-1' configuration Verifying Hash Integrity ... sha256,rsa2048:dev+ OK - Trying 'kernel@0' kernel subimage + Trying 'kernel' kernel subimage Description: linux Created: 2017-10-20 14:32:29 UTC Type: Kernel Image @@ -285,8 +285,8 @@ If it is successful, you will see messages like follows: Hash value: 82a37b7f11ae55f4e07aa25bf77e4067cb9dc1014d52d6cd4d588f92eee3aaad Verifying Hash Integrity ... sha256+ OK ## Loading ramdisk from FIT Image at 84100000 ... - Using 'config@0' configuration - Trying 'ramdisk@0' ramdisk subimage + Using 'config-1' configuration + Trying 'ramdisk' ramdisk subimage Description: ramdisk Created: 2017-10-20 14:32:29 UTC Type: RAMDisk Image @@ -301,8 +301,8 @@ If it is successful, you will see messages like follows: Hash value: 44980a2874154a2e31ed59222c9f8ea968867637f35c81e4107a984de7014deb Verifying Hash Integrity ... sha256+ OK ## Loading fdt from FIT Image at 84100000 ... - Using 'config@0' configuration - Trying 'fdt@0' fdt subimage + Using 'config-1' configuration + Trying 'fdt-1' fdt subimage Description: fdt Created: 2017-10-20 14:32:29 UTC Type: Flat Device Tree diff --git a/doc/chromium/chromebook_jerry.its b/doc/chromium/chromebook_jerry.its index 8cff840e00..7505a20535 100644 --- a/doc/chromium/chromebook_jerry.its +++ b/doc/chromium/chromebook_jerry.its @@ -5,7 +5,7 @@ #address-cells = <1>;
images { - kernel@1 { + kernel { description = "U-Boot mainline"; type = "kernel_noload"; arch = "arm"; @@ -14,29 +14,29 @@ compression = "none"; load = <0>; entry = <0>; - hash@2 { + hash-2 { algo = "sha1"; }; };
- fdt@1{ + fdt-1{ description = "rk3288-veryron-jerry.dtb"; data = /incbin/("../../b/chromebook_jerry/u-boot.dtb"); type = "flat_dt"; arch = "arm"; compression = "none"; - hash@1{ + hash-1{ algo = "sha1"; }; }; };
configurations { - default = "config@1"; - config@1 { + default = "config-1"; + config-1 { description = "Boot U-Boot"; - kernel = "kernel@1"; - fdt = "fdt@1"; + kernel = "kernel"; + fdt = "fdt-1"; }; }; }; diff --git a/doc/chromium/nyan-big.its b/doc/chromium/nyan-big.its index 8dc8d73041..37d4e10949 100644 --- a/doc/chromium/nyan-big.its +++ b/doc/chromium/nyan-big.its @@ -5,7 +5,7 @@ #address-cells = <1>;
images { - kernel@1 { + kernel { description = "U-Boot mainline"; type = "kernel_noload"; arch = "arm"; @@ -14,29 +14,29 @@ compression = "none"; load = <0>; entry = <0>; - hash@2 { + hash-2 { algo = "sha1"; }; };
- fdt@1{ + fdt-1{ description = "tegra124-nyan-big.dtb"; data = /incbin/("../.././b/nyan-big/u-boot.dtb"); type = "flat_dt"; arch = "arm"; compression = "none"; - hash@1{ + hash-1{ algo = "sha1"; }; }; };
configurations { - default = "config@1"; - config@1 { + default = "config-1"; + config-1 { description = "Boot U-Boot"; - kernel = "kernel@1"; - fdt = "fdt@1"; + kernel = "kernel"; + fdt = "fdt-1"; }; }; };

On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Fix all occurences in various documentation files where this was not observed, to not give bad examples to the reader.
Signed-off-by: Andre Przywara andre.przywara@arm.com
.../arm/cpu/armv8/fsl-layerscape/doc/README.falcon | 16 +++++----- doc/README.uniphier | 36 +++++++++++----------- doc/chromium/chromebook_jerry.its | 16 +++++----- doc/chromium/nyan-big.its | 16 +++++----- 4 files changed, 42 insertions(+), 42 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org

On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Fix all occurences in various documentation files where this was not observed, to not give bad examples to the reader.
Signed-off-by: Andre Przywara andre.przywara@arm.com
.../arm/cpu/armv8/fsl-layerscape/doc/README.falcon | 16 +++++----- doc/README.uniphier | 36 +++++++++++----------- doc/chromium/chromebook_jerry.its | 16 +++++----- doc/chromium/nyan-big.its | 16 +++++----- 4 files changed, 42 insertions(+), 42 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot-dm thanks!

The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Fix all occurences in the tree where node names were mentioned in comments, to not give bad examples to the reader.
Signed-off-by: Andre Przywara andre.przywara@arm.com --- common/image-fit.c | 16 ++++++++-------- common/image-sig.c | 2 +- include/image.h | 26 +++++++++++++------------- tools/image-host.c | 10 +++++----- 4 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/common/image-fit.c b/common/image-fit.c index 7f17fd1410..990c6038d7 100644 --- a/common/image-fit.c +++ b/common/image-fit.c @@ -330,7 +330,7 @@ static void fit_image_print_verification_data(const void *fit, int noffset, /* * Check subnode name, must be equal to "hash" or "signature". * Multiple hash/signature nodes require unique unit node - * names, e.g. hash@1, hash@2, signature@1, signature@2, etc. + * names, e.g. hash-1, hash-2, signature-1, signature-2, etc. */ name = fit_get_name(fit, noffset, NULL); if (!strncmp(name, FIT_HASH_NODENAME, strlen(FIT_HASH_NODENAME))) { @@ -1086,7 +1086,7 @@ int fit_image_verify(const void *fit, int image_noffset) /* * Check subnode name, must be equal to "hash". * Multiple hash nodes require unique unit node - * names, e.g. hash@1, hash@2, etc. + * names, e.g. hash-1, hash-2, etc. */ if (!strncmp(name, FIT_HASH_NODENAME, strlen(FIT_HASH_NODENAME))) { @@ -1323,15 +1323,15 @@ int fit_check_format(const void *fit) * * / o image-tree * |-o images - * | |-o fdt@1 - * | |-o fdt@2 + * | |-o fdt-1 + * | |-o fdt-2 * | * |-o configurations - * |-o config@1 - * | |-fdt = fdt@1 + * |-o config-1 + * | |-fdt = fdt-1 * | - * |-o config@2 - * |-fdt = fdt@2 + * |-o config-2 + * |-fdt = fdt-2 * * / o U-Boot fdt * |-compatible = "foo,bar", "bim,bam" diff --git a/common/image-sig.c b/common/image-sig.c index bf824fef3c..d9f712fc1e 100644 --- a/common/image-sig.c +++ b/common/image-sig.c @@ -347,7 +347,7 @@ int fit_config_check_sig(const void *fit, int noffset, int required_keynode,
/* * Each node can generate one region for each sub-node. Allow for - * 7 sub-nodes (hash@1, signature@1, etc.) and some extra. + * 7 sub-nodes (hash-1, signature-1, etc.) and some extra. */ max_regions = 20 + count * 7; struct fdt_region fdt_regions[max_regions]; diff --git a/include/image.h b/include/image.h index e9c18ce403..e28415bd9a 100644 --- a/include/image.h +++ b/include/image.h @@ -577,7 +577,7 @@ int boot_get_ramdisk(int argc, char * const argv[], bootm_headers_t *images, * boot_get_loadable() will take the given FIT configuration, and look * for a field named "loadables". Loadables, is a list of elements in * the FIT given as strings. exe: - * loadables = "linux_kernel@1", "fdt@2"; + * loadables = "linux_kernel", "fdt-2"; * this function will attempt to parse each string, and load the * corresponding element from the FIT into memory. Once placed, * no aditional actions are taken. @@ -603,10 +603,10 @@ int boot_get_setup_fit(bootm_headers_t *images, uint8_t arch, * @param images Boot images structure * @param addr Address of FIT in memory * @param fit_unamep On entry this is the requested image name - * (e.g. "kernel@1") or NULL to use the default. On exit + * (e.g. "kernel") or NULL to use the default. On exit * points to the selected image name * @param fit_uname_configp On entry this is the requested configuration - * name (e.g. "conf@1") or NULL to use the default. On + * name (e.g. "conf-1") or NULL to use the default. On * exit points to the selected configuration name. * @param arch Expected architecture (IH_ARCH_...) * @param datap Returns address of loaded image @@ -631,10 +631,10 @@ int boot_get_fdt_fit(bootm_headers_t *images, ulong addr, * @param images Boot images structure * @param addr Address of FIT in memory * @param fit_unamep On entry this is the requested image name - * (e.g. "kernel@1") or NULL to use the default. On exit + * (e.g. "kernel") or NULL to use the default. On exit * points to the selected image name * @param fit_uname_configp On entry this is the requested configuration - * name (e.g. "conf@1") or NULL to use the default. On + * name (e.g. "conf-1") or NULL to use the default. On * exit points to the selected configuration name. * @param arch Expected architecture (IH_ARCH_...) * @param image_type Required image type (IH_TYPE_...). If this is @@ -657,25 +657,25 @@ int fit_image_load(bootm_headers_t *images, ulong addr, /** * fit_get_node_from_config() - Look up an image a FIT by type * - * This looks in the selected conf@ node (images->fit_uname_cfg) for a + * This looks in the selected conf- node (images->fit_uname_cfg) for a * particular image type (e.g. "kernel") and then finds the image that is * referred to. * * For example, for something like: * * images { - * kernel@1 { + * kernel { * ... * }; * }; * configurations { - * conf@1 { - * kernel = "kernel@1"; + * conf-1 { + * kernel = "kernel"; * }; * }; * * the function will return the node offset of the kernel@1 node, assuming - * that conf@1 is the chosen configuration. + * that conf-1 is the chosen configuration. * * @param images Boot images structure * @param prop_name Property name to look up (FIT_..._PROP) @@ -1018,10 +1018,10 @@ int fit_conf_get_node(const void *fit, const char *conf_uname); * @noffset: Offset of conf@xxx node to check * @prop_name: Property to read from the conf node * - * The conf@ nodes contain references to other nodes, using properties - * like 'kernel = "kernel@1"'. Given such a property name (e.g. "kernel"), + * The conf- nodes contain references to other nodes, using properties + * like 'kernel = "kernel"'. Given such a property name (e.g. "kernel"), * return the offset of the node referred to (e.g. offset of node - * "/images/kernel@1". + * "/images/kernel". */ int fit_conf_get_prop_node(const void *fit, int noffset, const char *prop_name); diff --git a/tools/image-host.c b/tools/image-host.c index 2c0030b5e2..8a7469e538 100644 --- a/tools/image-host.c +++ b/tools/image-host.c @@ -270,16 +270,16 @@ static int fit_image_process_sig(const char *keydir, void *keydest, * * Input component image node structure: * - * o image@1 (at image_noffset) + * o image-1 (at image_noffset) * | - data = [binary data] - * o hash@1 + * o hash-1 * |- algo = "sha1" * * Output component image node structure: * - * o image@1 (at image_noffset) + * o image-1 (at image_noffset) * | - data = [binary data] - * o hash@1 + * o hash-1 * |- algo = "sha1" * |- value = sha1(data) * @@ -321,7 +321,7 @@ int fit_image_add_verification_data(const char *keydir, void *keydest, /* * Check subnode name, must be equal to "hash" or "signature". * Multiple hash nodes require unique unit node - * names, e.g. hash@1, hash@2, signature@1, etc. + * names, e.g. hash-1, hash-2, signature-1, etc. */ node_name = fit_get_name(fit, noffset, NULL); if (!strncmp(node_name, FIT_HASH_NODENAME,

On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Fix all occurences in the tree where node names were mentioned in comments, to not give bad examples to the reader.
Signed-off-by: Andre Przywara andre.przywara@arm.com
common/image-fit.c | 16 ++++++++-------- common/image-sig.c | 2 +- include/image.h | 26 +++++++++++++------------- tools/image-host.c | 10 +++++----- 4 files changed, 27 insertions(+), 27 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org

On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Fix all occurences in the tree where node names were mentioned in comments, to not give bad examples to the reader.
Signed-off-by: Andre Przywara andre.przywara@arm.com
common/image-fit.c | 16 ++++++++-------- common/image-sig.c | 2 +- include/image.h | 26 +++++++++++++------------- tools/image-host.c | 10 +++++----- 4 files changed, 27 insertions(+), 27 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot-dm thanks!

The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Adjust the FIT build script for 64-bit Allwinner boards to remove the bogus addresses from the node names and avoid the warnings. This avoids a warning with recent versions of the dtc tool.
Signed-off-by: Andre Przywara andre.przywara@arm.com --- board/sunxi/mksunxi_fit_atf.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/board/sunxi/mksunxi_fit_atf.sh b/board/sunxi/mksunxi_fit_atf.sh index b1d6e0e16a..36abe9efed 100755 --- a/board/sunxi/mksunxi_fit_atf.sh +++ b/board/sunxi/mksunxi_fit_atf.sh @@ -21,7 +21,7 @@ cat << __HEADER_EOF #address-cells = <1>;
images { - uboot@1 { + uboot { description = "U-Boot (64-bit)"; data = /incbin/("u-boot-nodtb.bin"); type = "standalone"; @@ -29,7 +29,7 @@ cat << __HEADER_EOF compression = "none"; load = <0x4a000000>; }; - atf@1 { + atf { description = "ARM Trusted Firmware"; data = /incbin/("$BL31"); type = "firmware"; @@ -44,7 +44,7 @@ cnt=1 for dtname in $* do cat << __FDT_IMAGE_EOF - fdt@$cnt { + fdt_$cnt { description = "$(basename $dtname .dtb)"; data = /incbin/("$dtname"); type = "flat_dt"; @@ -57,7 +57,7 @@ done cat << __CONF_HEADER_EOF }; configurations { - default = "config@1"; + default = "config_1";
__CONF_HEADER_EOF
@@ -65,11 +65,11 @@ cnt=1 for dtname in $* do cat << __CONF_SECTION_EOF - config@$cnt { + config_$cnt { description = "$(basename $dtname .dtb)"; - firmware = "uboot@1"; - loadables = "atf@1"; - fdt = "fdt@$cnt"; + firmware = "uboot"; + loadables = "atf"; + fdt = "fdt_$cnt"; }; __CONF_SECTION_EOF cnt=$((cnt+1))

Hi Andre,
On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Adjust the FIT build script for 64-bit Allwinner boards to remove the bogus addresses from the node names and avoid the warnings. This avoids a warning with recent versions of the dtc tool.
Signed-off-by: Andre Przywara andre.przywara@arm.com
board/sunxi/mksunxi_fit_atf.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/board/sunxi/mksunxi_fit_atf.sh b/board/sunxi/mksunxi_fit_atf.sh index b1d6e0e16a..36abe9efed 100755 --- a/board/sunxi/mksunxi_fit_atf.sh +++ b/board/sunxi/mksunxi_fit_atf.sh @@ -21,7 +21,7 @@ cat << __HEADER_EOF #address-cells = <1>;
images {
uboot@1 {
uboot { description = "U-Boot (64-bit)"; data = /incbin/("u-boot-nodtb.bin"); type = "standalone";
@@ -29,7 +29,7 @@ cat << __HEADER_EOF compression = "none"; load = <0x4a000000>; };
atf@1 {
atf { description = "ARM Trusted Firmware"; data = /incbin/("$BL31"); type = "firmware";
@@ -44,7 +44,7 @@ cnt=1 for dtname in $* do cat << __FDT_IMAGE_EOF
fdt@$cnt {
fdt_$cnt { description = "$(basename $dtname .dtb)"; data = /incbin/("$dtname"); type = "flat_dt";
@@ -57,7 +57,7 @@ done cat << __CONF_HEADER_EOF }; configurations {
default = "config@1";
default = "config_1";
Have you changed from hyphen to underscore here?
__CONF_HEADER_EOF
@@ -65,11 +65,11 @@ cnt=1 for dtname in $* do cat << __CONF_SECTION_EOF
config@$cnt {
config_$cnt { description = "$(basename $dtname .dtb)";
firmware = "uboot@1";
loadables = "atf@1";
fdt = "fdt@$cnt";
firmware = "uboot";
loadables = "atf";
fdt = "fdt_$cnt"; };
__CONF_SECTION_EOF cnt=$((cnt+1)) -- 2.14.1
Regards, Simon

Hi Simon,
thanks for going through this!
On 19/12/17 04:24, Simon Glass wrote:
Hi Andre,
On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Adjust the FIT build script for 64-bit Allwinner boards to remove the bogus addresses from the node names and avoid the warnings. This avoids a warning with recent versions of the dtc tool.
Signed-off-by: Andre Przywara andre.przywara@arm.com
board/sunxi/mksunxi_fit_atf.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/board/sunxi/mksunxi_fit_atf.sh b/board/sunxi/mksunxi_fit_atf.sh index b1d6e0e16a..36abe9efed 100755 --- a/board/sunxi/mksunxi_fit_atf.sh +++ b/board/sunxi/mksunxi_fit_atf.sh @@ -21,7 +21,7 @@ cat << __HEADER_EOF #address-cells = <1>;
images {
uboot@1 {
uboot { description = "U-Boot (64-bit)"; data = /incbin/("u-boot-nodtb.bin"); type = "standalone";
@@ -29,7 +29,7 @@ cat << __HEADER_EOF compression = "none"; load = <0x4a000000>; };
atf@1 {
atf { description = "ARM Trusted Firmware"; data = /incbin/("$BL31"); type = "firmware";
@@ -44,7 +44,7 @@ cnt=1 for dtname in $* do cat << __FDT_IMAGE_EOF
fdt@$cnt {
fdt_$cnt { description = "$(basename $dtname .dtb)"; data = /incbin/("$dtname"); type = "flat_dt";
@@ -57,7 +57,7 @@ done cat << __CONF_HEADER_EOF }; configurations {
default = "config@1";
default = "config_1";
Have you changed from hyphen to underscore here?
Arrgh, indeed. I think that was the first version of the patch, before I changed to '-'. Sorry for that, will fix it.
Cheers, Andre.
__CONF_HEADER_EOF
@@ -65,11 +65,11 @@ cnt=1 for dtname in $* do cat << __CONF_SECTION_EOF
config@$cnt {
config_$cnt { description = "$(basename $dtname .dtb)";
firmware = "uboot@1";
loadables = "atf@1";
fdt = "fdt@$cnt";
firmware = "uboot";
loadables = "atf";
fdt = "fdt_$cnt"; };
__CONF_SECTION_EOF cnt=$((cnt+1)) -- 2.14.1
Regards, Simon

Hi Simon,
thanks for going through this!
On 19/12/17 04:24, Simon Glass wrote:
Hi Andre,
On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Adjust the FIT build script for 64-bit Allwinner boards to remove the bogus addresses from the node names and avoid the warnings. This avoids a warning with recent versions of the dtc tool.
Signed-off-by: Andre Przywara andre.przywara@arm.com
board/sunxi/mksunxi_fit_atf.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
Applied to u-boot-dm thanks!

Hi Simon,
thanks for going through this!
On 19/12/17 04:24, Simon Glass wrote:
Hi Andre,
On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Adjust the FIT build script for 64-bit Allwinner boards to remove the bogus addresses from the node names and avoid the warnings. This avoids a warning with recent versions of the dtc tool.
Signed-off-by: Andre Przywara andre.przywara@arm.com
board/sunxi/mksunxi_fit_atf.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
Applied to u-boot-dm thanks! Applied to u-boot-dm thanks!

The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Correct the generated unit names when U-Boot's mkimage creates a FIT image.
Signed-off-by: Andre Przywara andre.przywara@arm.com --- tools/fit_image.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/tools/fit_image.c b/tools/fit_image.c index 6dcc88bae0..1db44f47a1 100644 --- a/tools/fit_image.c +++ b/tools/fit_image.c @@ -185,7 +185,7 @@ static void get_basename(char *str, int size, const char *fname) * fit_write_images() - Write out a list of images to the FIT * * We always include the main image (params->datafile). If there are device - * tree files, we include an fdt@ node for each of those too. + * tree files, we include an fdt- node for each of those too. */ static int fit_write_images(struct image_tool_params *params, char *fdt) { @@ -199,7 +199,7 @@ static int fit_write_images(struct image_tool_params *params, char *fdt)
/* First the main image */ typename = genimg_get_type_short_name(params->fit_image_type); - snprintf(str, sizeof(str), "%s@1", typename); + snprintf(str, sizeof(str), "%s-1", typename); fdt_begin_node(fdt, str); fdt_property_string(fdt, "description", params->imagename); fdt_property_string(fdt, "type", typename); @@ -225,7 +225,7 @@ static int fit_write_images(struct image_tool_params *params, char *fdt) for (cont = params->content_head; cont; cont = cont->next) { if (cont->type != IH_TYPE_FLATDT) continue; - snprintf(str, sizeof(str), "%s@%d", FIT_FDT_PROP, ++upto); + snprintf(str, sizeof(str), "%s-%d", FIT_FDT_PROP, ++upto); fdt_begin_node(fdt, str);
get_basename(str, sizeof(str), cont->fname); @@ -243,7 +243,7 @@ static int fit_write_images(struct image_tool_params *params, char *fdt)
/* And a ramdisk file if available */ if (params->fit_ramdisk) { - fdt_begin_node(fdt, FIT_RAMDISK_PROP "@1"); + fdt_begin_node(fdt, FIT_RAMDISK_PROP "-1");
fdt_property_string(fdt, "type", FIT_RAMDISK_PROP); fdt_property_string(fdt, "os", genimg_get_os_short_name(params->os)); @@ -277,41 +277,41 @@ static void fit_write_configs(struct image_tool_params *params, char *fdt) int upto;
fdt_begin_node(fdt, "configurations"); - fdt_property_string(fdt, "default", "conf@1"); + fdt_property_string(fdt, "default", "conf-1");
upto = 0; for (cont = params->content_head; cont; cont = cont->next) { if (cont->type != IH_TYPE_FLATDT) continue; typename = genimg_get_type_short_name(cont->type); - snprintf(str, sizeof(str), "conf@%d", ++upto); + snprintf(str, sizeof(str), "conf-%d", ++upto); fdt_begin_node(fdt, str);
get_basename(str, sizeof(str), cont->fname); fdt_property_string(fdt, "description", str);
typename = genimg_get_type_short_name(params->fit_image_type); - snprintf(str, sizeof(str), "%s@1", typename); + snprintf(str, sizeof(str), "%s-1", typename); fdt_property_string(fdt, typename, str);
if (params->fit_ramdisk) fdt_property_string(fdt, FIT_RAMDISK_PROP, - FIT_RAMDISK_PROP "@1"); + FIT_RAMDISK_PROP "-1");
- snprintf(str, sizeof(str), FIT_FDT_PROP "@%d", upto); + snprintf(str, sizeof(str), FIT_FDT_PROP "-%d", upto); fdt_property_string(fdt, FIT_FDT_PROP, str); fdt_end_node(fdt); }
if (!upto) { - fdt_begin_node(fdt, "conf@1"); + fdt_begin_node(fdt, "conf-1"); typename = genimg_get_type_short_name(params->fit_image_type); - snprintf(str, sizeof(str), "%s@1", typename); + snprintf(str, sizeof(str), "%s-1", typename); fdt_property_string(fdt, typename, str);
if (params->fit_ramdisk) fdt_property_string(fdt, FIT_RAMDISK_PROP, - FIT_RAMDISK_PROP "@1"); + FIT_RAMDISK_PROP "-1");
fdt_end_node(fdt); }

On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Correct the generated unit names when U-Boot's mkimage creates a FIT image.
Signed-off-by: Andre Przywara andre.przywara@arm.com
tools/fit_image.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org

On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Correct the generated unit names when U-Boot's mkimage creates a FIT image.
Signed-off-by: Andre Przywara andre.przywara@arm.com
tools/fit_image.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot-dm thanks!

On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Correct the generated unit names when U-Boot's mkimage creates a FIT image.
Signed-off-by: Andre Przywara andre.przywara@arm.com
tools/fit_image.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
Applied to u-boot-dm thanks! Applied to u-boot-dm thanks!

The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Remove the unit address from the config node name when U-Boot deals with secure firmware FIT images.
Signed-off-by: Andre Przywara andre.przywara@arm.com --- arch/arm/cpu/armv8/sec_firmware.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/arm/cpu/armv8/sec_firmware.c b/arch/arm/cpu/armv8/sec_firmware.c index 927eae4f74..b56ea785c5 100644 --- a/arch/arm/cpu/armv8/sec_firmware.c +++ b/arch/arm/cpu/armv8/sec_firmware.c @@ -30,7 +30,7 @@ phys_addr_t sec_firmware_addr; #define SEC_FIRMWARE_FIT_IMAGE "firmware" #endif #ifndef SEC_FIRMEWARE_FIT_CNF_NAME -#define SEC_FIRMEWARE_FIT_CNF_NAME "config@1" +#define SEC_FIRMEWARE_FIT_CNF_NAME "config-1" #endif #ifndef SEC_FIRMWARE_TARGET_EL #define SEC_FIRMWARE_TARGET_EL 2

Hi Andre,
On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Remove the unit address from the config node name when U-Boot deals with secure firmware FIT images.
Signed-off-by: Andre Przywara andre.przywara@arm.com
arch/arm/cpu/armv8/sec_firmware.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org
After this series, what remains to be converted?
- Simon

Hi Andre,
On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Remove the unit address from the config node name when U-Boot deals with secure firmware FIT images.
Signed-off-by: Andre Przywara andre.przywara@arm.com
arch/arm/cpu/armv8/sec_firmware.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org
After this series, what remains to be converted?
- Simon
Applied to u-boot-dm thanks!

Hi Andre,
On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec demands a unit-address in a node name to match the "reg" property in that node. Newer dtc versions will throw warnings if this is not the case. Remove the unit address from the config node name when U-Boot deals with secure firmware FIT images.
Signed-off-by: Andre Przywara andre.przywara@arm.com
arch/arm/cpu/armv8/sec_firmware.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Simon Glass sjg@chromium.org
After this series, what remains to be converted?
- Simon
Applied to u-boot-dm thanks! Applied to u-boot-dm thanks!

Hi Andre,
On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec[1] demands a unit-address in a node name (name@address) to match the "reg" property inside that node: uart0: serial@1c28000 { reg = <0x01c28000 0x400>; .... If there is no reg property in a node, there must not be a unit address in the node name as well (so no '@' sign at all).
Newer version of the device tree compiler (dtc) will warn about violations of this rule: .... <stdout>: Warning (unit_address_vs_reg): Node /images/fdt@1 has a unit name, but no reg property ....
To avoid those warnings, but still keep enumerable node names, we replace the "@" sign with a dash ("-"), which does not have a specical meaning, but is a valid node name character. So the first fdt file (as referenced above in the warning message) would be called "fdt-1" instead.
This affects mostly documenation files and some examples of FIT image files, but also some code which actually generates FIT images:
- The first four patches fix documentation, example files and comments,
they should not affect actual generated code or files. In places where having multiple instances of a node is normal (fdt, hash, signature), I simply replaced the '@' sign with the dash. Where one would expect only one instance (kernel, initrd), I removed the bogus '@1' completely, so a "kernel" just goes by just this very name.
- Patch 5/7 fixes the usage in the Allwinner SPL FIT image files, this has
been on the list before.
- Patch 6/7 fixes the usage when the mkimage tool (auto-)generates FIT images.
- The final patch 7/7 fixes the usage for the ARMv8 secure firmware image
handling. I am a bit unsure about this one, as this seems to *look* for a specific node name, which sounds a bit dodgy to me. I think DT parsers should never rely on a certain node name, but either use references or look inside nodes to find a matching one. Also I am not sure who actually generates those FIT image files this code gets to read. Any input would be welcome here.
Please let me know if this makes some sense or not.
I thought I read somewhere that there is a dtc option to turn off these warnings?
Regards, Simon

Hi Simon,
2017-12-12 13:38 GMT+09:00 Simon Glass sjg@chromium.org:
Hi Andre,
On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec[1] demands a unit-address in a node name (name@address) to match the "reg" property inside that node: uart0: serial@1c28000 { reg = <0x01c28000 0x400>; .... If there is no reg property in a node, there must not be a unit address in the node name as well (so no '@' sign at all).
Newer version of the device tree compiler (dtc) will warn about violations of this rule: .... <stdout>: Warning (unit_address_vs_reg): Node /images/fdt@1 has a unit name, but no reg property ....
To avoid those warnings, but still keep enumerable node names, we replace the "@" sign with a dash ("-"), which does not have a specical meaning, but is a valid node name character. So the first fdt file (as referenced above in the warning message) would be called "fdt-1" instead.
This affects mostly documenation files and some examples of FIT image files, but also some code which actually generates FIT images:
- The first four patches fix documentation, example files and comments,
they should not affect actual generated code or files. In places where having multiple instances of a node is normal (fdt, hash, signature), I simply replaced the '@' sign with the dash. Where one would expect only one instance (kernel, initrd), I removed the bogus '@1' completely, so a "kernel" just goes by just this very name.
- Patch 5/7 fixes the usage in the Allwinner SPL FIT image files, this has
been on the list before.
- Patch 6/7 fixes the usage when the mkimage tool (auto-)generates FIT images.
- The final patch 7/7 fixes the usage for the ARMv8 secure firmware image
handling. I am a bit unsure about this one, as this seems to *look* for a specific node name, which sounds a bit dodgy to me. I think DT parsers should never rely on a certain node name, but either use references or look inside nodes to find a matching one. Also I am not sure who actually generates those FIT image files this code gets to read. Any input would be welcome here.
Please let me know if this makes some sense or not.
I thought I read somewhere that there is a dtc option to turn off these warnings?
I think -Wno-unit_address_vs_reg is the one, but I prefer to fix the root cause by replacing @ instead of hiding it.

Hi,
On 12/12/17 04:50, Masahiro Yamada wrote:
Hi Simon,
2017-12-12 13:38 GMT+09:00 Simon Glass sjg@chromium.org:
Hi Andre,
On 3 December 2017 at 19:05, Andre Przywara andre.przywara@arm.com wrote:
The DT spec[1] demands a unit-address in a node name (name@address) to match the "reg" property inside that node: uart0: serial@1c28000 { reg = <0x01c28000 0x400>; .... If there is no reg property in a node, there must not be a unit address in the node name as well (so no '@' sign at all).
Newer version of the device tree compiler (dtc) will warn about violations of this rule: .... <stdout>: Warning (unit_address_vs_reg): Node /images/fdt@1 has a unit name, but no reg property ....
To avoid those warnings, but still keep enumerable node names, we replace the "@" sign with a dash ("-"), which does not have a specical meaning, but is a valid node name character. So the first fdt file (as referenced above in the warning message) would be called "fdt-1" instead.
This affects mostly documenation files and some examples of FIT image files, but also some code which actually generates FIT images:
- The first four patches fix documentation, example files and comments,
they should not affect actual generated code or files. In places where having multiple instances of a node is normal (fdt, hash, signature), I simply replaced the '@' sign with the dash. Where one would expect only one instance (kernel, initrd), I removed the bogus '@1' completely, so a "kernel" just goes by just this very name.
- Patch 5/7 fixes the usage in the Allwinner SPL FIT image files, this has
been on the list before.
- Patch 6/7 fixes the usage when the mkimage tool (auto-)generates FIT images.
- The final patch 7/7 fixes the usage for the ARMv8 secure firmware image
handling. I am a bit unsure about this one, as this seems to *look* for a specific node name, which sounds a bit dodgy to me. I think DT parsers should never rely on a certain node name, but either use references or look inside nodes to find a matching one. Also I am not sure who actually generates those FIT image files this code gets to read. Any input would be welcome here.
Please let me know if this makes some sense or not.
I thought I read somewhere that there is a dtc option to turn off these warnings?
I think -Wno-unit_address_vs_reg is the one, but I prefer to fix the root cause by replacing @ instead of hiding it.
Yes, I pulled this series off purely because Masahiro asked for it before. I am just after patch 5/7 ;-) And I agree with him that we should fix it rather than paper over it - at least for the code parts. And if we do so, we should fix the documentation as well - so here we go. I know it's a pain to review (sorry for that!). I would appreciate if we could push 5/7 through - as without it I see warnings right now and I am sure that it works. 6/7 looks good as well, though I can't say if there are side effects. Normally one would expect that node names are purely descriptive, but 7/7 tells me otherwise.
Cheers, Andre.
participants (4)
-
Andre Przywara
-
Masahiro Yamada
-
Simon Glass
-
sjg@google.com