]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
KVM: remove CONFIG_KVM_GENERIC_MMU_NOTIFIER
authorPaolo Bonzini <pbonzini@redhat.com>
Wed, 11 Feb 2026 18:03:03 +0000 (19:03 +0100)
committerPaolo Bonzini <pbonzini@redhat.com>
Sat, 28 Feb 2026 14:31:35 +0000 (15:31 +0100)
All architectures now use MMU notifier for KVM page table management.
Remove the Kconfig symbol and the code that is used when it is
disabled.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/arm64/kvm/Kconfig
arch/loongarch/kvm/Kconfig
arch/mips/kvm/Kconfig
arch/powerpc/kvm/Kconfig
arch/powerpc/kvm/powerpc.c
arch/riscv/kvm/Kconfig
arch/s390/kvm/Kconfig
arch/x86/kvm/Kconfig
include/linux/kvm_host.h
virt/kvm/Kconfig
virt/kvm/kvm_main.c

index 4f803fd1c99afdaa3b7120f2df07a2a919e28f9e..7d1f22fd490b2d306f90bae92740be03c4d1f89b 100644 (file)
@@ -21,7 +21,6 @@ menuconfig KVM
        bool "Kernel-based Virtual Machine (KVM) support"
        select KVM_COMMON
        select KVM_GENERIC_HARDWARE_ENABLING
-       select KVM_GENERIC_MMU_NOTIFIER
        select HAVE_KVM_CPU_RELAX_INTERCEPT
        select KVM_MMIO
        select KVM_GENERIC_DIRTYLOG_READ_PROTECT
index ed4f724db77417e1666797295b1e150832ad3be5..8e521360997523596dac1a85c0e02dff5c2bac51 100644 (file)
@@ -28,7 +28,6 @@ config KVM
        select KVM_COMMON
        select KVM_GENERIC_DIRTYLOG_READ_PROTECT
        select KVM_GENERIC_HARDWARE_ENABLING
-       select KVM_GENERIC_MMU_NOTIFIER
        select KVM_MMIO
        select VIRT_XFER_TO_GUEST_WORK
        select SCHED_INFO
index cc13cc35f20831d5d84d82febe71f314ef808a4c..b1b9a1d677581ef0fd1e0ac878d11aea956b391f 100644 (file)
@@ -23,7 +23,6 @@ config KVM
        select KVM_COMMON
        select KVM_GENERIC_DIRTYLOG_READ_PROTECT
        select KVM_MMIO
-       select KVM_GENERIC_MMU_NOTIFIER
        select KVM_GENERIC_HARDWARE_ENABLING
        select HAVE_KVM_READONLY_MEM
        help
index c9a2d50ff1b0e225256f57c417324bf634c7e7d0..9a0d1c1aca6c80a866415d9da2d27dd1cc9ad768 100644 (file)
@@ -38,7 +38,6 @@ config KVM_BOOK3S_64_HANDLER
 config KVM_BOOK3S_PR_POSSIBLE
        bool
        select KVM_MMIO
-       select KVM_GENERIC_MMU_NOTIFIER
 
 config KVM_BOOK3S_HV_POSSIBLE
        bool
@@ -81,7 +80,6 @@ config KVM_BOOK3S_64_HV
        tristate "KVM for POWER7 and later using hypervisor mode in host"
        depends on KVM_BOOK3S_64 && PPC_POWERNV
        select KVM_BOOK3S_HV_POSSIBLE
-       select KVM_GENERIC_MMU_NOTIFIER
        select KVM_BOOK3S_HV_PMU
        select CMA
        help
@@ -203,7 +201,6 @@ config KVM_E500V2
        depends on !CONTEXT_TRACKING_USER
        select KVM
        select KVM_MMIO
-       select KVM_GENERIC_MMU_NOTIFIER
        help
          Support running unmodified E500 guest kernels in virtual machines on
          E500v2 host processors.
@@ -220,7 +217,6 @@ config KVM_E500MC
        select KVM
        select KVM_MMIO
        select KVM_BOOKE_HV
-       select KVM_GENERIC_MMU_NOTIFIER
        help
          Support running unmodified E500MC/E5500/E6500 guest kernels in
          virtual machines on E500MC/E5500/E6500 host processors.
index 9a89a6d98f97b35d411626f5280895d300f9ec28..3da40ea8c5623f6372e8b2abd954a11d896ad76e 100644 (file)
@@ -625,7 +625,6 @@ int kvm_vm_ioctl_check_extension(struct kvm *kvm, long ext)
                break;
 #endif
        case KVM_CAP_SYNC_MMU:
-               BUILD_BUG_ON(!IS_ENABLED(CONFIG_KVM_GENERIC_MMU_NOTIFIER));
                r = 1;
                break;
 #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
index 77379f77840ae9c90f9413270508c738dc5062e9..ec2cee0a39e01c89b7c2e7aa6dcda83d687015ae 100644 (file)
@@ -30,7 +30,6 @@ config KVM
        select KVM_GENERIC_HARDWARE_ENABLING
        select KVM_MMIO
        select VIRT_XFER_TO_GUEST_WORK
-       select KVM_GENERIC_MMU_NOTIFIER
        select SCHED_INFO
        select GUEST_PERF_EVENTS if PERF_EVENTS
        help
index 917ac740513e225cb55ca782430ebe87cde5b3be..5b835bc6a1941c758dcb116eb78c848ae5af3cbc 100644 (file)
@@ -28,9 +28,7 @@ config KVM
        select HAVE_KVM_INVALID_WAKEUPS
        select HAVE_KVM_NO_POLL
        select KVM_VFIO
-       select MMU_NOTIFIER
        select VIRT_XFER_TO_GUEST_WORK
-       select KVM_GENERIC_MMU_NOTIFIER
        select KVM_MMU_LOCKLESS_AGING
        help
          Support hosting paravirtualized guest machines using the SIE
index d916bd766c94d4614abe68b99d134fb24503b97c..801bf9e520db333764f7082d161d7b581fc61ab6 100644 (file)
@@ -20,7 +20,6 @@ if VIRTUALIZATION
 config KVM_X86
        def_tristate KVM if (KVM_INTEL != n || KVM_AMD != n)
        select KVM_COMMON
-       select KVM_GENERIC_MMU_NOTIFIER
        select KVM_ELIDE_TLB_FLUSH_IF_YOUNG
        select KVM_MMU_LOCKLESS_AGING
        select HAVE_KVM_IRQCHIP
index dde605cb894e5af840fea8629e924a9ee1470a07..34759a262b2892b54d2bef78029c06b55fff58e1 100644 (file)
@@ -253,7 +253,6 @@ bool kvm_setup_async_pf(struct kvm_vcpu *vcpu, gpa_t cr2_or_gpa,
 int kvm_async_pf_wakeup_all(struct kvm_vcpu *vcpu);
 #endif
 
-#ifdef CONFIG_KVM_GENERIC_MMU_NOTIFIER
 union kvm_mmu_notifier_arg {
        unsigned long attributes;
 };
@@ -275,7 +274,6 @@ struct kvm_gfn_range {
 bool kvm_unmap_gfn_range(struct kvm *kvm, struct kvm_gfn_range *range);
 bool kvm_age_gfn(struct kvm *kvm, struct kvm_gfn_range *range);
 bool kvm_test_age_gfn(struct kvm *kvm, struct kvm_gfn_range *range);
-#endif
 
 enum {
        OUTSIDE_GUEST_MODE,
@@ -849,13 +847,12 @@ struct kvm {
        struct hlist_head irq_ack_notifier_list;
 #endif
 
-#ifdef CONFIG_KVM_GENERIC_MMU_NOTIFIER
        struct mmu_notifier mmu_notifier;
        unsigned long mmu_invalidate_seq;
        long mmu_invalidate_in_progress;
        gfn_t mmu_invalidate_range_start;
        gfn_t mmu_invalidate_range_end;
-#endif
+
        struct list_head devices;
        u64 manual_dirty_log_protect;
        struct dentry *debugfs_dentry;
@@ -2118,7 +2115,6 @@ extern const struct _kvm_stats_desc kvm_vm_stats_desc[];
 extern const struct kvm_stats_header kvm_vcpu_stats_header;
 extern const struct _kvm_stats_desc kvm_vcpu_stats_desc[];
 
-#ifdef CONFIG_KVM_GENERIC_MMU_NOTIFIER
 static inline int mmu_invalidate_retry(struct kvm *kvm, unsigned long mmu_seq)
 {
        if (unlikely(kvm->mmu_invalidate_in_progress))
@@ -2196,7 +2192,6 @@ static inline bool mmu_invalidate_retry_gfn_unsafe(struct kvm *kvm,
 
        return READ_ONCE(kvm->mmu_invalidate_seq) != mmu_seq;
 }
-#endif
 
 #ifdef CONFIG_HAVE_KVM_IRQ_ROUTING
 
index 267c7369c765539cbb3c8dcd6abfa4f8d5b74a1e..794976b88c6f973bfae9119a30d7de753dabf97f 100644 (file)
@@ -5,6 +5,7 @@ config KVM_COMMON
        bool
        select EVENTFD
        select INTERVAL_TREE
+       select MMU_NOTIFIER
        select PREEMPT_NOTIFIERS
 
 config HAVE_KVM_PFNCACHE
@@ -93,24 +94,16 @@ config HAVE_KVM_PM_NOTIFIER
 config KVM_GENERIC_HARDWARE_ENABLING
        bool
 
-config KVM_GENERIC_MMU_NOTIFIER
-       select MMU_NOTIFIER
-       bool
-
 config KVM_ELIDE_TLB_FLUSH_IF_YOUNG
-       depends on KVM_GENERIC_MMU_NOTIFIER
        bool
 
 config KVM_MMU_LOCKLESS_AGING
-       depends on KVM_GENERIC_MMU_NOTIFIER
        bool
 
 config KVM_GENERIC_MEMORY_ATTRIBUTES
-       depends on KVM_GENERIC_MMU_NOTIFIER
        bool
 
 config KVM_GUEST_MEMFD
-       depends on KVM_GENERIC_MMU_NOTIFIER
        select XARRAY_MULTI
        bool
 
index 22f8a672e1fda88f5f8872caec16b2d898dc3bc6..29ee01747347eb16866e49b835e082d0d91dcf3f 100644 (file)
@@ -502,7 +502,6 @@ void kvm_destroy_vcpus(struct kvm *kvm)
 }
 EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_destroy_vcpus);
 
-#ifdef CONFIG_KVM_GENERIC_MMU_NOTIFIER
 static inline struct kvm *mmu_notifier_to_kvm(struct mmu_notifier *mn)
 {
        return container_of(mn, struct kvm, mmu_notifier);
@@ -901,15 +900,6 @@ static int kvm_init_mmu_notifier(struct kvm *kvm)
        return mmu_notifier_register(&kvm->mmu_notifier, current->mm);
 }
 
-#else  /* !CONFIG_KVM_GENERIC_MMU_NOTIFIER */
-
-static int kvm_init_mmu_notifier(struct kvm *kvm)
-{
-       return 0;
-}
-
-#endif /* CONFIG_KVM_GENERIC_MMU_NOTIFIER */
-
 #ifdef CONFIG_HAVE_KVM_PM_NOTIFIER
 static int kvm_pm_notifier_call(struct notifier_block *bl,
                                unsigned long state,
@@ -1226,10 +1216,8 @@ static struct kvm *kvm_create_vm(unsigned long type, const char *fdname)
 out_err_no_debugfs:
        kvm_coalesced_mmio_free(kvm);
 out_no_coalesced_mmio:
-#ifdef CONFIG_KVM_GENERIC_MMU_NOTIFIER
        if (kvm->mmu_notifier.ops)
                mmu_notifier_unregister(&kvm->mmu_notifier, current->mm);
-#endif
 out_err_no_mmu_notifier:
        kvm_disable_virtualization();
 out_err_no_disable:
@@ -1292,7 +1280,6 @@ static void kvm_destroy_vm(struct kvm *kvm)
                kvm->buses[i] = NULL;
        }
        kvm_coalesced_mmio_free(kvm);
-#ifdef CONFIG_KVM_GENERIC_MMU_NOTIFIER
        mmu_notifier_unregister(&kvm->mmu_notifier, kvm->mm);
        /*
         * At this point, pending calls to invalidate_range_start()
@@ -1311,9 +1298,6 @@ static void kvm_destroy_vm(struct kvm *kvm)
                kvm->mn_active_invalidate_count = 0;
        else
                WARN_ON(kvm->mmu_invalidate_in_progress);
-#else
-       kvm_flush_shadow_all(kvm);
-#endif
        kvm_arch_destroy_vm(kvm);
        kvm_destroy_devices(kvm);
        for (i = 0; i < kvm_arch_nr_memslot_as_ids(kvm); i++) {