diff options
author | Joerg Roedel <jroedel@suse.de> | 2020-09-07 15:15:24 +0200 |
---|---|---|
committer | Borislav Petkov <bp@suse.de> | 2020-09-07 19:45:25 +0200 |
commit | 597cfe48212a3f110ab0f918bf59791f453e65b7 (patch) | |
tree | 3ca6f66974264437ac3d4c71f95b3a21e5d159b3 /arch/x86/boot/compressed/misc.c | |
parent | c81d60029a1393183d2125fcb4b64831629b8864 (diff) | |
download | linux-597cfe48212a3f110ab0f918bf59791f453e65b7.tar.gz linux-597cfe48212a3f110ab0f918bf59791f453e65b7.tar.bz2 linux-597cfe48212a3f110ab0f918bf59791f453e65b7.zip |
x86/boot/compressed/64: Setup a GHCB-based VC Exception handler
Install an exception handler for #VC exception that uses a GHCB. Also
add the infrastructure for handling different exit-codes by decoding
the instruction that caused the exception and error handling.
Signed-off-by: Joerg Roedel <jroedel@suse.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20200907131613.12703-24-joro@8bytes.org
Diffstat (limited to 'arch/x86/boot/compressed/misc.c')
-rw-r--r-- | arch/x86/boot/compressed/misc.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c index e478e40fbe5a..267e7f93050e 100644 --- a/arch/x86/boot/compressed/misc.c +++ b/arch/x86/boot/compressed/misc.c @@ -442,6 +442,13 @@ asmlinkage __visible void *extract_kernel(void *rmode, memptr heap, parse_elf(output); handle_relocations(output, output_len, virt_addr); debug_putstr("done.\nBooting the kernel.\n"); + + /* + * Flush GHCB from cache and map it encrypted again when running as + * SEV-ES guest. + */ + sev_es_shutdown_ghcb(); + return output; } |