* [U-Boot-Users] [PATCH] FIT: Fix handling of images without ramdisks
@ 2008-08-05 15:51 Peter Tyser
2008-08-06 20:26 ` Michal Simek
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Peter Tyser @ 2008-08-05 15:51 UTC (permalink / raw)
To: u-boot
boot_get_ramdisk() should not treat the case when a FIT image does not contain a ramdisk as an error.
Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
---
The original code would not allow booting of a FIT image which didn't contain a ramdisk. The bug was observed and fixed on a powerpc 85xx system.
common/image.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/common/image.c b/common/image.c
index 535c302..c3545a7 100644
--- a/common/image.c
+++ b/common/image.c
@@ -833,7 +833,7 @@ int boot_get_ramdisk (int argc, char *argv[], bootm_headers_t *images,
rd_noffset = fit_conf_get_ramdisk_node (fit_hdr, cfg_noffset);
if (rd_noffset < 0) {
debug ("* ramdisk: no ramdisk in config\n");
- return 1;
+ return 0;
}
}
#endif
--
1.5.4.3
^ permalink raw reply related [flat|nested] 6+ messages in thread* [U-Boot-Users] [PATCH] FIT: Fix handling of images without ramdisks 2008-08-05 15:51 [U-Boot-Users] [PATCH] FIT: Fix handling of images without ramdisks Peter Tyser @ 2008-08-06 20:26 ` Michal Simek 2008-08-06 21:11 ` Peter Tyser 2008-08-07 7:37 ` Michal Simek 2008-08-09 17:43 ` Wolfgang Denk 2 siblings, 1 reply; 6+ messages in thread From: Michal Simek @ 2008-08-06 20:26 UTC (permalink / raw) To: u-boot Hi Peter, I tested current head on my boards and I have no problem with it. Can you post your config part where you have problem? And I look at 85xx repo and I haven't found this fix there. The last patch on master branch in mine. Regards, Michal Simek > boot_get_ramdisk() should not treat the case when a FIT image does not contain a ramdisk as an error. > > Signed-off-by: Peter Tyser <ptyser@xes-inc.com> > --- > The original code would not allow booting of a FIT image which didn't contain a ramdisk. The bug was observed and fixed on a powerpc 85xx system. > > common/image.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/common/image.c b/common/image.c > index 535c302..c3545a7 100644 > --- a/common/image.c > +++ b/common/image.c > @@ -833,7 +833,7 @@ int boot_get_ramdisk (int argc, char *argv[], bootm_headers_t *images, > rd_noffset = fit_conf_get_ramdisk_node (fit_hdr, cfg_noffset); > if (rd_noffset < 0) { > debug ("* ramdisk: no ramdisk in config\n"); > - return 1; > + return 0; > } > } > #endif ^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot-Users] [PATCH] FIT: Fix handling of images without ramdisks 2008-08-06 20:26 ` Michal Simek @ 2008-08-06 21:11 ` Peter Tyser 2008-08-07 6:48 ` Michal Simek 0 siblings, 1 reply; 6+ messages in thread From: Peter Tyser @ 2008-08-06 21:11 UTC (permalink / raw) To: u-boot On Wed, 2008-08-06 at 22:26 +0200, Michal Simek wrote: > I tested current head on my boards and I have no problem with it. > Can you post your config part where you have problem? > And I look at 85xx repo and I haven't found this fix there. The last patch on > master branch in mine. > Hi Michal, I've included my kernel_fdt.its below as well as 2 boot attempts with some debug enabled - the 1st on without the patch, the 2nd with the patch. I'm using the mainline master (based on 1953d128fd07f07d1c3810a28c0863ea64dae1b6), not the 85xx repo, but I believe the problem exists in both repos. Conceptually, I believe the patch makes sense. I'm calling bootm with no arguments (as seen in the FIT howto.txt), so boot_get_ramdisk() is unconditionally called by do_bootm_linux(). With no command arguments and a FIT image this section of code in boot_get_ramdisk() gets called: rd_noffset = fit_conf_get_ramdisk_node (fit_hdr, cfg_noffset); if (rd_noffset < 0) { debug ("* ramdisk: no ramdisk in config\n"); return 1; } which returns 1 causing the calling code from do_bootm_linux() to error out: /* find ramdisk */ ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_PPC, &rd_data_start, &rd_data_end); if (ret) goto error; Did you by chance try testing a PPC board? I noticed the boot_get_ramdisk() call is not used for microblaze. Thanks! Peter >> >> Contents of kernel_fdt.its >> / { description = "Basic image with single Linux kernel and FDT blob"; #address-cells = <1>; images { kernel at 1 { description = "X-ES MPC8572 Kernel v2.6.23"; data = /incbin/("./vmlinux.bin.gz"); type = "kernel"; arch = "ppc"; os = "linux"; compression = "gzip"; load = <00000000>; entry = <00000000>; hash at 1 { algo = "crc32"; }; }; fdt at 1 { description = "Flattened Device Tree blob"; data = /incbin/("./xpedite5370.dtb"); type = "flat_dt"; arch = "ppc"; load = <00c00000>; compression = "none"; hash at 1 { algo = "crc32"; }; }; }; configurations { default = "conf at 1"; conf at 1 { description = "Boot Linux kernel with FDT blob"; kernel = "kernel at 1"; fdt = "fdt at 1"; }; }; }; >> >> Without the patch applied >> => imi ## Checking Image at 01000000 ... FIT image found FIT description: Basic image with single Linux kernel and FDT blob Created: 2008-08-06 20:47:47 UTC Image 0 (kernel at 1) Description: X-ES MPC8572 Kernel v2.6.23 Type: Kernel Image Compression: gzip compressed Data Start: 0x010000f0 Data Size: 3947406 Bytes = 3.8 MB Architecture: PowerPC OS: Linux Load Address: 0x00000000 Entry Point: 0x00000000 Hash node: 'hash at 1' Hash algo: crc32 Hash value: 10a29645 Hash len: 4 Image 1 (fdt at 1) Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x013c3d64 Data Size: 9628 Bytes = 9.4 kB Architecture: PowerPC Hash node: 'hash at 1' Hash algo: crc32 Hash value: b351fc1d Hash len: 4 Default Configuration: 'conf at 1' Configuration 0 (conf at 1) Description: Boot Linux kernel with FDT blob Kernel: kernel at 1 FDT: fdt at 1 => bootm * kernel: default image load address = 0x01000000 ## Booting kernel from FIT Image at 01000000 ... No configuration specified, trying default... Found default configuration: 'conf at 1' Using 'conf at 1' configuration Trying 'kernel at 1' kernel subimage Description: X-ES MPC8572 Kernel v2.6.23 Type: Kernel Image Compression: gzip compressed Data Start: 0x010000f0 Data Size: 3947406 Bytes = 3.8 MB Architecture: PowerPC OS: Linux Load Address: 0x00000000 Entry Point: 0x00000000 Hash node: 'hash at 1' Hash algo: crc32 Hash value: 10a29645 Hash len: 4 Verifying Hash Integrity ... crc32+ OK kernel data at 0x010000f0, len = 0x003c3b8e (3947406) Uncompressing Kernel Image ... OK kernel loaded at 0x00000000, end = 0x0060d55c WARNING: bootm_low + bootm_size exceed eff. memory WARNING: adjusting available memory to 10000000 ## Current stack ends at 0x0fe97bf8 * fdt: using config 'conf at 1' from image at 0x01000000 ## Checking for 'FDT'/'FDT Image' at 01000000 ## Flattened Device Tree from FIT Image at 01000000 Using 'conf at 1' configuration Trying 'fdt at 1' FDT blob subimage Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x013c3d64 Data Size: 9628 Bytes = 9.4 kB Architecture: PowerPC Hash node: 'hash at 1' Hash algo: crc32 Hash value: b351fc1d Hash len: 4 Verifying Hash Integrity ... crc32+ OK Loading FDT from 0x013c3d64 to 0x00c00000 Booting using the fdt blob at 0xc00000 of_flat_tree at 0x00c00000 size 0x0000259c * ramdisk: using config 'conf at 1' from image at 0x01000000 * ramdisk: no ramdisk in config <<<< board resets here >>>> U-Boot 1.3.4-xes_r1-dirty (Aug 6 2008 - 15:42:12) >> >> After applying the patch >> => bootm * kernel: default image load address = 0x01000000 ## Booting kernel from FIT Image at 01000000 ... No configuration specified, trying default... Found default configuration: 'conf at 1' Using 'conf at 1' configuration Trying 'kernel at 1' kernel subimage Description: X-ES MPC8572 Kernel v2.6.23 Type: Kernel Image Compression: gzip compressed Data Start: 0x010000f0 Data Size: 3947406 Bytes = 3.8 MB Architecture: PowerPC OS: Linux Load Address: 0x00000000 Entry Point: 0x00000000 Hash node: 'hash at 1' Hash algo: crc32 Hash value: 10a29645 Hash len: 4 Verifying Hash Integrity ... crc32+ OK kernel data at 0x010000f0, len = 0x003c3b8e (3947406) Uncompressing Kernel Image ... OK kernel loaded at 0x00000000, end = 0x0060d55c WARNING: bootm_low + bootm_size exceed eff. memory WARNING: adjusting available memory to 10000000 ## Current stack ends at 0x0fe97bf8 * fdt: using config 'conf at 1' from image at 0x01000000 ## Checking for 'FDT'/'FDT Image' at 01000000 ## Flattened Device Tree from FIT Image at 01000000 Using 'conf at 1' configuration Trying 'fdt at 1' FDT blob subimage Description: Flattened Device Tree blob Type: Flat Device Tree Compression: uncompressed Data Start: 0x013c3d64 Data Size: 9628 Bytes = 9.4 kB Architecture: PowerPC Hash node: 'hash at 1' Hash algo: crc32 Hash value: b351fc1d Hash len: 4 Verifying Hash Integrity ... crc32+ OK Loading FDT from 0x013c3d64 to 0x00c00000 Booting using the fdt blob at 0xc00000 of_flat_tree at 0x00c00000 size 0x0000259c * ramdisk: using config 'conf at 1' from image at 0x01000000 * ramdisk: no ramdisk in config calling ft_cpu_setup() ## initrd_high = 0xffffffff, copy_to_ram = 1 ramdisk load start = 0x00000000, ramdisk load end = 0x00000000 ## Transferring control to Linux (at address 00000000) ... Booting using OF flat tree... Using X-ES MPC85xx machine description <<<< Linux boots normally >>>> ^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot-Users] [PATCH] FIT: Fix handling of images without ramdisks 2008-08-06 21:11 ` Peter Tyser @ 2008-08-07 6:48 ` Michal Simek 0 siblings, 0 replies; 6+ messages in thread From: Michal Simek @ 2008-08-07 6:48 UTC (permalink / raw) To: u-boot Hi Peter, > I've included my kernel_fdt.its below as well as 2 boot attempts with > some debug enabled - the 1st on without the patch, the 2nd with the > patch. I'm using the mainline master (based on > 1953d128fd07f07d1c3810a28c0863ea64dae1b6), not the 85xx repo, but I > believe the problem exists in both repos. OK. I will test it today and send you my result. > Conceptually, I believe the patch makes sense. I'm calling bootm with > no arguments (as seen in the FIT howto.txt), so boot_get_ramdisk() is > unconditionally called by do_bootm_linux(). With no command arguments > and a FIT image this section of code in boot_get_ramdisk() gets called: > > rd_noffset = fit_conf_get_ramdisk_node (fit_hdr, cfg_noffset); > if (rd_noffset < 0) { > debug ("* ramdisk: no ramdisk in config\n"); > return 1; > } > > which returns 1 causing the calling code from do_bootm_linux() to error > out: > > /* find ramdisk */ > ret = boot_get_ramdisk (argc, argv, images, IH_ARCH_PPC, > &rd_data_start, &rd_data_end); > if (ret) > goto error; I'll look at it in detail. Please wait some hours. > Did you by chance try testing a PPC board? I noticed the > boot_get_ramdisk() call is not used for microblaze. Sorry but I don't have any ppc board. Yes, it is but this code is not in master or microblaze branch but I sent first patch to mailing list some week ago. Regards, Michal > Thanks! > Peter > > >>> Contents of kernel_fdt.its >>> > > / { > description = "Basic image with single Linux kernel and FDT blob"; > #address-cells = <1>; > > images { > kernel at 1 { > description = "X-ES MPC8572 Kernel v2.6.23"; > data = /incbin/("./vmlinux.bin.gz"); > type = "kernel"; > arch = "ppc"; > os = "linux"; > compression = "gzip"; > load = <00000000>; > entry = <00000000>; > hash at 1 { > algo = "crc32"; > }; > }; > fdt at 1 { > description = "Flattened Device Tree blob"; > data = /incbin/("./xpedite5370.dtb"); > type = "flat_dt"; > arch = "ppc"; > load = <00c00000>; > compression = "none"; > hash at 1 { > algo = "crc32"; > }; > }; > }; > > configurations { > default = "conf at 1"; > conf at 1 { > description = "Boot Linux kernel with FDT blob"; > kernel = "kernel at 1"; > fdt = "fdt at 1"; > }; > }; > }; > >>> Without the patch applied >>> > > => imi > > ## Checking Image at 01000000 ... > FIT image found > FIT description: Basic image with single Linux kernel and FDT blob > Created: 2008-08-06 20:47:47 UTC > Image 0 (kernel at 1) > Description: X-ES MPC8572 Kernel v2.6.23 > Type: Kernel Image > Compression: gzip compressed > Data Start: 0x010000f0 > Data Size: 3947406 Bytes = 3.8 MB > Architecture: PowerPC > OS: Linux > Load Address: 0x00000000 > Entry Point: 0x00000000 > Hash node: 'hash at 1' > Hash algo: crc32 > Hash value: 10a29645 > Hash len: 4 > Image 1 (fdt at 1) > Description: Flattened Device Tree blob > Type: Flat Device Tree > Compression: uncompressed > Data Start: 0x013c3d64 > Data Size: 9628 Bytes = 9.4 kB > Architecture: PowerPC > Hash node: 'hash at 1' > Hash algo: crc32 > Hash value: b351fc1d > Hash len: 4 > Default Configuration: 'conf at 1' > Configuration 0 (conf at 1) > Description: Boot Linux kernel with FDT blob > Kernel: kernel at 1 > FDT: fdt at 1 > => bootm > * kernel: default image load address = 0x01000000 > ## Booting kernel from FIT Image at 01000000 ... > No configuration specified, trying default... > Found default configuration: 'conf at 1' > Using 'conf at 1' configuration > Trying 'kernel at 1' kernel subimage > Description: X-ES MPC8572 Kernel v2.6.23 > Type: Kernel Image > Compression: gzip compressed > Data Start: 0x010000f0 > Data Size: 3947406 Bytes = 3.8 MB > Architecture: PowerPC > OS: Linux > Load Address: 0x00000000 > Entry Point: 0x00000000 > Hash node: 'hash at 1' > Hash algo: crc32 > Hash value: 10a29645 > Hash len: 4 > Verifying Hash Integrity ... crc32+ OK > kernel data at 0x010000f0, len = 0x003c3b8e (3947406) > Uncompressing Kernel Image ... OK > kernel loaded at 0x00000000, end = 0x0060d55c > WARNING: bootm_low + bootm_size exceed eff. memory > WARNING: adjusting available memory to 10000000 > ## Current stack ends at 0x0fe97bf8 > * fdt: using config 'conf at 1' from image at 0x01000000 > ## Checking for 'FDT'/'FDT Image' at 01000000 > ## Flattened Device Tree from FIT Image at 01000000 > Using 'conf at 1' configuration > Trying 'fdt at 1' FDT blob subimage > Description: Flattened Device Tree blob > Type: Flat Device Tree > Compression: uncompressed > Data Start: 0x013c3d64 > Data Size: 9628 Bytes = 9.4 kB > Architecture: PowerPC > Hash node: 'hash at 1' > Hash algo: crc32 > Hash value: b351fc1d > Hash len: 4 > Verifying Hash Integrity ... crc32+ OK > Loading FDT from 0x013c3d64 to 0x00c00000 > Booting using the fdt blob at 0xc00000 > of_flat_tree at 0x00c00000 size 0x0000259c > * ramdisk: using config 'conf at 1' from image at 0x01000000 > * ramdisk: no ramdisk in config > > <<<< board resets here >>>> > > U-Boot 1.3.4-xes_r1-dirty (Aug 6 2008 - 15:42:12) > > > >>> After applying the patch >>> > > => bootm > * kernel: default image load address = 0x01000000 > ## Booting kernel from FIT Image at 01000000 ... > No configuration specified, trying default... > Found default configuration: 'conf at 1' > Using 'conf at 1' configuration > Trying 'kernel at 1' kernel subimage > Description: X-ES MPC8572 Kernel v2.6.23 > Type: Kernel Image > Compression: gzip compressed > Data Start: 0x010000f0 > Data Size: 3947406 Bytes = 3.8 MB > Architecture: PowerPC > OS: Linux > Load Address: 0x00000000 > Entry Point: 0x00000000 > Hash node: 'hash at 1' > Hash algo: crc32 > Hash value: 10a29645 > Hash len: 4 > Verifying Hash Integrity ... crc32+ OK > kernel data at 0x010000f0, len = 0x003c3b8e (3947406) > Uncompressing Kernel Image ... OK > kernel loaded at 0x00000000, end = 0x0060d55c > WARNING: bootm_low + bootm_size exceed eff. memory > WARNING: adjusting available memory to 10000000 > ## Current stack ends at 0x0fe97bf8 > * fdt: using config 'conf at 1' from image at 0x01000000 > ## Checking for 'FDT'/'FDT Image' at 01000000 > ## Flattened Device Tree from FIT Image at 01000000 > Using 'conf at 1' configuration > Trying 'fdt at 1' FDT blob subimage > Description: Flattened Device Tree blob > Type: Flat Device Tree > Compression: uncompressed > Data Start: 0x013c3d64 > Data Size: 9628 Bytes = 9.4 kB > Architecture: PowerPC > Hash node: 'hash at 1' > Hash algo: crc32 > Hash value: b351fc1d > Hash len: 4 > Verifying Hash Integrity ... crc32+ OK > Loading FDT from 0x013c3d64 to 0x00c00000 > Booting using the fdt blob at 0xc00000 > of_flat_tree at 0x00c00000 size 0x0000259c > * ramdisk: using config 'conf at 1' from image at 0x01000000 > * ramdisk: no ramdisk in config > calling ft_cpu_setup() > ## initrd_high = 0xffffffff, copy_to_ram = 1 > ramdisk load start = 0x00000000, ramdisk load end = 0x00000000 > ## Transferring control to Linux (at address 00000000) ... > Booting using OF flat tree... > Using X-ES MPC85xx machine description > > <<<< Linux boots normally >>>> > > > > No virus found in this incoming message. > Checked by AVG - http://www.avg.com > Version: 8.0.138 / Virus Database: 270.5.12/1589 - Release Date: 3.8.2008 01:00 > > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot-Users] [PATCH] FIT: Fix handling of images without ramdisks 2008-08-05 15:51 [U-Boot-Users] [PATCH] FIT: Fix handling of images without ramdisks Peter Tyser 2008-08-06 20:26 ` Michal Simek @ 2008-08-07 7:37 ` Michal Simek 2008-08-09 17:43 ` Wolfgang Denk 2 siblings, 0 replies; 6+ messages in thread From: Michal Simek @ 2008-08-07 7:37 UTC (permalink / raw) To: u-boot Yes, you are right. I tested it and works. Ack-by: Michal Simek <monstr@monstr.eu> WD: This is bug fix - can you please handle this bug directly to your tree. Thanks, Michal > boot_get_ramdisk() should not treat the case when a FIT image does not contain a > ramdisk as an error. > > Signed-off-by: Peter Tyser <ptyser@xes-inc.com> > --- > The original code would not allow booting of a FIT image which didn't contain a > ramdisk. The bug was observed and fixed on a powerpc 85xx system. > > common/image.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/common/image.c b/common/image.c > index 535c302..c3545a7 100644 > --- a/common/image.c > +++ b/common/image.c > @@ -833,7 +833,7 @@ int boot_get_ramdisk (int argc, char *argv[], > bootm_headers_t *images, > rd_noffset = fit_conf_get_ramdisk_node (fit_hdr, cfg_noffset); > if (rd_noffset < 0) { > debug ("* ramdisk: no ramdisk in config\n"); > - return 1; > + return 0; > } > } > #endif > -- > 1.5.4.3 > > ^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot-Users] [PATCH] FIT: Fix handling of images without ramdisks 2008-08-05 15:51 [U-Boot-Users] [PATCH] FIT: Fix handling of images without ramdisks Peter Tyser 2008-08-06 20:26 ` Michal Simek 2008-08-07 7:37 ` Michal Simek @ 2008-08-09 17:43 ` Wolfgang Denk 2 siblings, 0 replies; 6+ messages in thread From: Wolfgang Denk @ 2008-08-09 17:43 UTC (permalink / raw) To: u-boot Dear Peter Tyser, In message <1217951517-823-1-git-send-email-ptyser@xes-inc.com> you wrote: > boot_get_ramdisk() should not treat the case when a FIT image does not contain a ramdisk as an error. > > Signed-off-by: Peter Tyser <ptyser@xes-inc.com> > --- > The original code would not allow booting of a FIT image which didn't contain a ramdisk. The bug was observed and fixed on a powerpc 85xx system. Applied, thanks. But prelase remeber the maximum line length of some 70+ characters. Thanks. Best regards, Wolfgang Denk -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de The greatest threat towards future is indifference. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-08-09 17:43 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-08-05 15:51 [U-Boot-Users] [PATCH] FIT: Fix handling of images without ramdisks Peter Tyser 2008-08-06 20:26 ` Michal Simek 2008-08-06 21:11 ` Peter Tyser 2008-08-07 6:48 ` Michal Simek 2008-08-07 7:37 ` Michal Simek 2008-08-09 17:43 ` Wolfgang Denk
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.