KVM: x86: Move VMX's host_efer to common x86 code
Move host_efer to common x86 code and use it for CPUID's is_efer_nx() to avoid constantly re-reading the MSR. No functional change intended. Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com> Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
600087b614
commit
91661989d1
@ -1271,6 +1271,8 @@ struct kvm_arch_async_pf {
|
||||
bool direct_map;
|
||||
};
|
||||
|
||||
extern u64 __read_mostly host_efer;
|
||||
|
||||
extern struct kvm_x86_ops *kvm_x86_ops;
|
||||
extern struct kmem_cache *x86_fpu_cache;
|
||||
|
||||
|
@ -134,10 +134,7 @@ int kvm_update_cpuid(struct kvm_vcpu *vcpu)
|
||||
|
||||
static int is_efer_nx(void)
|
||||
{
|
||||
unsigned long long efer = 0;
|
||||
|
||||
rdmsrl_safe(MSR_EFER, &efer);
|
||||
return efer & EFER_NX;
|
||||
return host_efer & EFER_NX;
|
||||
}
|
||||
|
||||
static void cpuid_fix_nx_cap(struct kvm_vcpu *vcpu)
|
||||
|
@ -433,7 +433,6 @@ static const struct kvm_vmx_segment_field {
|
||||
VMX_SEGMENT_FIELD(LDTR),
|
||||
};
|
||||
|
||||
u64 host_efer;
|
||||
static unsigned long host_idt_base;
|
||||
|
||||
/*
|
||||
@ -7646,8 +7645,6 @@ static __init int hardware_setup(void)
|
||||
struct desc_ptr dt;
|
||||
int r, i, ept_lpage_level;
|
||||
|
||||
rdmsrl_safe(MSR_EFER, &host_efer);
|
||||
|
||||
store_idt(&dt);
|
||||
host_idt_base = dt.address;
|
||||
|
||||
|
@ -12,7 +12,6 @@
|
||||
#include "vmcs.h"
|
||||
|
||||
extern const u32 vmx_msr_index[];
|
||||
extern u64 host_efer;
|
||||
|
||||
extern u32 get_umwait_control_msr(void);
|
||||
|
||||
|
@ -186,6 +186,9 @@ static struct kvm_shared_msrs __percpu *shared_msrs;
|
||||
| XFEATURE_MASK_BNDCSR | XFEATURE_MASK_AVX512 \
|
||||
| XFEATURE_MASK_PKRU)
|
||||
|
||||
u64 __read_mostly host_efer;
|
||||
EXPORT_SYMBOL_GPL(host_efer);
|
||||
|
||||
static u64 __read_mostly host_xss;
|
||||
|
||||
struct kvm_stats_debugfs_item debugfs_entries[] = {
|
||||
@ -9612,6 +9615,8 @@ int kvm_arch_hardware_setup(void)
|
||||
{
|
||||
int r;
|
||||
|
||||
rdmsrl_safe(MSR_EFER, &host_efer);
|
||||
|
||||
r = kvm_x86_ops->hardware_setup();
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
Loading…
Reference in New Issue
Block a user