Sean Christopherson <sean.j.christopherson@xxxxxxxxx> writes: > 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@xxxxxxxxx> > --- > arch/x86/kvm/vmx/vmx.c | 25 +++++++++++++++++++++++++ > arch/x86/kvm/vmx/vmx.h | 25 ------------------------- > 2 files changed, 25 insertions(+), 25 deletions(-) > > diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c > index 477bdbc52ed0..c6affaaef138 100644 > --- a/arch/x86/kvm/vmx/vmx.c > +++ b/arch/x86/kvm/vmx/vmx.c > @@ -2849,6 +2849,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) > { > /* > diff --git a/arch/x86/kvm/vmx/vmx.h b/arch/x86/kvm/vmx/vmx.h > index bab5d62ad964..571249e18bb6 100644 > --- a/arch/x86/kvm/vmx/vmx.h > +++ b/arch/x86/kvm/vmx/vmx.h > @@ -503,31 +503,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; Reviewed-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> -- Vitaly