• Sai Praneeth Prakhya's avatar
    x86/efi: Don't unmap EFI boot services code/data regions for EFI_OLD_MEMMAP and EFI_MIXED_MODE · 1debf095
    Sai Praneeth Prakhya authored
    The following commit:
    
      d5052a7130a6 ("x86/efi: Unmap EFI boot services code/data regions from efi_pgd")
    
    forgets to take two EFI modes into consideration, namely EFI_OLD_MEMMAP and
    EFI_MIXED_MODE:
    
    - EFI_OLD_MEMMAP is a legacy way of mapping EFI regions into swapper_pg_dir
      using ioremap() and init_memory_mapping(). This feature can be enabled by
      passing "efi=old_map" as kernel command line argument. But,
      efi_unmap_pages() unmaps EFI boot services code/data regions *only* from
      efi_pgd and hence cannot be used for unmapping EFI boot services code/data
      regions from swapper_pg_dir.
    
    Introduce a temporary fix to not unmap EFI boot services code/data regions
    when EFI_OLD_MEMMAP is enabled while working on a real fix.
    
    - EFI_MIXED_MODE is another feature where a 64-bit kernel runs on a
      64-bit platform crippled by a 32-bit firmware. To support EFI_MIXED_MODE,
      all RAM (i.e. namely EFI regions like EFI_CONVENTIONAL_MEMORY,
      EFI_LOADER_<CODE/DATA>, EFI_BOOT_SERVICES_<CODE/DATA> and
      EFI_RUNTIME_CODE/DATA regions) is mapped into efi_pgd all the time to
      facilitate EFI runtime calls access it's arguments in 1:1 mode.
    
    Hence, don't unmap EFI boot services code/data regions when booted in mixed mode.
    Signed-off-by: default avatarSai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    Acked-by: default avatarArd Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Bhupesh Sharma <bhsharma@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20181222022234.7573-1-sai.praneeth.prakhya@intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    1debf095
quirks.c 21.7 KB