]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: x86: Add IBPB_BRTYPE support
authorJosh Poimboeuf <jpoimboe@kernel.org>
Fri, 25 Aug 2023 07:01:35 +0000 (00:01 -0700)
committerSean Christopherson <seanjc@google.com>
Wed, 4 Oct 2023 22:15:52 +0000 (15:15 -0700)
Add support for the IBPB_BRTYPE CPUID flag, which indicates that IBPB
includes branch type prediction flushing.

Note, like SRSO_NO, advertise support for IBPB_BRTYPE even if it's not
enumerated by in the raw CPUID, i.e. bypass the cpuid_count() in
__kvm_cpu_cap_mask().  Some CPUs that gained support via a uCode patch
don't report IBPB_BRTYPE via CPUID (the kernel forces the flag).

Opportunistically use kvm_cpu_cap_check_and_set() for SRSO_NO instead
of manually querying host support (cpu_feature_enabled() and
boot_cpu_has() yield the same end result in this case).

Signed-off-by: Josh Poimboeuf <jpoimboe@kernel.org>
Link: https://lore.kernel.org/r/79d5f5914fb42c2c62418ffbcd78f138645ded21.1692919072.git.jpoimboe@kernel.org
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/x86/kvm/cpuid.c

index 0544e30b4946d1e5fb40f6737335ac00d58a84b2..8f26a929d510cdebca111916cce8c9d9715b839b 100644 (file)
@@ -764,8 +764,8 @@ void kvm_set_cpu_caps(void)
                F(NULL_SEL_CLR_BASE) | F(AUTOIBRS) | 0 /* PrefetchCtlMsr */
        );
 
-       if (cpu_feature_enabled(X86_FEATURE_SRSO_NO))
-               kvm_cpu_cap_set(X86_FEATURE_SRSO_NO);
+       kvm_cpu_cap_check_and_set(X86_FEATURE_IBPB_BRTYPE);
+       kvm_cpu_cap_check_and_set(X86_FEATURE_SRSO_NO);
 
        kvm_cpu_cap_init_kvm_defined(CPUID_8000_0022_EAX,
                F(PERFMON_V2)