]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
vfio/virtio: Convert to the get_region_info op
authorJason Gunthorpe <jgg@nvidia.com>
Fri, 7 Nov 2025 17:41:19 +0000 (13:41 -0400)
committerAlex Williamson <alex@shazbot.org>
Wed, 12 Nov 2025 22:05:02 +0000 (15:05 -0700)
Remove virtiovf_vfio_pci_core_ioctl() and change the signature of
virtiovf_pci_ioctl_get_region_info().

Reviewed-by: Kevin Tian <kevin.tian@intel.com>
Reviewed-by: Pranjal Shrivastava <praan@google.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/3-v2-2a9e24d62f1b+e10a-vfio_get_region_info_op_jgg@nvidia.com
Signed-off-by: Alex Williamson <alex@shazbot.org>
drivers/vfio/pci/virtio/common.h
drivers/vfio/pci/virtio/legacy_io.c
drivers/vfio/pci/virtio/main.c

index c7d7e27af386e989b04452e0373bbbace23555a5..a10f2d92cb6238b25776f083ba58bbd84d92e2d4 100644 (file)
@@ -109,10 +109,8 @@ void virtiovf_migration_reset_done(struct pci_dev *pdev);
 
 #ifdef CONFIG_VIRTIO_VFIO_PCI_ADMIN_LEGACY
 int virtiovf_open_legacy_io(struct virtiovf_pci_core_device *virtvdev);
-long virtiovf_vfio_pci_core_ioctl(struct vfio_device *core_vdev,
-                                 unsigned int cmd, unsigned long arg);
 int virtiovf_pci_ioctl_get_region_info(struct vfio_device *core_vdev,
-                                      unsigned int cmd, unsigned long arg);
+                                      struct vfio_region_info __user *arg);
 ssize_t virtiovf_pci_core_write(struct vfio_device *core_vdev,
                                const char __user *buf, size_t count,
                                loff_t *ppos);
index 832af5ba267c49a079009cfe0fa93c15ba7a490f..d735d5c4bd7775e75c6a2d42aa1abbf2c4ddfe44 100644 (file)
@@ -281,15 +281,14 @@ ssize_t virtiovf_pci_core_write(struct vfio_device *core_vdev, const char __user
 }
 
 int virtiovf_pci_ioctl_get_region_info(struct vfio_device *core_vdev,
-                                      unsigned int cmd, unsigned long arg)
+                                      struct vfio_region_info __user *arg)
 {
        struct virtiovf_pci_core_device *virtvdev = container_of(
                core_vdev, struct virtiovf_pci_core_device, core_device.vdev);
        unsigned long minsz = offsetofend(struct vfio_region_info, offset);
-       void __user *uarg = (void __user *)arg;
        struct vfio_region_info info = {};
 
-       if (copy_from_user(&info, uarg, minsz))
+       if (copy_from_user(&info, arg, minsz))
                return -EFAULT;
 
        if (info.argsz < minsz)
@@ -301,20 +300,9 @@ int virtiovf_pci_ioctl_get_region_info(struct vfio_device *core_vdev,
                info.size = virtvdev->bar0_virtual_buf_size;
                info.flags = VFIO_REGION_INFO_FLAG_READ |
                             VFIO_REGION_INFO_FLAG_WRITE;
-               return copy_to_user(uarg, &info, minsz) ? -EFAULT : 0;
+               return copy_to_user(arg, &info, minsz) ? -EFAULT : 0;
        default:
-               return vfio_pci_core_ioctl(core_vdev, cmd, arg);
-       }
-}
-
-long virtiovf_vfio_pci_core_ioctl(struct vfio_device *core_vdev, unsigned int cmd,
-                                 unsigned long arg)
-{
-       switch (cmd) {
-       case VFIO_DEVICE_GET_REGION_INFO:
-               return virtiovf_pci_ioctl_get_region_info(core_vdev, cmd, arg);
-       default:
-               return vfio_pci_core_ioctl(core_vdev, cmd, arg);
+               return vfio_pci_ioctl_get_region_info(core_vdev, arg);
        }
 }
 
index 8084f3e36a9f707e27efd4a2e6577a55bf2653bb..92b525e52abe4d0d12a57d8932be4b1d7eb2d16d 100644 (file)
@@ -108,7 +108,8 @@ static const struct vfio_device_ops virtiovf_vfio_pci_tran_lm_ops = {
        .release = virtiovf_pci_core_release_dev,
        .open_device = virtiovf_pci_open_device,
        .close_device = virtiovf_pci_close_device,
-       .ioctl = virtiovf_vfio_pci_core_ioctl,
+       .ioctl = vfio_pci_core_ioctl,
+       .get_region_info = virtiovf_pci_ioctl_get_region_info,
        .device_feature = vfio_pci_core_ioctl_feature,
        .read = virtiovf_pci_core_read,
        .write = virtiovf_pci_core_write,