Subject: Maximum bootable kernel size in current ARM linux

From: [email-masked] (Bruce M. Penrod)
Date: Wed, 15 Sep 2010 13:30:28 -0700

Nicolas Pitre wrote:
> On Tue, 14 Sep 2010, Bruce M. Penrod wrote:
> 
>>
>> Nicolas Pitre wrote:
>>> On Mon, 13 Sep 2010, Bruce M. Penrod wrote:
>>>
>>>> Russell King - ARM Linux wrote:
>>>>> On Mon, Sep 13, 2010 at 12:40:56AM -0700, Bruce M. Penrod wrote:
>>>>>> This seems like a pretty straightforward question, but extensive web
>>>>>> searching hasn't shown a really clear, up-to-date answer.  The most
>>>>>> recent info is circa 2004 and states that 4MB is the largest
>>>>>> uncompressed
>>>>>> ARM kernel that may be loaded.  Not being an ARM assembly  guru
>>>>>> (head.S
>>>>>> baffles me), I'd like to know if that is still true in  2010, and if
>>>>>> it
>>>>>> is, why?
>>>>> It is no longer true; the only limit now is the size of contiguous RAM
>>>>> to fit the kernel image into.
>>>>>
>>>> Interesting.  I finally was able to get an uncompressed kernel a little
>>>> below
>>>> 4MB, and now it boots.  I'm working with 2.6.35rc6 on an OpenRD Ultimate
>>>> (Marvell Kirkwood) with Slackware, doing native compiles.  I'm wondering
>>>> if
>>>> there could be any problem with U-Boot for larger kernels than 4MB, but it
>>>> doesn't complain and says that it is copying the image.  The symptom I had
>>>> with a much larger kernel (~15MB) is a total hang, not even "Uncompressing
>>>> linux".
>>>>
>>>> I'll add some innocuous stuff back in until I get above 4MB again and see
>>>> if
>>>> it breaks again.
>>> When it breaks, do you still see the "Uncompressing Linux... done, booting
>>> the kernel." message?
>>>
>>>
>>> Nicolas
>>>
>> I think it depended upon how "too big" the kernel was.  With one only slightly
>> larger than 4 MB, I did see "Uncompressing Linux...", but not "done, booting
>> the kernel."  With a very large kernel (15MB), nothing printed at all.
>>
>> I have not retested since successfully booting one slightly smaller than 4096
>> * 1024.  When I do, I will post the results.  Should happen today.
> 
> OK.  Also please provide the size of your arch/arm/boot/zImage as well 
> as arch/arm/boot/Image.  Also, at what address do you load your kernel 
> in memory?
> 
> 
> Nicolas

U-Boot loads the zImage at 0x800000.  Yesterday I added features back 
into the kernel and am up to 4600 * 1024 with no issues.  So definitely 
not a hard limit at 4MB.  It takes quite a while to compile on the 
OpenRD, so it may take a while for me to discover the magic combination 
that doesn't work.  I removed a LOT of stuff, and I'd rather add it back 
in gradually to get an idea whether it is a size issue or some bad other 
thing with a combination of options.

-- 
Bruce Penrod