KVM: VMX: Expose nested_vmx_allowed() to nested VMX as a non-inline
Exposing only the function allows @nested, i.e. the module param, to be statically defined in vmx.c, ensuring we aren't unnecessarily checking said variable in the nested code. nested_vmx_allowed() is exposed due to the need to verify nested support in vmx_{get,set}_nested_state(). The downside is that nested_vmx_allowed() likely won't be inlined in vmx_{get,set}_nested_state(), but that should be a non-issue as they're not a hot path. Keeping vmx_{get,set}_nested_state() in vmx.c isn't a viable option as they need access to several nested-only functions. Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
97b7ead392
commit
7c97fcb3b6
@ -698,6 +698,15 @@ struct shared_msr_entry *find_msr_entry(struct vcpu_vmx *vmx, u32 msr)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void loaded_vmcs_init(struct loaded_vmcs *loaded_vmcs)
|
||||||
|
{
|
||||||
|
vmcs_clear(loaded_vmcs->vmcs);
|
||||||
|
if (loaded_vmcs->shadow_vmcs && loaded_vmcs->launched)
|
||||||
|
vmcs_clear(loaded_vmcs->shadow_vmcs);
|
||||||
|
loaded_vmcs->cpu = -1;
|
||||||
|
loaded_vmcs->launched = 0;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_KEXEC_CORE
|
#ifdef CONFIG_KEXEC_CORE
|
||||||
/*
|
/*
|
||||||
* This bitmap is used to indicate whether the vmclear
|
* This bitmap is used to indicate whether the vmclear
|
||||||
@ -1722,7 +1731,7 @@ static u64 vmx_write_l1_tsc_offset(struct kvm_vcpu *vcpu, u64 offset)
|
|||||||
* all guests if the "nested" module option is off, and can also be disabled
|
* all guests if the "nested" module option is off, and can also be disabled
|
||||||
* for a single guest by disabling its VMX cpuid bit.
|
* for a single guest by disabling its VMX cpuid bit.
|
||||||
*/
|
*/
|
||||||
static inline bool nested_vmx_allowed(struct kvm_vcpu *vcpu)
|
bool nested_vmx_allowed(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
return nested && guest_cpuid_has(vcpu, X86_FEATURE_VMX);
|
return nested && guest_cpuid_has(vcpu, X86_FEATURE_VMX);
|
||||||
}
|
}
|
||||||
|
@ -267,6 +267,7 @@ struct kvm_vmx {
|
|||||||
spinlock_t ept_pointer_lock;
|
spinlock_t ept_pointer_lock;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool nested_vmx_allowed(struct kvm_vcpu *vcpu);
|
||||||
void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu);
|
void vmx_vcpu_load(struct kvm_vcpu *vcpu, int cpu);
|
||||||
void vmx_vcpu_put(struct kvm_vcpu *vcpu);
|
void vmx_vcpu_put(struct kvm_vcpu *vcpu);
|
||||||
int allocate_vpid(void);
|
int allocate_vpid(void);
|
||||||
|
Loading…
Reference in New Issue
Block a user