Maximum bootable kernel size in current ARM linux
Catalin Marinas
catalin.marinas at arm.com
Tue Sep 14 08:54:09 EDT 2010
On Tue, 2010-09-14 at 13:35 +0100, Dave P. Martin wrote:
> > The initramfs is located at the end of the init section and
> > before the text section. Because the kernel must be able to
> > 'branch' between the init and text sections, the initramfs
> > size can't be greater than the 'branch' maximum offset. 32MB ?
>
> We can also build kernels in Thumb-2 (where the long branch range is +/- 4MB
> IIRC)
I think the Thumb-2 branch goes up to 16MB range. The Thumb-1 may be
smaller but we don't support this in the kernel. That's why Thumb-2
modules are within 8MB below PAGE_OFFSET. But this leaves us with
maximum 8MB of kernel size.
> I believe the linker should always generate trampolines to extend the range
> of those branches where necessary, even when branching from assembler. The
> only case where this won't work is if you have individual objects whose text
> section is so large there's nowhere to put the trampolines within the
> required range, or where branch targets are fixed up by something other than
> the linker (I'm guessing that's either a very rare situation or
> nonexistent.)
We would need some additional relocations handling in the modules
loading code.
--
Catalin
More information about the linux-arm-kernel
mailing list