summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--virt/kvm/kvm_main.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
index 629760c0fb95..0f979f02bf1c 100644
--- a/virt/kvm/kvm_main.c
+++ b/virt/kvm/kvm_main.c
@@ -369,6 +369,14 @@ static int kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn,
int need_tlb_flush = 0, idx;
int ret;
+ /*
+ * Nothing to do when using change_pte() which will be call for each
+ * individual pte update at the right time. See mmu_notifier.h for more
+ * informations.
+ */
+ if (mmu_notifier_range_use_change_pte(range))
+ return 0;
+
idx = srcu_read_lock(&kvm->srcu);
spin_lock(&kvm->mmu_lock);
/*
@@ -399,6 +407,14 @@ static void kvm_mmu_notifier_invalidate_range_end(struct mmu_notifier *mn,
{
struct kvm *kvm = mmu_notifier_to_kvm(mn);
+ /*
+ * Nothing to do when using change_pte() which will be call for each
+ * individual pte update at the right time. See mmu_notifier.h for more
+ * informations.
+ */
+ if (mmu_notifier_range_use_change_pte(range))
+ return;
+
spin_lock(&kvm->mmu_lock);
/*
* This sequence increase will notify the kvm page fault that