|
@@ -789,11 +789,19 @@ static int kvm_mmu_notifier_clear_flush_young(struct mmu_notifier *mn,
|
|
|
return young;
|
|
|
}
|
|
|
|
|
|
+static void kvm_mmu_notifier_release(struct mmu_notifier *mn,
|
|
|
+ struct mm_struct *mm)
|
|
|
+{
|
|
|
+ struct kvm *kvm = mmu_notifier_to_kvm(mn);
|
|
|
+ kvm_arch_flush_shadow(kvm);
|
|
|
+}
|
|
|
+
|
|
|
static const struct mmu_notifier_ops kvm_mmu_notifier_ops = {
|
|
|
.invalidate_page = kvm_mmu_notifier_invalidate_page,
|
|
|
.invalidate_range_start = kvm_mmu_notifier_invalidate_range_start,
|
|
|
.invalidate_range_end = kvm_mmu_notifier_invalidate_range_end,
|
|
|
.clear_flush_young = kvm_mmu_notifier_clear_flush_young,
|
|
|
+ .release = kvm_mmu_notifier_release,
|
|
|
};
|
|
|
#endif /* CONFIG_MMU_NOTIFIER && KVM_ARCH_WANT_MMU_NOTIFIER */
|
|
|
|