• Jiri Kosina's avatar
    x86/efi: Always map the first physical page into the EFI pagetables · bf29bddf
    Jiri Kosina authored
    Commit:
    
      12976670 ("x86/efi: Only map RAM into EFI page tables if in mixed-mode")
    
    stopped creating 1:1 mappings for all RAM, when running in native 64-bit mode.
    
    It turns out though that there are 64-bit EFI implementations in the wild
    (this particular problem has been reported on a Lenovo Yoga 710-11IKB),
    which still make use of the first physical page for their own private use,
    even though they explicitly mark it EFI_CONVENTIONAL_MEMORY in the memory
    map.
    
    In case there is no mapping for this particular frame in the EFI pagetables,
    as soon as firmware tries to make use of it, a triple fault occurs and the
    system reboots (in case of the Yoga 710-11IKB this is very early during bootup).
    
    Fix that by always mapping the first page of physical memory into the EFI
    pagetables. We're free to hand this page to the BIOS, as trim_bios_range()
    will reserve the first page and isolate it away from memory allocators anyway.
    
    Note that just reverting 12976670 alone is not enough on v4.9-rc1+ to fix the
    regression on affected hardware, as this commit:
    
       ab72a27d ("x86/efi: Consolidate region mapping logic")
    
    later made the first physical frame not to be mapped anyway.
    Reported-by: default avatarHanka Pavlikova <hanka@ucw.cz>
    Signed-off-by: default avatarJiri Kosina <jkosina@suse.cz>
    Signed-off-by: default avatarMatt Fleming <matt@codeblueprint.co.uk>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Borislav Petkov <bp@suse.de>
    Cc: Laura Abbott <labbott@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vojtech Pavlik <vojtech@ucw.cz>
    Cc: Waiman Long <waiman.long@hpe.com>
    Cc: linux-efi@vger.kernel.org
    Cc: stable@kernel.org # v4.8+
    Fixes: 12976670 ("x86/efi: Only map RAM into EFI page tables if in mixed-mode")
    Link: http://lkml.kernel.org/r/20170127222552.22336-1-matt@codeblueprint.co.uk
    [ Tidied up the changelog and the comment. ]
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    bf29bddf
efi_64.c 18.8 KB