Re: [PATCH 2/2] x86/sev: Only announce RMPOPT optimizations when SNP is enabled
From: Tom Lendacky
Date: Wed Oct 14 2026 - 10:19:43 EST
On 10/13/26 10:44, Ashish Kalra wrote:
> From: Ashish Kalra <ashish.kalra@xxxxxxx>
>
> rmpopt_init() prints "RMPOPT optimizations enabled" gated only on
> X86_FEATURE_RMPOPT, which is a CPUID bit advertised independently of
> whether SNP is active. On a system where SNP is disabled in the BIOS the
> message is still printed at boot even though RMPOPT is never actually used
> (snp_enable_rmpopt() bails out on !CC_ATTR_HOST_SEV_SNP), which is
> misleading.
>
> rmpopt_init() is only the software setup (workqueue and the delayed work);
> the capability that matters for the message - an active SNP host - is
> checked in snp_enable_rmpopt(). Move the announcement there, as a
> pr_info_once(), so it is emitted only when RMPOPT is actually enabled on an
> SNP host.
>
> Fixes: c6c6f156d192 ("x86/sev: Perform RMP optimizations asynchronously")
> Signed-off-by: Ashish Kalra <ashish.kalra@xxxxxxx>
> ---
>
> Note: in the posted series the pr_info_once() lived in
> snp_enable_rmpopt() (SNP-gated); when applied, c6c6f156d192 moved it to
> rmpopt_init() (feature-only-gated) as a plain pr_info(). This restores the
> original placement.
> arch/x86/virt/svm/sev.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/virt/svm/sev.c b/arch/x86/virt/svm/sev.c
> index 43e4945e6cdf..6f5f4ee821d0 100644
> --- a/arch/x86/virt/svm/sev.c
> +++ b/arch/x86/virt/svm/sev.c
> @@ -656,8 +656,6 @@ static int __init rmpopt_init(void)
Should the check at the start of rmpopt_init() just be
if (!cpu_feature_enabled(X86_FEATURE_SEV_SNP) ||
!cpu_feature_enabled(X86_FEATURE_RMPOPT))
so that you don't even bother setting up the workqueue, etc.?
Thanks,
Tom
> if ((rmpopt_pa_end - rmpopt_pa_start) > SZ_2T)
> rmpopt_pa_end = rmpopt_pa_start + SZ_2T;
>
> - pr_info("RMPOPT optimizations enabled\n");
> -
> rmpopt_soft_init = true;
>
> return 0;
> @@ -690,6 +688,8 @@ void snp_enable_rmpopt(void)
>
> mod_delayed_work(rmpopt_wq, &rmpopt_delayed_work,
> msecs_to_jiffies(RMPOPT_WORK_TIMEOUT));
> +
> + pr_info_once("RMPOPT optimizations enabled\n");
> }
> EXPORT_SYMBOL_FOR_MODULES(snp_enable_rmpopt, "ccp,kvm-amd");
>