On Thu, 29 Nov 2018 at 15:21, Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > > 4.9-stable review patch. If anyone has any objections, please let me know. > > ------------------ > > [ Upstream commit 33412b8673135b18ea42beb7f5117ed0091798b6 ] > > Commit: > > 3ea86495aef2 ("efi/arm: preserve early mapping of UEFI memory map longer for BGRT") > > deferred the unmap of the early mapping of the UEFI memory map to > accommodate the ACPI BGRT code, which looks up the memory type that > backs the BGRT table to validate it against the requirements of the UEFI spec. > > Unfortunately, this causes problems on ARM, which does not permit > early mappings to persist after paging_init() is called, resulting > in a WARN() splat. Since we don't support the BGRT table on ARM anway, > let's revert ARM to the old behaviour, which is to take down the > early mapping at the end of efi_init(). > > Signed-off-by: Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> > Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > Cc: linux-efi@xxxxxxxxxxxxxxx > Fixes: 3ea86495aef2 ("efi/arm: preserve early mapping of UEFI memory ...") This commit is only in v4.19 as far as I know. Does it even apply? > Link: http://lkml.kernel.org/r/20181114175544.12860-3-ard.biesheuvel@xxxxxxxxxx > Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx> > Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx> > --- > drivers/firmware/efi/arm-init.c | 4 ++++ > drivers/firmware/efi/arm-runtime.c | 2 +- > drivers/firmware/efi/memmap.c | 3 +++ > 3 files changed, 8 insertions(+), 1 deletion(-) > > diff --git a/drivers/firmware/efi/arm-init.c b/drivers/firmware/efi/arm-init.c > index 1d1c9693ebfb..8ee91777abce 100644 > --- a/drivers/firmware/efi/arm-init.c > +++ b/drivers/firmware/efi/arm-init.c > @@ -256,6 +256,10 @@ void __init efi_init(void) > (params.mmap & ~PAGE_MASK))); > > init_screen_info(); > + > + /* ARM does not permit early mappings to persist across paging_init() */ > + if (IS_ENABLED(CONFIG_ARM)) > + efi_memmap_unmap(); > } > > static int __init register_gop_device(void) > diff --git a/drivers/firmware/efi/arm-runtime.c b/drivers/firmware/efi/arm-runtime.c > index 4d788e0debfe..069c5a4479e6 100644 > --- a/drivers/firmware/efi/arm-runtime.c > +++ b/drivers/firmware/efi/arm-runtime.c > @@ -118,7 +118,7 @@ static int __init arm_enable_runtime_services(void) > { > u64 mapsize; > > - if (!efi_enabled(EFI_BOOT) || !efi_enabled(EFI_MEMMAP)) { > + if (!efi_enabled(EFI_BOOT)) { > pr_info("EFI services will not be available.\n"); > return 0; > } > diff --git a/drivers/firmware/efi/memmap.c b/drivers/firmware/efi/memmap.c > index 78686443cb37..3fd2b450c649 100644 > --- a/drivers/firmware/efi/memmap.c > +++ b/drivers/firmware/efi/memmap.c > @@ -117,6 +117,9 @@ int __init efi_memmap_init_early(struct efi_memory_map_data *data) > > void __init efi_memmap_unmap(void) > { > + if (!efi_enabled(EFI_MEMMAP)) > + return; > + > if (!efi.memmap.late) { > unsigned long size; > > -- > 2.17.1 > > >