Single zImage and A15/LPAE

Dave Martin
2012-10-09T14:17:36Z

On Tue, Oct 09, 2012 at 07:51:02AM +0000, Arnd Bergmann wrote:
> On Monday 08 October 2012 22:18:24 Nicolas Pitre wrote:
> > On Mon, 8 Oct 2012, Stephen Warren wrote:
> >
> > > I'm curious what the single-zImage story is for Cortex A15 CPUs with
> > > LPAE extensions; IIRC, LPAE entails a different page table format and so
> > > isn't going to co-exist in the same zImage as non-LPAE
> >
> > LPAE vs non LPAE is an even more invasive change than ARMv6+ vs pre
> > ARMv6 support. So no, I don't think we'll ever support LPAE and non
> > LPAE configs in the same kernel binary.
> >
> > > (although doesn't x86 support that now; I though separate
> > > LPAE/non-LPAE kernels went away there?)
> >
> > I don't think so. At least Ubuntu apparently still carries a PAE and
> > non PAE kernel packages. Fedora doesn't, probably because they decided
> > not to support non PAE capable machines anymore. We certainly cannot
> > make this choice on ARM yet.
>
> Fedora 18 still has both PAE and non-PAE kernels. I would really hope
> they could give up the PAE version in favor of a 64 bit kernel in
> the 32 bit distro, but it seems none of the big distros trust the
> compat code enough yet. On x86, the number of 32 bit machines still
> running with more than 3GB of RAM installed should be very marginal
> now, most people running the PAE kernel actually have 64 bit capable
> CPUs and have some legacy 32 bit applications that are easier to
> run with a 32 bit user space.
>
> Maybe we get to the same point on ARM in some 10 years, but for
> the forseeable future, Cortex-a15 machines with lots of RAM will
> be very real and we need to have separate kernels for those.

In the medium term we could work around this with a fat kernel in
principle (i.e., bundle a non-LPAE single kernel together with an LPAE
one and choose the right one at boot time). This can be solved outside
the kernel if necessary.

This is not great, but the general feeling seems to be that combining
LPAE and non-LPAE in the same kernel is just not going to be worth the
pain (either in code or runtime impacts).

For AArch64, we obviously have a different kernel binary anyway.

Cheers
---Dave