vfio: Make vfio_device_ops pass a 'struct vfio_device *' instead of 'void *'
This is the standard kernel pattern, the ops associated with a struct get the struct pointer in for typesafety. The expected design is to use container_of to cleanly go from the subsystem level type to the driver level type without having any type erasure in a void *. Reviewed-by: Dan Williams <dan.j.williams@intel.com> Reviewed-by: Christoph Hellwig <hch@lst.de> Reviewed-by: Cornelia Huck <cohuck@redhat.com> Signed-off-by: Jason Gunthorpe <jgg@nvidia.com> Message-Id: <12-v3-225de1400dfc+4e074-vfio1_jgg@nvidia.com> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
committed by
Alex Williamson
parent
66873b5fa7
commit
6df62c5b05
@@ -135,9 +135,10 @@ static void vfio_fsl_mc_regions_cleanup(struct vfio_fsl_mc_device *vdev)
|
||||
kfree(vdev->regions);
|
||||
}
|
||||
|
||||
static int vfio_fsl_mc_open(void *device_data)
|
||||
static int vfio_fsl_mc_open(struct vfio_device *core_vdev)
|
||||
{
|
||||
struct vfio_fsl_mc_device *vdev = device_data;
|
||||
struct vfio_fsl_mc_device *vdev =
|
||||
container_of(core_vdev, struct vfio_fsl_mc_device, vdev);
|
||||
int ret;
|
||||
|
||||
if (!try_module_get(THIS_MODULE))
|
||||
@@ -161,9 +162,10 @@ err_reg_init:
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void vfio_fsl_mc_release(void *device_data)
|
||||
static void vfio_fsl_mc_release(struct vfio_device *core_vdev)
|
||||
{
|
||||
struct vfio_fsl_mc_device *vdev = device_data;
|
||||
struct vfio_fsl_mc_device *vdev =
|
||||
container_of(core_vdev, struct vfio_fsl_mc_device, vdev);
|
||||
int ret;
|
||||
|
||||
mutex_lock(&vdev->reflck->lock);
|
||||
@@ -197,11 +199,12 @@ static void vfio_fsl_mc_release(void *device_data)
|
||||
module_put(THIS_MODULE);
|
||||
}
|
||||
|
||||
static long vfio_fsl_mc_ioctl(void *device_data, unsigned int cmd,
|
||||
unsigned long arg)
|
||||
static long vfio_fsl_mc_ioctl(struct vfio_device *core_vdev,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
{
|
||||
unsigned long minsz;
|
||||
struct vfio_fsl_mc_device *vdev = device_data;
|
||||
struct vfio_fsl_mc_device *vdev =
|
||||
container_of(core_vdev, struct vfio_fsl_mc_device, vdev);
|
||||
struct fsl_mc_device *mc_dev = vdev->mc_dev;
|
||||
|
||||
switch (cmd) {
|
||||
@@ -327,10 +330,11 @@ static long vfio_fsl_mc_ioctl(void *device_data, unsigned int cmd,
|
||||
}
|
||||
}
|
||||
|
||||
static ssize_t vfio_fsl_mc_read(void *device_data, char __user *buf,
|
||||
static ssize_t vfio_fsl_mc_read(struct vfio_device *core_vdev, char __user *buf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
struct vfio_fsl_mc_device *vdev = device_data;
|
||||
struct vfio_fsl_mc_device *vdev =
|
||||
container_of(core_vdev, struct vfio_fsl_mc_device, vdev);
|
||||
unsigned int index = VFIO_FSL_MC_OFFSET_TO_INDEX(*ppos);
|
||||
loff_t off = *ppos & VFIO_FSL_MC_OFFSET_MASK;
|
||||
struct fsl_mc_device *mc_dev = vdev->mc_dev;
|
||||
@@ -404,10 +408,12 @@ static int vfio_fsl_mc_send_command(void __iomem *ioaddr, uint64_t *cmd_data)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static ssize_t vfio_fsl_mc_write(void *device_data, const char __user *buf,
|
||||
size_t count, loff_t *ppos)
|
||||
static ssize_t vfio_fsl_mc_write(struct vfio_device *core_vdev,
|
||||
const char __user *buf, size_t count,
|
||||
loff_t *ppos)
|
||||
{
|
||||
struct vfio_fsl_mc_device *vdev = device_data;
|
||||
struct vfio_fsl_mc_device *vdev =
|
||||
container_of(core_vdev, struct vfio_fsl_mc_device, vdev);
|
||||
unsigned int index = VFIO_FSL_MC_OFFSET_TO_INDEX(*ppos);
|
||||
loff_t off = *ppos & VFIO_FSL_MC_OFFSET_MASK;
|
||||
struct fsl_mc_device *mc_dev = vdev->mc_dev;
|
||||
@@ -468,9 +474,11 @@ static int vfio_fsl_mc_mmap_mmio(struct vfio_fsl_mc_region region,
|
||||
size, vma->vm_page_prot);
|
||||
}
|
||||
|
||||
static int vfio_fsl_mc_mmap(void *device_data, struct vm_area_struct *vma)
|
||||
static int vfio_fsl_mc_mmap(struct vfio_device *core_vdev,
|
||||
struct vm_area_struct *vma)
|
||||
{
|
||||
struct vfio_fsl_mc_device *vdev = device_data;
|
||||
struct vfio_fsl_mc_device *vdev =
|
||||
container_of(core_vdev, struct vfio_fsl_mc_device, vdev);
|
||||
struct fsl_mc_device *mc_dev = vdev->mc_dev;
|
||||
unsigned int index;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user