• Sai Praneeth's avatar
    x86/efi: Disable runtime services on kexec kernel if booted with efi=old_map · 4e52797d
    Sai Praneeth authored
    Booting kexec kernel with "efi=old_map" in kernel command line hits
    kernel panic as shown below.
    
     BUG: unable to handle kernel paging request at ffff88007fe78070
     IP: virt_efi_set_variable.part.7+0x63/0x1b0
     PGD 7ea28067
     PUD 7ea2b067
     PMD 7ea2d067
     PTE 0
     [...]
     Call Trace:
      virt_efi_set_variable()
      efi_delete_dummy_variable()
      efi_enter_virtual_mode()
      start_kernel()
      x86_64_start_reservations()
      x86_64_start_kernel()
      start_cpu()
    
    [ efi=old_map was never intended to work with kexec. The problem with
      using efi=old_map is that the virtual addresses are assigned from the
      memory region used by other kernel mappings; vmalloc() space.
      Potentially there could be collisions when booting kexec if something
      else is mapped at the virtual address we allocated for runtime service
      regions in the initial boot - Matt Fleming ]
    
    Since kexec was never intended to work with efi=old_map, disable
    runtime services in kexec if booted with efi=old_map, so that we don't
    panic.
    Tested-by: default avatarLee Chun-Yi <jlee@suse.com>
    Signed-off-by: default avatarSai Praneeth Prakhya <sai.praneeth.prakhya@intel.com>
    Signed-off-by: default avatarMatt Fleming <matt@codeblueprint.co.uk>
    Acked-by: default avatarDave Young <dyoung@redhat.com>
    Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Ravi Shankar <ravi.v.shankar@intel.com>
    Cc: Ricardo Neri <ricardo.neri@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: linux-efi@vger.kernel.org
    Link: http://lkml.kernel.org/r/20170526113652.21339-4-matt@codeblueprint.co.ukSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    4e52797d
efi.c 26.8 KB