|
@@ -135,6 +135,11 @@ static void kvm_uevent_notify_change(unsigned int type, struct kvm *kvm);
|
|
static unsigned long long kvm_createvm_count;
|
|
static unsigned long long kvm_createvm_count;
|
|
static unsigned long long kvm_active_vms;
|
|
static unsigned long long kvm_active_vms;
|
|
|
|
|
|
|
|
+__weak void kvm_arch_mmu_notifier_invalidate_range(struct kvm *kvm,
|
|
|
|
+ unsigned long start, unsigned long end)
|
|
|
|
+{
|
|
|
|
+}
|
|
|
|
+
|
|
bool kvm_is_reserved_pfn(kvm_pfn_t pfn)
|
|
bool kvm_is_reserved_pfn(kvm_pfn_t pfn)
|
|
{
|
|
{
|
|
if (pfn_valid(pfn))
|
|
if (pfn_valid(pfn))
|
|
@@ -360,6 +365,9 @@ static void kvm_mmu_notifier_invalidate_range_start(struct mmu_notifier *mn,
|
|
kvm_flush_remote_tlbs(kvm);
|
|
kvm_flush_remote_tlbs(kvm);
|
|
|
|
|
|
spin_unlock(&kvm->mmu_lock);
|
|
spin_unlock(&kvm->mmu_lock);
|
|
|
|
+
|
|
|
|
+ kvm_arch_mmu_notifier_invalidate_range(kvm, start, end);
|
|
|
|
+
|
|
srcu_read_unlock(&kvm->srcu, idx);
|
|
srcu_read_unlock(&kvm->srcu, idx);
|
|
}
|
|
}
|
|
|
|
|