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:
parent
72b3832087
commit
5058b692c6
@ -2838,6 +2838,31 @@ static void exit_lmode(struct kvm_vcpu *vcpu)
|
||||
|
||||
#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)
|
||||
{
|
||||
/*
|
||||
|
@ -500,31 +500,6 @@ static inline struct vmcs *alloc_vmcs(bool shadow)
|
||||
|
||||
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)
|
||||
{
|
||||
vmx->current_tsc_ratio = vmx->vcpu.arch.tsc_scaling_ratio;
|
||||
|
Loading…
x
Reference in New Issue
Block a user