1 #ifndef ARCH_X86_KVM_CPUID_H
2 #define ARCH_X86_KVM_CPUID_H
6 void kvm_update_cpuid(struct kvm_vcpu
*vcpu
);
7 struct kvm_cpuid_entry2
*kvm_find_cpuid_entry(struct kvm_vcpu
*vcpu
,
8 u32 function
, u32 index
);
9 int kvm_dev_ioctl_get_supported_cpuid(struct kvm_cpuid2
*cpuid
,
10 struct kvm_cpuid_entry2 __user
*entries
);
11 int kvm_vcpu_ioctl_set_cpuid(struct kvm_vcpu
*vcpu
,
12 struct kvm_cpuid
*cpuid
,
13 struct kvm_cpuid_entry __user
*entries
);
14 int kvm_vcpu_ioctl_set_cpuid2(struct kvm_vcpu
*vcpu
,
15 struct kvm_cpuid2
*cpuid
,
16 struct kvm_cpuid_entry2 __user
*entries
);
17 int kvm_vcpu_ioctl_get_cpuid2(struct kvm_vcpu
*vcpu
,
18 struct kvm_cpuid2
*cpuid
,
19 struct kvm_cpuid_entry2 __user
*entries
);
22 static inline bool guest_cpuid_has_xsave(struct kvm_vcpu
*vcpu
)
24 struct kvm_cpuid_entry2
*best
;
26 best
= kvm_find_cpuid_entry(vcpu
, 1, 0);
27 return best
&& (best
->ecx
& bit(X86_FEATURE_XSAVE
));
30 static inline bool guest_cpuid_has_smep(struct kvm_vcpu
*vcpu
)
32 struct kvm_cpuid_entry2
*best
;
34 best
= kvm_find_cpuid_entry(vcpu
, 7, 0);
35 return best
&& (best
->ebx
& bit(X86_FEATURE_SMEP
));
38 static inline bool guest_cpuid_has_fsgsbase(struct kvm_vcpu
*vcpu
)
40 struct kvm_cpuid_entry2
*best
;
42 best
= kvm_find_cpuid_entry(vcpu
, 7, 0);
43 return best
&& (best
->ebx
& bit(X86_FEATURE_FSGSBASE
));