/* These are scattered features in cpufeatures.h. */
#define KVM_CPUID_BIT_IBRS 26
#define KVM_CPUID_BIT_STIBP 27
+#define KVM_CPUID_BIT_RDS 31
/* CPUID[eax=0x80000008].ebx */
const u32 kvm_supported_word10_x86_features =
F(XSAVEOPT) | F(XSAVEC) | F(XGETBV1) | f_xsaves;
- const u32 kvm_cpuid_7_0_edx_x86_features = KF(IBRS) | KF(STIBP);
+ const u32 kvm_cpuid_7_0_edx_x86_features = KF(IBRS) | KF(STIBP) |
+ KF(RDS);
/* cpuid 0x80000008.ebx */
const u32 kvm_cpuid_80000008_ebx_x86_features =
entry->edx &= kvm_cpuid_7_0_edx_x86_features;
/* Aka !ibrs_supported and !ibpb_supported */
if ( !boot_cpu_has(X86_FEATURE_IBRS) )
- entry->edx &= !(1u << KVM_CPUID_BIT_IBRS);
+ entry->edx &= ~(1u << KVM_CPUID_BIT_IBRS);
if ( !boot_cpu_has(X86_FEATURE_STIBP) )
- entry->edx &= !(1u << KVM_CPUID_BIT_STIBP);
+ entry->edx &= ~(1u << KVM_CPUID_BIT_STIBP);
+ if ( !boot_cpu_has(X86_FEATURE_RDS) )
+ entry->edx &= ~(1u << KVM_CPUID_BIT_RDS);
} else {
entry->ebx = 0;
entry->edx = 0;