Re: [PATCH 2/2] x86/sev: Only announce RMPOPT optimizations when SNP is enabled
From: Kalra, Ashish
Date: Wed Oct 14 2026 - 15:34:04 EST
On 10/14/2026 8:24 AM, Tom Lendacky wrote:
> 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, that's cleaner, and gating on X86_FEATURE_SEV_SNP avoids the workqueue setup entirely on a non-SNP host.
Will add this and post a v2, keeping the pr_info() in rmpopt_init().
Thanks,
Ashish
> 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");
>>
>