[U-Boot] [PATCH] image-fit: switch ENOLINK to ENOENT
Mario Six
mario.six at gdsys.cc
Thu Sep 15 16:08:33 CEST 2016
Hi Stefan,
I also see the same error on our Armada board. It stems from the fact that
boot_get_ramdisk in common/image.c treats a ENOLINK different from all other
errors (which the patch changed into a ENOENT). The following patch fixes the
problem on our board:
diff --git a/common/image.c b/common/image.c
index 7ad04ca..c8d9bc8 100644
--- a/common/image.c
+++ b/common/image.c
@@ -1078,7 +1078,7 @@ int boot_get_ramdisk(int argc, char * const
argv[], bootm_headers_t *images,
rd_addr = map_to_sysmem(images->fit_hdr_os);
rd_noffset = fit_get_node_from_config(images,
FIT_RAMDISK_PROP, rd_addr);
- if (rd_noffset == -ENOLINK)
+ if (rd_noffset == -ENOENT)
return 0;
else if (rd_noffset < 0)
return 1;
So, yes, 2016.09 breaks Armada, apparently.
Best regards,
Mario
On Thu, Sep 15, 2016 at 2:49 PM, Stefan Roese <sr at denx.de> wrote:
> Hi Tom,
> Hi Jonathan,
>
> On 03.09.2016 00:30, Jonathan Gray wrote:
>> ENOLINK is not required by POSIX and does not exist on OpenBSD
>> and likely other systems.
>>
>> Signed-off-by: Jonathan Gray <jsg at jsg.id.au>
>> ---
>> common/image-fit.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/common/image-fit.c b/common/image-fit.c
>> index d8d4e95..79c0375 100644
>> --- a/common/image-fit.c
>> +++ b/common/image-fit.c
>> @@ -1566,7 +1566,7 @@ int fit_get_node_from_config(bootm_headers_t *images, const char *prop_name,
>> noffset = fit_conf_get_prop_node(fit_hdr, cfg_noffset, prop_name);
>> if (noffset < 0) {
>> debug("* %s: no '%s' in config\n", prop_name, prop_name);
>> - return -ENOLINK;
>> + return -ENOENT;
>> }
>>
>> return noffset;
>>
>
> This patch breaks Linux booting via FIT-image on Marvell Armada
> XP for me. Here a short log with this patch applied:
>
> ## Loading kernel from FIT Image at 02000000 ...
> Using 'conf at 1' configuration
> Trying 'kernel at 1' kernel subimage
> Description: Linux kernel
> Type: Kernel Image
> Compression: uncompressed
> Data Start: 0x020000f4
> Data Size: 5065728 Bytes = 4.8 MiB
> Architecture: ARM
> OS: Linux
> Load Address: 0x00008000
> Entry Point: 0x00008000
> Hash algo: sha1
> Hash value: 11ddefa0b68cbc5db9d84b0fd74ec67da155fada
> Verifying Hash Integrity ... sha1+ OK
> Ramdisk image is corrupt or invalid
>
>
> And this is how is should look like:
>
> ## Loading kernel from FIT Image at 02000000 ...
> Using 'conf at 1' configuration
> Trying 'kernel at 1' kernel subimage
> Description: Linux kernel
> Type: Kernel Image
> Compression: uncompressed
> Data Start: 0x020000f4
> Data Size: 5065728 Bytes = 4.8 MiB
> Architecture: ARM
> OS: Linux
> Load Address: 0x00008000
> Entry Point: 0x00008000
> Hash algo: sha1
> Hash value: 11ddefa0b68cbc5db9d84b0fd74ec67da155fada
> Verifying Hash Integrity ... sha1+ OK
> ## Loading fdt from FIT Image at 02000000 ...
> Using 'conf at 1' configuration
> Trying 'fdt at 1' fdt subimage
> Description: Flattened Device Tree blob
> Type: Flat Device Tree
> Compression: uncompressed
> Data Start: 0x024d4de8
> Data Size: 16971 Bytes = 16.6 KiB
> Architecture: ARM
> Hash algo: sha1
> Hash value: 672f2964b334406749265f4508e2231fb54ccbf4
> Verifying Hash Integrity ... sha1+ OK
> Booting using the fdt blob at 0x24d4de8
> Loading Kernel Image ... OK
> Loading Device Tree to 0fff8000, end 0ffff24a ... OK
>
> Starting kernel ...
>
>
> Unfortunately v2016.09 is useless with this patch - at least for me.
> I really think that we should revert it and release v2016.09.01.
>
> What do you think?
>
> Thanks,
> Stefan
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
More information about the U-Boot
mailing list