[Fwd: [PATCH] PPC64: large INITRD causes kernel not to boot]
Mark Bellon
mbellon at mvista.com
Tue Aug 9 05:31:13 EST 2005
Olaf Hering wrote:
> On Mon, Aug 08, Mark Bellon wrote:
>
>
>
>>The original code started non-zero too [don't know why]. Yes, if
>>everything was correct and the claims where proper one could always
>>start at zero.
>>
>>
>
>make sure to also claim the range from _start to _end. The firmware on
>my B50 doesnt claim the client memrange.
>
>
Doesn't the "_start + ((unsigned long) vmlinux_filesize)" in the
calculation already do that by never allowing an allocation in that
address range? Yes, it's unclaimed but it's also not going to be around
for very long... [pragmatic approach?]
The kernel is copied to a claimed area, as is the initrd and then things
are "lit".
Whatever seems best we can do and I'll work up the patch. Comments?
>
>
>>I've got several platforms where the claim will (incorrectly) succeed
>>below the computed location. This coding insures that no matter what the
>>firmware thinks is right (or wrong) the claiming starts at a safe place.
>>Insurance?
>>
>>
>
>What is wrong with allocations on low addresses?
>
>
The firmware only protects itself - the first MB or, on some firmwares,
up to the first 48 MB. Regardless, the wrapper doesn't know how much is
enough so the patch starts it in a known safe place - past its end.
The old, hard coded 0x1400000 could lead to a claim in the middle of the
image once the load image size was larger than 16 MB (4MB standard load
point).
>
>
>>On top of that it's just a waste of time. In really huge INITRD handling
>>this adds unnecessary boot latency.
>>
>>
>
>I could not load a 10Mb file via network on a POWER4 LPAR. Maybe your
>case is a huge ELF memsize. On what system do you see the failure?
>
>
Motorola 6101 with 2 GB of RAM amongst others. I've got to support a 260
MB INITRD (and entire environment).
I've seen firmware problems on platforms with huge ELF files. Never gets
to execute code.
I've got a kernel of approximately 2.5 MB plus the initrd. The initrd
varies in size. A 50 MB INITRD, even compressed down, took me over the
older 16 MB limit and one could see the problem and it works now.
mark
More information about the Linuxppc64-dev
mailing list