diff options
author | Julia Cartwright <julia@ni.com> | 2018-02-26 11:22:02 -0600 |
---|---|---|
committer | Julia Cartwright <julia@ni.com> | 2018-02-26 11:22:02 -0600 |
commit | 184d107421c695782ae8cc976170e3cf83fbca9a (patch) | |
tree | 20d804c113e6fbc3a298b069b5a777fb81e194f4 /arch/x86/kvm/cpuid.h | |
parent | 90816cc1d4a1d23efe37b74866c6174dd5eab6b5 (diff) | |
parent | 19c04ca5b239e6e2277a5b381d1e79482ab9bbc5 (diff) | |
download | linux-rt-184d107421c695782ae8cc976170e3cf83fbca9a.tar.gz |
Merge tag 'v4.9.84' into v4.9-rt
This is the 4.9.84 stable release
Diffstat (limited to 'arch/x86/kvm/cpuid.h')
-rw-r--r-- | arch/x86/kvm/cpuid.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/arch/x86/kvm/cpuid.h b/arch/x86/kvm/cpuid.h index 9368fecca3ee..d1beb7156704 100644 --- a/arch/x86/kvm/cpuid.h +++ b/arch/x86/kvm/cpuid.h @@ -160,6 +160,37 @@ static inline bool guest_cpuid_has_rdtscp(struct kvm_vcpu *vcpu) return best && (best->edx & bit(X86_FEATURE_RDTSCP)); } +static inline bool guest_cpuid_has_ibpb(struct kvm_vcpu *vcpu) +{ + struct kvm_cpuid_entry2 *best; + + best = kvm_find_cpuid_entry(vcpu, 0x80000008, 0); + if (best && (best->ebx & bit(X86_FEATURE_IBPB))) + return true; + best = kvm_find_cpuid_entry(vcpu, 7, 0); + return best && (best->edx & bit(X86_FEATURE_SPEC_CTRL)); +} + +static inline bool guest_cpuid_has_ibrs(struct kvm_vcpu *vcpu) +{ + struct kvm_cpuid_entry2 *best; + + best = kvm_find_cpuid_entry(vcpu, 0x80000008, 0); + if (best && (best->ebx & bit(X86_FEATURE_IBRS))) + return true; + best = kvm_find_cpuid_entry(vcpu, 7, 0); + return best && (best->edx & bit(X86_FEATURE_SPEC_CTRL)); +} + +static inline bool guest_cpuid_has_arch_capabilities(struct kvm_vcpu *vcpu) +{ + struct kvm_cpuid_entry2 *best; + + best = kvm_find_cpuid_entry(vcpu, 7, 0); + return best && (best->edx & bit(X86_FEATURE_ARCH_CAPABILITIES)); +} + + /* * NRIPS is provided through cpuidfn 0x8000000a.edx bit 3 */ |