* [U-Boot] [POWERPC][BUG] ramdisk: u-boot no longer boots a ramdisk with Linux 2.6.27-rc4 @ 2008-09-05 8:27 Heiko Schocher 2008-09-05 13:56 ` Kumar Gala 0 siblings, 1 reply; 6+ messages in thread From: Heiko Schocher @ 2008-09-05 8:27 UTC (permalink / raw) To: u-boot Hello Kumar, I actually trying to boot a Linux 2.6.27-rc4 Kernel with a Ramdisk and actual u-boot on a MPC82xx based board. And what should I say, it doesnt work anymore :-( Reason is the following commit: http://git.denx.de/?p=u-boot.git;a=commitdiff;h=2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b#patch3 After this commit, u-boot no longer deletes the mem reservation for the initrd in Flash, what stops Linux from booting. So I did the following, but maybe there is a better way for it? diff --git a/common/fdt_support.c b/common/fdt_support.c index a7773ab..a69f001 100644 --- a/common/fdt_support.c +++ b/common/fdt_support.c @@ -215,8 +215,6 @@ int fdt_chosen(void *fdt, ulong initrd_start, ulong initrd_end, int force) } } - fdt_initrd(fdt, initrd_start, initrd_end, force); - #ifdef CONFIG_OF_STDOUT_VIA_ALIAS path = fdt_getprop(fdt, nodeoffset, "linux,stdout-path", NULL); if ((path == NULL) || force) With this patch Linux boots fine again with the Ramdisk ... Do you know, why fdt_chosen() is creating a dummy entry for the initrd, when later fdt_initrd() is again called with the right parameters? I think, we can drop this! bye, Heiko -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [U-Boot] [POWERPC][BUG] ramdisk: u-boot no longer boots a ramdisk with Linux 2.6.27-rc4 2008-09-05 8:27 [U-Boot] [POWERPC][BUG] ramdisk: u-boot no longer boots a ramdisk with Linux 2.6.27-rc4 Heiko Schocher @ 2008-09-05 13:56 ` Kumar Gala 2008-09-05 14:42 ` Heiko Schocher 0 siblings, 1 reply; 6+ messages in thread From: Kumar Gala @ 2008-09-05 13:56 UTC (permalink / raw) To: u-boot On Sep 5, 2008, at 3:27 AM, Heiko Schocher wrote: > Hello Kumar, > > I actually trying to boot a Linux 2.6.27-rc4 Kernel with a Ramdisk > and actual u-boot on a MPC82xx based board. And what should I say, > it doesnt work anymore :-( > > Reason is the following commit: > > http://git.denx.de/?p=u-boot.git;a=commitdiff;h=2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b#patch3 > > After this commit, u-boot no longer deletes the mem reservation > for the initrd in Flash, what stops Linux from booting. > > So I did the following, but maybe there is a better way for it? I don't follow.. can you provide a bit more info about what's going on w/your mem reserves and what locations the ramdisk is at. The code should have been identical to before. - k ^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [POWERPC][BUG] ramdisk: u-boot no longer boots a ramdisk with Linux 2.6.27-rc4 2008-09-05 13:56 ` Kumar Gala @ 2008-09-05 14:42 ` Heiko Schocher 2008-09-05 16:13 ` Kumar Gala 0 siblings, 1 reply; 6+ messages in thread From: Heiko Schocher @ 2008-09-05 14:42 UTC (permalink / raw) To: u-boot Hello Kumar, Kumar Gala wrote: > On Sep 5, 2008, at 3:27 AM, Heiko Schocher wrote: >> I actually trying to boot a Linux 2.6.27-rc4 Kernel with a Ramdisk >> and actual u-boot on a MPC82xx based board. And what should I say, >> it doesnt work anymore :-( >> >> Reason is the following commit: >> >> http://git.denx.de/?p=u-boot.git;a=commitdiff;h=2a1a2cb6e2b87ee550e6f27b647d23331dfd5e1b#patch3 >> >> >> After this commit, u-boot no longer deletes the mem reservation >> for the initrd in Flash, what stops Linux from booting. >> >> So I did the following, but maybe there is a better way for it? > > I don't follow.. can you provide a bit more info about what's going on > w/your mem reserves and what locations the ramdisk is at. OK, I try it ... We start in lib_ppc/bootm.c (actual u-boot): 147 if (of_size) { 148 /* pass in dummy initrd info, we'll fix up later */ 149 if (fdt_chosen(of_flat_tree, images->rd_start, images->rd_end, 0) < 0) { This calls fdt_chosen with images->rd_start which are on my Hardware in Flash at 0xff21000 fdt_chosen calls fdt_initrd(of_flat_tree, initrd_start, initrd_end, force); with initrd = images->rd_start = 0xff210000 fdt initr (): 125 /* 126 * Look for an existing entry and update it. If we don't find 127 * the entry, we will j be the next available slot. 128 */ 129 for (j = 0; j < total; j++) { 130 err = fdt_get_mem_rsv(fdt, j, &addr, &size); 131 if (addr == initrd_start) { 132 fdt_del_mem_rsv(fdt, j); 133 break; 134 } 135 } didnt find this addres -> didnt call fdt_del_mem_rsv() This is OK here, because its the first call ... fdt_initrd calls fdt_add_mem_rsv with this value -> One dummy mem reserv for the 0xff210000 value Ok lets go on, later in lib_ppc/bootm.c: Here is called fdt_initrd again, now with the values from the initrd somewhere in RAM (which are the right ones) ... 181 #if defined(CONFIG_OF_LIBFDT) 182 /* fixup the initrd now that we know where it should be */ 183 if ((of_flat_tree) && (initrd_start && initrd_end)) 184 fdt_initrd(of_flat_tree, initrd_start, initrd_end, 1); 185 #endif in fdt initr (): 125 /* 126 * Look for an existing entry and update it. If we don't find 127 * the entry, we will j be the next available slot. 128 */ 129 for (j = 0; j < total; j++) { 130 err = fdt_get_mem_rsv(fdt, j, &addr, &size); 131 if (addr == initrd_start) { 132 fdt_del_mem_rsv(fdt, j); 133 break; 134 } 135 } didnt find this addresses in RAM -> didnt call fdt_del_mem_rsv() for the dummy reservation (on my Hardware 0xff210000)... This is NOT OK here! > The code should have been identical to before. Hmm... seems not so to me ... ... taking a look at your Patch: Here your Patch for lib_ppc_bootm.c: #if defined(CONFIG_OF_LIBFDT) /* fixup the initrd now that we know where it should be */ - if ((of_flat_tree) && (initrd_start && initrd_end)) { - uint64_t addr, size; - int total = fdt_num_mem_rsv(of_flat_tree); - int j; - - /* Look for the dummy entry and delete it */ - for (j = 0; j < total; j++) { - fdt_get_mem_rsv(of_flat_tree, j, &addr, &size); - if (addr == images->rd_start) { - fdt_del_mem_rsv(of_flat_tree, j); This looks for me that the old code explicitly searches for the dummy entry with images->rd_start!! - break; - } - } - - ret = fdt_add_mem_rsv(of_flat_tree, initrd_start, - initrd_end - initrd_start + 1); - if (ret < 0) { - printf("fdt_chosen: %s\n", fdt_strerror(ret)); - goto error; - } - - do_fixup_by_path_u32(of_flat_tree, "/chosen", - "linux,initrd-start", initrd_start, 0); - do_fixup_by_path_u32(of_flat_tree, "/chosen", - "linux,initrd-end", initrd_end, 0); - } + if ((of_flat_tree) && (initrd_start && initrd_end)) + fdt_initrd(of_flat_tree, initrd_start, initrd_end, 1); ^^^^^^^^^^^^ At this place (see explanation before) initrd_start has the value for the initrd in RAM! -> the search for this new address in fdt_initrd () is useless, even dangerous, if the initrd is not moved, to RAM this search is succesful and for this case the right mem reservation gets deleted ... #endif Nevertheless, the actual Code works with my patch fine, so again the question, why we need this dummy call in fdt_chosen for the initrd, when we call it later with the right values. I think we can drop this useless dummy call from fdt_chosen. Has somebody any suggestions? bye, Heiko -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany ^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [POWERPC][BUG] ramdisk: u-boot no longer boots a ramdisk with Linux 2.6.27-rc4 2008-09-05 14:42 ` Heiko Schocher @ 2008-09-05 16:13 ` Kumar Gala 2008-09-05 16:36 ` Heiko Schocher 0 siblings, 1 reply; 6+ messages in thread From: Kumar Gala @ 2008-09-05 16:13 UTC (permalink / raw) To: u-boot > I think we can drop this useless dummy call from fdt_chosen. > Has somebody any suggestions? That breaks some of the commands. I see the problem and will post a fix for you to try. - k ^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [POWERPC][BUG] ramdisk: u-boot no longer boots a ramdisk with Linux 2.6.27-rc4 2008-09-05 16:13 ` Kumar Gala @ 2008-09-05 16:36 ` Heiko Schocher 2008-09-05 18:02 ` Kumar Gala 0 siblings, 1 reply; 6+ messages in thread From: Heiko Schocher @ 2008-09-05 16:36 UTC (permalink / raw) To: u-boot Hello Kumar, Kumar Gala wrote: >> I think we can drop this useless dummy call from fdt_chosen. >> Has somebody any suggestions? > > That breaks some of the commands. I see the problem and will post a fix > for you to try. Which commands? bye Heiko -- DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany ^ permalink raw reply [flat|nested] 6+ messages in thread
* [U-Boot] [POWERPC][BUG] ramdisk: u-boot no longer boots a ramdisk with Linux 2.6.27-rc4 2008-09-05 16:36 ` Heiko Schocher @ 2008-09-05 18:02 ` Kumar Gala 0 siblings, 0 replies; 6+ messages in thread From: Kumar Gala @ 2008-09-05 18:02 UTC (permalink / raw) To: u-boot On Sep 5, 2008, at 11:36 AM, Heiko Schocher wrote: > Hello Kumar, > > Kumar Gala wrote: >>> I think we can drop this useless dummy call from fdt_chosen. >>> Has somebody any suggestions? >> >> That breaks some of the commands. I see the problem and will post >> a fix >> for you to try. > > Which commands? fdt chosen - k ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-09-05 18:02 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-09-05 8:27 [U-Boot] [POWERPC][BUG] ramdisk: u-boot no longer boots a ramdisk with Linux 2.6.27-rc4 Heiko Schocher 2008-09-05 13:56 ` Kumar Gala 2008-09-05 14:42 ` Heiko Schocher 2008-09-05 16:13 ` Kumar Gala 2008-09-05 16:36 ` Heiko Schocher 2008-09-05 18:02 ` Kumar Gala
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox