[PATCH v4 0/2] x86/sev: Fix RMPOPT enablement on non-RMPOPT configs
From: Ashish Kalra
Date: Wed Oct 28 2026 - 17:22:58 EST
From: Ashish Kalra <ashish.kalra@xxxxxxx>
Two fixes for the RMPOPT series, both for configurations where the
RMPOPT CPUID bit is advertised but RMPOPT is not actually usable:
Patch 1 clears X86_FEATURE_RMPOPT when the platform advertises segmented
RMP but the firmware has it disabled (contiguous RMP) - otherwise
RMPOPT_BASE is programmed and RMPOPT issued, which #GP on a contiguous RMP.
Patch 2 sets up RMPOPT only on an active SNP host by moving the soft-init
(workqueue setup and the "optimizations enabled" message) into
snp_rmptable_init(), so it no longer runs on systems where SNP is not
enabled (e.g. disabled in the BIOS).
v4:
- Patch 1: drop the inline comment on the common fall-through clear (the
rationale is in the commit message), and reword the commit message so
RMPOPT_BASE programming is no longer attributed to the "RMPOPT initcall".
No functional change; Tom's Reviewed-by retained.
- Patch 2: instead of gating rmpopt_init() on CC_ATTR_HOST_SEV_SNP, move
the RMPOPT soft-init into snp_rmptable_init(), which runs only once the
host RMP table is established (CC_ATTR_HOST_SEV_SNP guaranteed).
rmpopt_init() keeps its X86_FEATURE_RMPOPT-only gate and drops the
device_initcall.
v3:
- Patch 2: gate rmpopt_init() on cc_platform_has(CC_ATTR_HOST_SEV_SNP)
instead of the X86_FEATURE_SEV_SNP CPUID bit. SNP can be disabled after
feature detection (e.g. when AMD IOMMU init fails to enable it), which
clears CC_ATTR_HOST_SEV_SNP but leaves the CPUID bit set;
CC_ATTR_HOST_SEV_SNP reflects the final host state and matches the gate
in snp_enable_rmpopt().
v2:
- Patch 1: expand the commit message to spell out the CPUID-advertise vs
firmware-enable distinction and how the configuration arises; drop the
trailing sentence; add Tom's Reviewed-by.
- Patch 2: rather than moving the announcement to snp_enable_rmpopt(),
gate rmpopt_init() on an SNP host and keep the message there (Tom).
Ashish Kalra (2):
x86/sev: Clear RMPOPT when segmented RMP is disabled by firmware
x86/sev: Set up RMPOPT only on an active SNP host
arch/x86/virt/svm/sev.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
base-commit: 250ee734115bca1c1f7a38d838909aa83cce87ae
--
2.43.0