x86/sev: Add SNP-specific unaccepted memory support
authorTom Lendacky <thomas.lendacky@amd.com>
Tue, 6 Jun 2023 14:51:26 +0000 (09:51 -0500)
committerBorislav Petkov (AMD) <bp@alien8.de>
Tue, 6 Jun 2023 16:31:37 +0000 (18:31 +0200)
commit6c3211796326a9d35618b866826ca556c8f008a8
tree1c7688af3e1e4ff079a6875cc8c2cf3ba8781b51
parent15d9088779b8693cffe47527ea4f9ff8fde4cd03
x86/sev: Add SNP-specific unaccepted memory support

Add SNP-specific hooks to the unaccepted memory support in the boot
path (__accept_memory()) and the core kernel (accept_memory()) in order
to support booting SNP guests when unaccepted memory is present. Without
this support, SNP guests will fail to boot and/or panic() when unaccepted
memory is present in the EFI memory map.

The process of accepting memory under SNP involves invoking the hypervisor
to perform a page state change for the page to private memory and then
issuing a PVALIDATE instruction to accept the page.

Since the boot path and the core kernel paths perform similar operations,
move the pvalidate_pages() and vmgexit_psc() functions into sev-shared.c
to avoid code duplication.

Create the new header file arch/x86/boot/compressed/sev.h because adding
the function declaration to any of the existing SEV related header files
pulls in too many other header files, causing the build to fail.

Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Link: https://lore.kernel.org/r/a52fa69f460fd1876d70074b20ad68210dfc31dd.1686063086.git.thomas.lendacky@amd.com
arch/x86/Kconfig
arch/x86/boot/compressed/mem.c
arch/x86/boot/compressed/sev.c
arch/x86/boot/compressed/sev.h [new file with mode: 0644]
arch/x86/include/asm/sev.h
arch/x86/include/asm/unaccepted_memory.h
arch/x86/kernel/sev-shared.c
arch/x86/kernel/sev.c