Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

KVM: remove CONFIG_KVM_GENERIC_MMU_NOTIFIER

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>

+2 -42
-1
arch/arm64/kvm/Kconfig
··· 21 21 bool "Kernel-based Virtual Machine (KVM) support" 22 22 select KVM_COMMON 23 23 select KVM_GENERIC_HARDWARE_ENABLING 24 - select KVM_GENERIC_MMU_NOTIFIER 25 24 select HAVE_KVM_CPU_RELAX_INTERCEPT 26 25 select KVM_MMIO 27 26 select KVM_GENERIC_DIRTYLOG_READ_PROTECT
-1
arch/loongarch/kvm/Kconfig
··· 28 28 select KVM_COMMON 29 29 select KVM_GENERIC_DIRTYLOG_READ_PROTECT 30 30 select KVM_GENERIC_HARDWARE_ENABLING 31 - select KVM_GENERIC_MMU_NOTIFIER 32 31 select KVM_MMIO 33 32 select VIRT_XFER_TO_GUEST_WORK 34 33 select SCHED_INFO
-1
arch/mips/kvm/Kconfig
··· 23 23 select KVM_COMMON 24 24 select KVM_GENERIC_DIRTYLOG_READ_PROTECT 25 25 select KVM_MMIO 26 - select KVM_GENERIC_MMU_NOTIFIER 27 26 select KVM_GENERIC_HARDWARE_ENABLING 28 27 select HAVE_KVM_READONLY_MEM 29 28 help
-4
arch/powerpc/kvm/Kconfig
··· 38 38 config KVM_BOOK3S_PR_POSSIBLE 39 39 bool 40 40 select KVM_MMIO 41 - select KVM_GENERIC_MMU_NOTIFIER 42 41 43 42 config KVM_BOOK3S_HV_POSSIBLE 44 43 bool ··· 80 81 tristate "KVM for POWER7 and later using hypervisor mode in host" 81 82 depends on KVM_BOOK3S_64 && PPC_POWERNV 82 83 select KVM_BOOK3S_HV_POSSIBLE 83 - select KVM_GENERIC_MMU_NOTIFIER 84 84 select KVM_BOOK3S_HV_PMU 85 85 select CMA 86 86 help ··· 201 203 depends on !CONTEXT_TRACKING_USER 202 204 select KVM 203 205 select KVM_MMIO 204 - select KVM_GENERIC_MMU_NOTIFIER 205 206 help 206 207 Support running unmodified E500 guest kernels in virtual machines on 207 208 E500v2 host processors. ··· 217 220 select KVM 218 221 select KVM_MMIO 219 222 select KVM_BOOKE_HV 220 - select KVM_GENERIC_MMU_NOTIFIER 221 223 help 222 224 Support running unmodified E500MC/E5500/E6500 guest kernels in 223 225 virtual machines on E500MC/E5500/E6500 host processors.
-1
arch/powerpc/kvm/powerpc.c
··· 625 625 break; 626 626 #endif 627 627 case KVM_CAP_SYNC_MMU: 628 - BUILD_BUG_ON(!IS_ENABLED(CONFIG_KVM_GENERIC_MMU_NOTIFIER)); 629 628 r = 1; 630 629 break; 631 630 #ifdef CONFIG_KVM_BOOK3S_HV_POSSIBLE
-1
arch/riscv/kvm/Kconfig
··· 30 30 select KVM_GENERIC_HARDWARE_ENABLING 31 31 select KVM_MMIO 32 32 select VIRT_XFER_TO_GUEST_WORK 33 - select KVM_GENERIC_MMU_NOTIFIER 34 33 select SCHED_INFO 35 34 select GUEST_PERF_EVENTS if PERF_EVENTS 36 35 help
-2
arch/s390/kvm/Kconfig
··· 28 28 select HAVE_KVM_INVALID_WAKEUPS 29 29 select HAVE_KVM_NO_POLL 30 30 select KVM_VFIO 31 - select MMU_NOTIFIER 32 31 select VIRT_XFER_TO_GUEST_WORK 33 - select KVM_GENERIC_MMU_NOTIFIER 34 32 select KVM_MMU_LOCKLESS_AGING 35 33 help 36 34 Support hosting paravirtualized guest machines using the SIE
-1
arch/x86/kvm/Kconfig
··· 20 20 config KVM_X86 21 21 def_tristate KVM if (KVM_INTEL != n || KVM_AMD != n) 22 22 select KVM_COMMON 23 - select KVM_GENERIC_MMU_NOTIFIER 24 23 select KVM_ELIDE_TLB_FLUSH_IF_YOUNG 25 24 select KVM_MMU_LOCKLESS_AGING 26 25 select HAVE_KVM_IRQCHIP
+1 -6
include/linux/kvm_host.h
··· 253 253 int kvm_async_pf_wakeup_all(struct kvm_vcpu *vcpu); 254 254 #endif 255 255 256 - #ifdef CONFIG_KVM_GENERIC_MMU_NOTIFIER 257 256 union kvm_mmu_notifier_arg { 258 257 unsigned long attributes; 259 258 }; ··· 274 275 bool kvm_unmap_gfn_range(struct kvm *kvm, struct kvm_gfn_range *range); 275 276 bool kvm_age_gfn(struct kvm *kvm, struct kvm_gfn_range *range); 276 277 bool kvm_test_age_gfn(struct kvm *kvm, struct kvm_gfn_range *range); 277 - #endif 278 278 279 279 enum { 280 280 OUTSIDE_GUEST_MODE, ··· 847 849 struct hlist_head irq_ack_notifier_list; 848 850 #endif 849 851 850 - #ifdef CONFIG_KVM_GENERIC_MMU_NOTIFIER 851 852 struct mmu_notifier mmu_notifier; 852 853 unsigned long mmu_invalidate_seq; 853 854 long mmu_invalidate_in_progress; 854 855 gfn_t mmu_invalidate_range_start; 855 856 gfn_t mmu_invalidate_range_end; 856 - #endif 857 + 857 858 struct list_head devices; 858 859 u64 manual_dirty_log_protect; 859 860 struct dentry *debugfs_dentry; ··· 2115 2118 extern const struct kvm_stats_header kvm_vcpu_stats_header; 2116 2119 extern const struct _kvm_stats_desc kvm_vcpu_stats_desc[]; 2117 2120 2118 - #ifdef CONFIG_KVM_GENERIC_MMU_NOTIFIER 2119 2121 static inline int mmu_invalidate_retry(struct kvm *kvm, unsigned long mmu_seq) 2120 2122 { 2121 2123 if (unlikely(kvm->mmu_invalidate_in_progress)) ··· 2192 2196 2193 2197 return READ_ONCE(kvm->mmu_invalidate_seq) != mmu_seq; 2194 2198 } 2195 - #endif 2196 2199 2197 2200 #ifdef CONFIG_HAVE_KVM_IRQ_ROUTING 2198 2201
+1 -8
virt/kvm/Kconfig
··· 5 5 bool 6 6 select EVENTFD 7 7 select INTERVAL_TREE 8 + select MMU_NOTIFIER 8 9 select PREEMPT_NOTIFIERS 9 10 10 11 config HAVE_KVM_PFNCACHE ··· 94 93 config KVM_GENERIC_HARDWARE_ENABLING 95 94 bool 96 95 97 - config KVM_GENERIC_MMU_NOTIFIER 98 - select MMU_NOTIFIER 99 - bool 100 - 101 96 config KVM_ELIDE_TLB_FLUSH_IF_YOUNG 102 - depends on KVM_GENERIC_MMU_NOTIFIER 103 97 bool 104 98 105 99 config KVM_MMU_LOCKLESS_AGING 106 - depends on KVM_GENERIC_MMU_NOTIFIER 107 100 bool 108 101 109 102 config KVM_GENERIC_MEMORY_ATTRIBUTES 110 - depends on KVM_GENERIC_MMU_NOTIFIER 111 103 bool 112 104 113 105 config KVM_GUEST_MEMFD 114 - depends on KVM_GENERIC_MMU_NOTIFIER 115 106 select XARRAY_MULTI 116 107 bool 117 108
-16
virt/kvm/kvm_main.c
··· 502 502 } 503 503 EXPORT_SYMBOL_FOR_KVM_INTERNAL(kvm_destroy_vcpus); 504 504 505 - #ifdef CONFIG_KVM_GENERIC_MMU_NOTIFIER 506 505 static inline struct kvm *mmu_notifier_to_kvm(struct mmu_notifier *mn) 507 506 { 508 507 return container_of(mn, struct kvm, mmu_notifier); ··· 900 901 return mmu_notifier_register(&kvm->mmu_notifier, current->mm); 901 902 } 902 903 903 - #else /* !CONFIG_KVM_GENERIC_MMU_NOTIFIER */ 904 - 905 - static int kvm_init_mmu_notifier(struct kvm *kvm) 906 - { 907 - return 0; 908 - } 909 - 910 - #endif /* CONFIG_KVM_GENERIC_MMU_NOTIFIER */ 911 - 912 904 #ifdef CONFIG_HAVE_KVM_PM_NOTIFIER 913 905 static int kvm_pm_notifier_call(struct notifier_block *bl, 914 906 unsigned long state, ··· 1216 1226 out_err_no_debugfs: 1217 1227 kvm_coalesced_mmio_free(kvm); 1218 1228 out_no_coalesced_mmio: 1219 - #ifdef CONFIG_KVM_GENERIC_MMU_NOTIFIER 1220 1229 if (kvm->mmu_notifier.ops) 1221 1230 mmu_notifier_unregister(&kvm->mmu_notifier, current->mm); 1222 - #endif 1223 1231 out_err_no_mmu_notifier: 1224 1232 kvm_disable_virtualization(); 1225 1233 out_err_no_disable: ··· 1280 1292 kvm->buses[i] = NULL; 1281 1293 } 1282 1294 kvm_coalesced_mmio_free(kvm); 1283 - #ifdef CONFIG_KVM_GENERIC_MMU_NOTIFIER 1284 1295 mmu_notifier_unregister(&kvm->mmu_notifier, kvm->mm); 1285 1296 /* 1286 1297 * At this point, pending calls to invalidate_range_start() ··· 1298 1311 kvm->mn_active_invalidate_count = 0; 1299 1312 else 1300 1313 WARN_ON(kvm->mmu_invalidate_in_progress); 1301 - #else 1302 - kvm_flush_shadow_all(kvm); 1303 - #endif 1304 1314 kvm_arch_destroy_vm(kvm); 1305 1315 kvm_destroy_devices(kvm); 1306 1316 for (i = 0; i < kvm_arch_nr_memslot_as_ids(kvm); i++) {