summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/x86/kvm/vmx/ops.h12
-rw-r--r--arch/x86/kvm/vmx/vmx.c3
2 files changed, 6 insertions, 9 deletions
diff --git a/arch/x86/kvm/vmx/ops.h b/arch/x86/kvm/vmx/ops.h
index 6e7ceb0a1c0f..c43853d2cdcc 100644
--- a/arch/x86/kvm/vmx/ops.h
+++ b/arch/x86/kvm/vmx/ops.h
@@ -291,17 +291,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 e671bcfa29c4..d973ff095066 100644
--- a/arch/x86/kvm/vmx/vmx.c
+++ b/arch/x86/kvm/vmx/vmx.c
@@ -2842,8 +2842,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.