linux_dsm_epyc7002/arch/x86/mm
Tom Lendacky 208bb686e7 x86/ioremap: Map EFI-reserved memory as encrypted for SEV
commit 8d651ee9c71bb12fc0c8eb2786b66cbe5aa3e43b upstream.

Some drivers require memory that is marked as EFI boot services
data. In order for this memory to not be re-used by the kernel
after ExitBootServices(), efi_mem_reserve() is used to preserve it
by inserting a new EFI memory descriptor and marking it with the
EFI_MEMORY_RUNTIME attribute.

Under SEV, memory marked with the EFI_MEMORY_RUNTIME attribute needs to
be mapped encrypted by Linux, otherwise the kernel might crash at boot
like below:

  EFI Variables Facility v0.08 2004-May-17
  general protection fault, probably for non-canonical address 0x3597688770a868b2: 0000 [#1] SMP NOPTI
  CPU: 13 PID: 1 Comm: swapper/0 Not tainted 5.12.4-2-default #1 openSUSE Tumbleweed
  Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
  RIP: 0010:efi_mokvar_entry_next
  [...]
  Call Trace:
   efi_mokvar_sysfs_init
   ? efi_mokvar_table_init
   do_one_initcall
   ? __kmalloc
   kernel_init_freeable
   ? rest_init
   kernel_init
   ret_from_fork

Expand the __ioremap_check_other() function to additionally check for
this other type of boot data reserved at runtime and indicate that it
should be mapped encrypted for an SEV guest.

 [ bp: Massage commit message. ]

Fixes: 58c909022a ("efi: Support for MOK variable config table")
Reported-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Tested-by: Joerg Roedel <jroedel@suse.de>
Cc: <stable@vger.kernel.org> # 5.10+
Link: https://lkml.kernel.org/r/20210608095439.12668-2-joro@8bytes.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2021-06-23 14:42:52 +02:00
..
pat x86: fix seq_file iteration for pat/memtype.c 2021-03-04 11:38:38 +01:00
amdtopology.c
cpu_entry_area.c
debug_pagetables.c
dump_pagetables.c
extable.c
fault.c x86/fault: Fix AMD erratum #91 errata fixup for user code 2021-03-04 11:38:34 +01:00
highmem_32.c
hugetlbpage.c
ident_map.c x86/mm/ident_map: Check for errors from ident_pud_init() 2020-12-30 11:52:58 +01:00
init_32.c
init_64.c
init.c
iomap_32.c
ioremap.c x86/ioremap: Map EFI-reserved memory as encrypted for SEV 2021-06-23 14:42:52 +02:00
kasan_init_64.c
kaslr.c
kmmio.c
maccess.c
Makefile
mem_encrypt_boot.S
mem_encrypt_identity.c x86/sev: Check SME/SEV support in CPUID first 2021-06-10 13:39:27 +02:00
mem_encrypt.c x86/mem_encrypt: Correct physical address calculation in __set_clr_pte_enc() 2021-03-30 14:32:07 +02:00
mm_internal.h
mmap.c
mmio-mod.c
numa_32.c
numa_64.c
numa_emulation.c
numa_internal.h
numa.c x86/mm: Avoid truncating memblocks for SGX memory 2021-06-23 14:42:52 +02:00
pf_in.c
pf_in.h
pgtable_32.c
pgtable.c x86/mm: Fix leak of pmd ptlock 2021-01-12 20:18:22 +01:00
physaddr.c
physaddr.h
pkeys.c
pti.c
setup_nx.c
srat.c
testmmiotrace.c
tlb.c x86/membarrier: Get rid of a dubious optimization 2020-12-09 09:37:42 +01:00