• Kairui Song's avatar
    x86/kexec: Add the EFI system tables and ACPI tables to the ident map · 6bbeb276
    Kairui Song authored
    Currently, only the whole physical memory is identity-mapped for the
    kexec kernel and the regions reserved by firmware are ignored.
    
    However, the recent addition of RSDP parsing in the decompression stage
    and especially:
    
      33f0df8d ("x86/boot: Search for RSDP in the EFI tables")
    
    which tries to access EFI system tables and to dig out the RDSP address
    from there, becomes a problem because in certain configurations, they
    might not be mapped in the kexec'ed kernel's address space.
    
    What is more, this problem doesn't appear on all systems because the
    kexec kernel uses gigabyte pages to build the identity mapping. And
    the EFI system tables and ACPI tables can, depending on the system
    configuration, end up being mapped as part of all physical memory, if
    they share the same 1 GB area with the physical memory.
    
    Therefore, make sure they're always mapped.
    
     [ bp: productize half-baked patch:
       - rewrite commit message.
       - correct the map_acpi_tables() function name in the !ACPI case. ]
    Signed-off-by: default avatarKairui Song <kasong@redhat.com>
    Signed-off-by: default avatarBaoquan He <bhe@redhat.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Tested-by: default avatarDirk van der Merwe <dirk.vandermerwe@netronome.com>
    Cc: dyoung@redhat.com
    Cc: fanc.fnst@cn.fujitsu.com
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: j-nomura@ce.jp.nec.com
    Cc: kexec@lists.infradead.org
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Cc: Lianbo Jiang <lijiang@redhat.com>
    Cc: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: x86-ml <x86@kernel.org>
    Link: https://lkml.kernel.org/r/20190429002318.GA25400@MiWiFi-R3L-srv
    6bbeb276
machine_kexec_64.c 15.9 KB