bi_record and initrd
trini at kernel.crashing.org
Wed Nov 20 05:11:07 EST 2002
On Fri, Nov 15, 2002 at 01:02:57PM +0100, Magnus Damm wrote:
> > Can you give more information about where everything is loaded up at? I
> > thought this was a non-issue, but it's been a while since I tested
> > initrds.
> this mail says something about typos or misuse of _ALIGN().
I _think_ this is intentional, ie make sure we have bigger than needed
alignments, possibly to try and avoid what we've hit here.
> If _ALIGN() now is used correctly, then the align definition
> maybe chould be changed from
> #define _ALIGN(addr,size) (((addr)+size-1)&(~(size-1)))
> #define _ALIGN(addr,size) (((addr)+(size)-1)&(~((size)-1)))
> to make sure that size is treated correctly. Or maybe it's a feature. =)
Fixing that now, thanks.
> Second example:
> I have not been able to output the value of zimage_size for this case, but I'm
> sure that my initrd gets overwritten with the bi_record at 0x00200000.
Yeah, I'm sure too. Here's an untested patch vs current
linuxppc_2_4_devel, which will relocate the initrd if needed. The
current bi_rec code in the kernel shouldn't care if the initrd is moved
(This was broken in the past and then pointed out / fixed later, so I'm
rather confident of this part :)) so it should be OK.
For 2.5, I'm pondering going back and re-reading all of the discussions
and maybe even starting on it, with an arbitrary location for the
bi_recs which would let this case be much simpiler.
> Another thing - why is the second argument (dstlen) to gunzip() always 4 megabytes?
> Maybe it could be set to the address that the image is loaded at / relocated to?
> (0x180000 above) That way the gunzip function wouldn't overwrite the running code,
> if I understand the dstlen argument correctly that is.
I'm not sure about this part. Tested patches are welcome of course. :)
Tom Rini (TR1265)
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
More information about the Linuxppc-embedded