linux/Documentation/x86
Nikunj A Dadhania 8c29f01654 x86/sev: Add SEV-SNP guest feature negotiation support
The hypervisor can enable various new features (SEV_FEATURES[1:63]) and start a
SNP guest. Some of these features need guest side implementation. If any of
these features are enabled without it, the behavior of the SNP guest will be
undefined.  It may fail booting in a non-obvious way making it difficult to
debug.

Instead of allowing the guest to continue and have it fail randomly later,
detect this early and fail gracefully.

The SEV_STATUS MSR indicates features which the hypervisor has enabled.  While
booting, SNP guests should ascertain that all the enabled features have guest
side implementation. In case a feature is not implemented in the guest, the
guest terminates booting with GHCB protocol Non-Automatic Exit(NAE) termination
request event, see "SEV-ES Guest-Hypervisor Communication Block Standardization"
document (currently at https://developer.amd.com/wp-content/resources/56421.pdf),
section "Termination Request".

Populate SW_EXITINFO2 with mask of unsupported features that the hypervisor can
easily report to the user.

More details in the AMD64 APM Vol 2, Section "SEV_STATUS MSR".

  [ bp:
    - Massage.
    - Move snp_check_features() call to C code.
    Note: the CC:stable@ aspect here is to be able to protect older, stable
    kernels when running on newer hypervisors. Or not "running" but fail
    reliably and in a well-defined manner instead of randomly. ]

Fixes: cbd3d4f7c4 ("x86/sev: Check SEV-SNP features support")
Signed-off-by: Nikunj A Dadhania <nikunj@amd.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com>
Cc: <stable@kernel.org>
Link: https://lore.kernel.org/r/20230118061943.534309-1-nikunj@amd.com
2023-01-19 17:29:58 +01:00
..
i386 Documentation: x86: convert i386/IO-APIC.txt to reST 2019-05-08 14:34:11 -06:00
x86_64 dma-mapping updates 2022-08-06 10:56:45 -07:00
amd_hsmp.rst Documentation: Add x86/amd_hsmp driver 2022-03-02 11:42:36 +01:00
amd-memory-encryption.rst x86/sev: Add SEV-SNP guest feature negotiation support 2023-01-19 17:29:58 +01:00
boot.rst Documentation/x86/boot: Reserve type_of_loader=13 for barebox 2022-10-17 11:22:33 +02:00
booting-dt.rst dt: Remove booting-without-of.rst 2020-10-13 13:33:16 -05:00
buslock.rst Documentation/x86: Add ratelimit in buslock.rst 2021-05-18 16:39:31 +02:00
cpuinfo.rst x86/cpu: Remove "nosmep" 2022-04-04 10:17:00 +02:00
earlyprintk.rst Documentation: x86: earlyprintk: drop doubled words 2020-07-13 09:47:38 -06:00
elf_auxvec.rst x86/elf: Support a new ELF aux vector AT_MINSIGSTKSZ 2021-05-19 12:18:45 +02:00
entry_64.rst docs: x86: replace do_IRQ int the entry_64.rst with common_interrupt() 2022-09-27 13:21:44 -06:00
exception-tables.rst Documentation: x86: Fix obsolete name of page fault handler 2022-04-05 10:28:36 -06:00
features.rst docs: archis: add a per-architecture features list 2020-12-03 15:10:15 -07:00
ifs.rst Documentation: In-Field Scan 2022-05-12 15:35:29 +02:00
index.rst It was a moderately busy cycle for documentation; highlights include: 2022-05-25 11:17:41 -07:00
intel_txt.rst docs: x86: move two x86-specific files to x86 arch dir 2019-07-15 11:03:01 -03:00
intel-hfi.rst x86/Documentation: Describe the Intel Hardware Feedback Interface 2022-02-03 19:50:48 +01:00
iommu.rst Documentation: x86: rework IOMMU documentation 2022-04-28 07:59:45 -06:00
kernel-stacks.rst Some late arriving documentation changes. In particular, this contains the 2019-05-10 13:24:53 -04:00
mds.rst x86/speculation/mds: Improve CPU buffer clear documentation 2019-05-16 09:05:12 +02:00
microcode.rst x86/microcode: Document the whole late loading problem 2022-08-18 15:57:53 +02:00
mtrr.rst docs: x86: avoid using ReST :doc:foo markup 2021-06-17 13:24:39 -06:00
orc-unwinder.rst objtool: update objtool.txt references 2022-07-07 13:10:00 -06:00
pat.rst remove ioremap_nocache and devm_ioremap_nocache 2020-01-06 09:45:59 +01:00
pti.rst Documentation: x86: convert pti.txt to reST 2019-05-08 14:34:10 -06:00
resctrl.rst Documentation/x86: Rename resctrl_ui.rst and add two errata to the file 2020-10-27 16:47:00 +01:00
sgx.rst Documentation/x86: Introduce enclave runtime management section 2022-07-07 10:13:03 -07:00
sva.rst Documentation/x86: Update documentation for SVA (Shared Virtual Addressing) 2022-02-15 11:31:43 +01:00
tdx.rst virt: Add TDX guest driver 2022-11-17 11:04:23 -08:00
tlb.rst Documentation: x86: convert tlb.txt to reST 2019-05-08 14:34:10 -06:00
topology.rst x86/CPU/AMD: Save AMD NodeId as cpu_die_id 2020-11-19 11:43:13 +01:00
tsx_async_abort.rst x86/speculation/taa: Add documentation for TSX Async Abort 2019-10-28 08:37:00 +01:00
usb-legacy-support.rst Documentation: x86: convert usb-legacy-support.txt to reST 2019-05-08 14:34:11 -06:00
xstate.rst x86/fpu: Optimize out sigframe xfeatures when in init state 2021-11-03 22:42:35 +01:00
zero-page.rst x86/boot: Add a pointer to Confidential Computing blob in bootparams 2022-04-07 16:47:11 +02:00