Sean Christopherson <sean.j.christopherson@xxxxxxxxx> writes: > Directly invoke vpid_sync_context() to do a global INVVPID when the > individual address variant is not supported instead of deferring such > behavior to the caller. This allows for additional consolidation of > code as the logic is basically identical to the emulation of the > individual address variant in handle_invvpid(). > > No functional change intended. > > Signed-off-by: Sean Christopherson <sean.j.christopherson@xxxxxxxxx> > --- > arch/x86/kvm/vmx/ops.h | 12 +++++------- > arch/x86/kvm/vmx/vmx.c | 3 +-- > 2 files changed, 6 insertions(+), 9 deletions(-) > > diff --git a/arch/x86/kvm/vmx/ops.h b/arch/x86/kvm/vmx/ops.h > index a2b0689e65e3..612df1bdb26b 100644 > --- a/arch/x86/kvm/vmx/ops.h > +++ b/arch/x86/kvm/vmx/ops.h > @@ -276,17 +276,15 @@ static inline void vpid_sync_context(int vpid) > vpid_sync_vcpu_global(); > } > > -static inline bool vpid_sync_vcpu_addr(int vpid, gva_t addr) > +static inline void vpid_sync_vcpu_addr(int vpid, gva_t addr) > { > if (vpid == 0) > - return true; > + return; > > - if (cpu_has_vmx_invvpid_individual_addr()) { > + if (cpu_has_vmx_invvpid_individual_addr()) > __invvpid(VMX_VPID_EXTENT_INDIVIDUAL_ADDR, vpid, addr); > - return true; > - } > - > - return false; > + else > + vpid_sync_context(vpid); > } > > static inline void ept_sync_global(void) > diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c > index 9a6664886f2e..349a6e054e0e 100644 > --- a/arch/x86/kvm/vmx/vmx.c > +++ b/arch/x86/kvm/vmx/vmx.c > @@ -2826,8 +2826,7 @@ static void vmx_flush_tlb_gva(struct kvm_vcpu *vcpu, gva_t addr) > { > int vpid = to_vmx(vcpu)->vpid; > > - if (!vpid_sync_vcpu_addr(vpid, addr)) > - vpid_sync_context(vpid); > + vpid_sync_vcpu_addr(vpid, addr); > > /* > * If VPIDs are not supported or enabled, then the above is a no-op. Reviewed-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> -- Vitaly