KVM: VMX: Move vmx_flush_tlb() to vmx.c
Move vmx_flush_tlb() to vmx.c and make it non-inline static now that all its callers live in vmx.c. No functional change intended. Signed-off-by: Sean Christopherson <sean.j.christopherson@intel.com> Message-Id: <20200320212833.3507-19-sean.j.christopherson@intel.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
committed by
Paolo Bonzini
parent
72b3832087
commit
5058b692c6
@@ -2838,6 +2838,31 @@ static void exit_lmode(struct kvm_vcpu *vcpu)
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void vmx_flush_tlb(struct kvm_vcpu *vcpu)
|
||||||
|
{
|
||||||
|
struct vcpu_vmx *vmx = to_vmx(vcpu);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Flush all EPTP/VPID contexts, as the TLB flush _may_ have been
|
||||||
|
* invoked via kvm_flush_remote_tlbs(). Flushing remote TLBs requires
|
||||||
|
* all contexts to be flushed, not just the active context.
|
||||||
|
*
|
||||||
|
* Note, this also ensures a deferred TLB flush with VPID enabled and
|
||||||
|
* EPT disabled invalidates the "correct" VPID, by nuking both L1 and
|
||||||
|
* L2's VPIDs.
|
||||||
|
*/
|
||||||
|
if (enable_ept) {
|
||||||
|
ept_sync_global();
|
||||||
|
} else if (enable_vpid) {
|
||||||
|
if (cpu_has_vmx_invvpid_global()) {
|
||||||
|
vpid_sync_vcpu_global();
|
||||||
|
} else {
|
||||||
|
vpid_sync_vcpu_single(vmx->vpid);
|
||||||
|
vpid_sync_vcpu_single(vmx->nested.vpid02);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void vmx_flush_tlb_gva(struct kvm_vcpu *vcpu, gva_t addr)
|
static void vmx_flush_tlb_gva(struct kvm_vcpu *vcpu, gva_t addr)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -500,31 +500,6 @@ static inline struct vmcs *alloc_vmcs(bool shadow)
|
|||||||
|
|
||||||
u64 construct_eptp(struct kvm_vcpu *vcpu, unsigned long root_hpa);
|
u64 construct_eptp(struct kvm_vcpu *vcpu, unsigned long root_hpa);
|
||||||
|
|
||||||
static inline void vmx_flush_tlb(struct kvm_vcpu *vcpu)
|
|
||||||
{
|
|
||||||
struct vcpu_vmx *vmx = to_vmx(vcpu);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Flush all EPTP/VPID contexts, as the TLB flush _may_ have been
|
|
||||||
* invoked via kvm_flush_remote_tlbs(). Flushing remote TLBs requires
|
|
||||||
* all contexts to be flushed, not just the active context.
|
|
||||||
*
|
|
||||||
* Note, this also ensures a deferred TLB flush with VPID enabled and
|
|
||||||
* EPT disabled invalidates the "correct" VPID, by nuking both L1 and
|
|
||||||
* L2's VPIDs.
|
|
||||||
*/
|
|
||||||
if (enable_ept) {
|
|
||||||
ept_sync_global();
|
|
||||||
} else if (enable_vpid) {
|
|
||||||
if (cpu_has_vmx_invvpid_global()) {
|
|
||||||
vpid_sync_vcpu_global();
|
|
||||||
} else {
|
|
||||||
vpid_sync_vcpu_single(vmx->vpid);
|
|
||||||
vpid_sync_vcpu_single(vmx->nested.vpid02);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void decache_tsc_multiplier(struct vcpu_vmx *vmx)
|
static inline void decache_tsc_multiplier(struct vcpu_vmx *vmx)
|
||||||
{
|
{
|
||||||
vmx->current_tsc_ratio = vmx->vcpu.arch.tsc_scaling_ratio;
|
vmx->current_tsc_ratio = vmx->vcpu.arch.tsc_scaling_ratio;
|
||||||
|
|||||||
Reference in New Issue
Block a user