]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
KVM: Make support for kvm_arch_vcpu_async_ioctl() mandatory
authorSean Christopherson <seanjc@google.com>
Thu, 30 Oct 2025 20:09:24 +0000 (13:09 -0700)
committerSean Christopherson <seanjc@google.com>
Wed, 5 Nov 2025 19:03:10 +0000 (11:03 -0800)
Implement kvm_arch_vcpu_async_ioctl() "natively" in x86 and arm64 instead
of relying on an #ifdef'd stub, and drop HAVE_KVM_VCPU_ASYNC_IOCTL in
anticipation of using the API on x86.  Once x86 uses the API, providing a
stub for one architecture and having all other architectures opt-in
requires more code than simply implementing the API in the lone holdout.

Eliminating the Kconfig will also reduce churn if the API is renamed in
the future (spoiler alert).

No functional change intended.

Acked-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Reviewed-by: Yan Zhao <yan.y.zhao@intel.com>
Tested-by: Yan Zhao <yan.y.zhao@intel.com>
Tested-by: Kai Huang <kai.huang@intel.com>
Link: https://patch.msgid.link/20251030200951.3402865-2-seanjc@google.com
Signed-off-by: Sean Christopherson <seanjc@google.com>
arch/arm64/kvm/arm.c
arch/loongarch/kvm/Kconfig
arch/mips/kvm/Kconfig
arch/powerpc/kvm/Kconfig
arch/riscv/kvm/Kconfig
arch/s390/kvm/Kconfig
arch/x86/kvm/x86.c
include/linux/kvm_host.h
virt/kvm/Kconfig

index 870953b4a8a74f0b51ffb444920604ee29f8b6ff..ef5bf57f79b702dbd45e54258f6ebf2d276c7cba 100644 (file)
@@ -1835,6 +1835,12 @@ long kvm_arch_vcpu_ioctl(struct file *filp,
        return r;
 }
 
+long kvm_arch_vcpu_async_ioctl(struct file *filp, unsigned int ioctl,
+                              unsigned long arg)
+{
+       return -ENOIOCTLCMD;
+}
+
 void kvm_arch_sync_dirty_log(struct kvm *kvm, struct kvm_memory_slot *memslot)
 {
 
index ae64bbdf83a7a490153b2a5a77cd34b6226e58d0..ed4f724db77417e1666797295b1e150832ad3be5 100644 (file)
@@ -25,7 +25,6 @@ config KVM
        select HAVE_KVM_IRQCHIP
        select HAVE_KVM_MSI
        select HAVE_KVM_READONLY_MEM
-       select HAVE_KVM_VCPU_ASYNC_IOCTL
        select KVM_COMMON
        select KVM_GENERIC_DIRTYLOG_READ_PROTECT
        select KVM_GENERIC_HARDWARE_ENABLING
index ab57221fa4ddef542dde61284045de59cb9350af..cc13cc35f20831d5d84d82febe71f314ef808a4c 100644 (file)
@@ -22,7 +22,6 @@ config KVM
        select EXPORT_UASM
        select KVM_COMMON
        select KVM_GENERIC_DIRTYLOG_READ_PROTECT
-       select HAVE_KVM_VCPU_ASYNC_IOCTL
        select KVM_MMIO
        select KVM_GENERIC_MMU_NOTIFIER
        select KVM_GENERIC_HARDWARE_ENABLING
index 2f2702c867f76934fbfe7b8f8f9a82cf8f9cb1a4..c9a2d50ff1b0e225256f57c417324bf634c7e7d0 100644 (file)
@@ -20,7 +20,6 @@ if VIRTUALIZATION
 config KVM
        bool
        select KVM_COMMON
-       select HAVE_KVM_VCPU_ASYNC_IOCTL
        select KVM_VFIO
        select HAVE_KVM_IRQ_BYPASS
 
index c50328212917ec6b54919ff6a8b49344569f7a5d..77379f77840ae9c90f9413270508c738dc5062e9 100644 (file)
@@ -23,7 +23,6 @@ config KVM
        select HAVE_KVM_IRQCHIP
        select HAVE_KVM_IRQ_ROUTING
        select HAVE_KVM_MSI
-       select HAVE_KVM_VCPU_ASYNC_IOCTL
        select HAVE_KVM_READONLY_MEM
        select HAVE_KVM_DIRTY_RING_ACQ_REL
        select KVM_COMMON
index cae908d645501ef7eb4edbe87b8431f6499370a4..96d16028e8b7f9e20ac641717b5f8da052a25368 100644 (file)
@@ -20,7 +20,6 @@ config KVM
        def_tristate y
        prompt "Kernel-based Virtual Machine (KVM) support"
        select HAVE_KVM_CPU_RELAX_INTERCEPT
-       select HAVE_KVM_VCPU_ASYNC_IOCTL
        select KVM_ASYNC_PF
        select KVM_ASYNC_PF_SYNC
        select KVM_COMMON
index b4b5d2d0963467a81c7cc00575547619654295c6..ca5ba2caf314ffc45fccb1f16af127febacbe390 100644 (file)
@@ -7240,6 +7240,12 @@ static int kvm_vm_ioctl_set_clock(struct kvm *kvm, void __user *argp)
        return 0;
 }
 
+long kvm_arch_vcpu_async_ioctl(struct file *filp, unsigned int ioctl,
+                              unsigned long arg)
+{
+       return -ENOIOCTLCMD;
+}
+
 int kvm_arch_vm_ioctl(struct file *filp, unsigned int ioctl, unsigned long arg)
 {
        struct kvm *kvm = filp->private_data;
index 5bd76cf394fa4769e24574df04fbc7370bb390ee..7186b2ae4b570aabca5dbc4bb127947568ad95fd 100644 (file)
@@ -2437,18 +2437,8 @@ static inline bool kvm_arch_no_poll(struct kvm_vcpu *vcpu)
 }
 #endif /* CONFIG_HAVE_KVM_NO_POLL */
 
-#ifdef CONFIG_HAVE_KVM_VCPU_ASYNC_IOCTL
 long kvm_arch_vcpu_async_ioctl(struct file *filp,
                               unsigned int ioctl, unsigned long arg);
-#else
-static inline long kvm_arch_vcpu_async_ioctl(struct file *filp,
-                                            unsigned int ioctl,
-                                            unsigned long arg)
-{
-       return -ENOIOCTLCMD;
-}
-#endif /* CONFIG_HAVE_KVM_VCPU_ASYNC_IOCTL */
-
 void kvm_arch_guest_memory_reclaimed(struct kvm *kvm);
 
 #ifdef CONFIG_HAVE_KVM_VCPU_RUN_PID_CHANGE
index 5f0015c5dd9570bba6ce8d970ae81e5c2e8e09f0..267c7369c765539cbb3c8dcd6abfa4f8d5b74a1e 100644 (file)
@@ -78,9 +78,6 @@ config HAVE_KVM_IRQ_BYPASS
        tristate
        select IRQ_BYPASS_MANAGER
 
-config HAVE_KVM_VCPU_ASYNC_IOCTL
-       bool
-
 config HAVE_KVM_VCPU_RUN_PID_CHANGE
        bool