KVM: Remove on_each_cpu(hardware_disable_nolock) in kvm_exit()
authorIsaku Yamahata <isaku.yamahata@intel.com>
Wed, 30 Nov 2022 23:09:29 +0000 (23:09 +0000)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 29 Dec 2022 20:48:34 +0000 (15:48 -0500)
Drop the superfluous invocation of hardware_disable_nolock() during
kvm_exit(), as it's nothing more than a glorified nop.

KVM automatically disables hardware on all CPUs when the last VM is
destroyed, and kvm_exit() cannot be called until the last VM goes
away as the calling module is pinned by an elevated refcount of the fops
associated with /dev/kvm.  This holds true even on x86, where the caller
of kvm_exit() is not kvm.ko, but is instead a dependent module, kvm_amd.ko
or kvm_intel.ko, as kvm_chardev_ops.owner is set to the module that calls
kvm_init(), not hardcoded to the base kvm.ko module.

Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
[sean: rework changelog]
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20221130230934.1014142-46-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
virt/kvm/kvm_main.c

index f6caee790dc828d1988e296efbf1b84fe1bf08f6..d1ed34856412fc836e76a32ce6090c72ad5bd8d5 100644 (file)
@@ -6050,7 +6050,6 @@ void kvm_exit(void)
        unregister_syscore_ops(&kvm_syscore_ops);
        unregister_reboot_notifier(&kvm_reboot_notifier);
        cpuhp_remove_state_nocalls(CPUHP_AP_KVM_ONLINE);
-       on_each_cpu(hardware_disable_nolock, NULL, 1);
        kvm_irqfd_exit();
        free_cpumask_var(cpus_hardware_enabled);
 }