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>master
parent
6de23f81a5
commit
407fd8b8d8
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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++) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue