On Thu, Feb 24 2022, Yishai Hadas <yishaih@xxxxxxxxxx> wrote: > From: Jason Gunthorpe <jgg@xxxxxxxxxx> > > Invoke a new device op 'device_feature' to handle just the data array > portion of the command. This lifts the ioctl validation to the core code > and makes it simpler for either the core code, or layered drivers, to > implement their own feature values. > > Provide vfio_check_feature() to consolidate checking the flags/etc against > what the driver supports. > > Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx> > Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@xxxxxxxxxx> > Signed-off-by: Yishai Hadas <yishaih@xxxxxxxxxx> > --- > drivers/vfio/pci/vfio_pci.c | 1 + > drivers/vfio/pci/vfio_pci_core.c | 94 +++++++++++++------------------- > drivers/vfio/vfio.c | 46 ++++++++++++++-- > include/linux/vfio.h | 32 +++++++++++ > include/linux/vfio_pci_core.h | 2 + > 5 files changed, 114 insertions(+), 61 deletions(-) (...) > diff --git a/include/linux/vfio.h b/include/linux/vfio.h > index 76191d7abed1..ca69516f869d 100644 > --- a/include/linux/vfio.h > +++ b/include/linux/vfio.h > @@ -55,6 +55,7 @@ struct vfio_device { > * @match: Optional device name match callback (return: 0 for no-match, >0 for > * match, -errno for abort (ex. match with insufficient or incorrect > * additional args) > + * @device_feature: Fill in the VFIO_DEVICE_FEATURE ioctl > */ > struct vfio_device_ops { > char *name; > @@ -69,8 +70,39 @@ struct vfio_device_ops { > int (*mmap)(struct vfio_device *vdev, struct vm_area_struct *vma); > void (*request)(struct vfio_device *vdev, unsigned int count); > int (*match)(struct vfio_device *vdev, char *buf); > + int (*device_feature)(struct vfio_device *device, u32 flags, > + void __user *arg, size_t argsz); > }; Is the expectation that most drivers will eventually implement ->device_feature()? Well, they will have to if they want to support migration; mostly asking because e.g. ->match() is explicitly marked as "optional". As the only callback every driver implements seems to be ->ioctl() (if we also include the samples), "optional" or not does not seem to be particularly relevant anyway. Reviewed-by: Cornelia Huck <cohuck@xxxxxxxxxx>