[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