[PATCH 1/2] arm64: don't make early_*map() calls post paging_init()

Leif Lindholm leif.lindholm at linaro.org
Tue Jan 6 05:39:17 PST 2015


On Tue, Jan 06, 2015 at 09:38:24AM +0000, Ard Biesheuvel wrote:
> > diff --git a/arch/arm64/kernel/efi.c b/arch/arm64/kernel/efi.c
> > index 6fac253..790adb5 100644
> > --- a/arch/arm64/kernel/efi.c
> > +++ b/arch/arm64/kernel/efi.c

> > @@ -393,6 +385,8 @@ static int __init arm64_enter_virtual_mode(void)
> >                                                    mapsize);
> >         memmap.map_end = memmap.map + mapsize;
> >
> > +       efi_setup_idmap();
> > +
> 
> I think this is incorrect: we may call early_alloc() here which is
> only allowed before paging_init()

Hmm...
Technically, the existing code is already breaking this restriction
then - but my patch moved that _way_ later in the boot process (early
initcall instead of setup_arch()).

I'll resend with an alternative solution that leaves the
efi_setup_idmap() ordering vs paging init() in its current state.
Since efi_setup_idmap() goes away with your "stable UEFI virtual
mappings for kexec" series, I don't want to make changes here and for
potential backports too invasive.

/
    Leif



More information about the linux-arm-kernel mailing list