]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
KVM: SVM: Set synthesized TSA CPUID flags
authorBorislav Petkov (AMD) <bp@alien8.de>
Tue, 15 Jul 2025 19:24:59 +0000 (21:24 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 17 Jul 2025 16:37:24 +0000 (18:37 +0200)
VERW_CLEAR is supposed to be set only by the hypervisor to denote TSA
mitigation support to a guest. SQ_NO and L1_NO are both synthesizable,
and are going to be set by hw CPUID on future machines.

So keep the kvm_cpu_cap_init_kvm_defined() invocation *and* set them
when synthesized.

This fix is stable-only.

Co-developed-by: Jinpu Wang <jinpu.wang@ionos.com>
Signed-off-by: Jinpu Wang <jinpu.wang@ionos.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/kvm/cpuid.c

index 02196db26a0842c7746cce601ca22057c11031fe..8f587c5bb6bc4ea3f7f7d3094592ec7231be0920 100644 (file)
@@ -822,6 +822,7 @@ void kvm_set_cpu_caps(void)
        kvm_cpu_cap_check_and_set(X86_FEATURE_SBPB);
        kvm_cpu_cap_check_and_set(X86_FEATURE_IBPB_BRTYPE);
        kvm_cpu_cap_check_and_set(X86_FEATURE_SRSO_NO);
+       kvm_cpu_cap_check_and_set(X86_FEATURE_VERW_CLEAR);
 
        kvm_cpu_cap_init_kvm_defined(CPUID_8000_0022_EAX,
                F(PERFMON_V2)
@@ -831,6 +832,9 @@ void kvm_set_cpu_caps(void)
                F(TSA_SQ_NO) | F(TSA_L1_NO)
        );
 
+       kvm_cpu_cap_check_and_set(X86_FEATURE_TSA_SQ_NO);
+       kvm_cpu_cap_check_and_set(X86_FEATURE_TSA_L1_NO);
+
        /*
         * Synthesize "LFENCE is serializing" into the AMD-defined entry in
         * KVM's supported CPUID if the feature is reported as supported by the