[Intel-gfx] [PATCH v3 03/15] vfio: Accept vfio device file in the driver facing kAPI
Jason Gunthorpe
jgg at nvidia.com
Wed Feb 15 12:38:30 UTC 2023
On Tue, Feb 14, 2023 at 02:02:37AM +0000, Liu, Yi L wrote:
> > From: Jason Gunthorpe <jgg at nvidia.com>
> > Sent: Tuesday, February 14, 2023 7:44 AM
> >
> > On Mon, Feb 13, 2023 at 07:13:36AM -0800, Yi Liu wrote:
> > > +static struct vfio_device *vfio_device_from_file(struct file *file)
> > > +{
> > > + struct vfio_device_file *df = file->private_data;
> > > +
> > > + if (file->f_op != &vfio_device_fops)
> > > + return NULL;
> > > + return df->device;
> > > +}
> > > +
> > > /**
> > > * vfio_file_is_valid - True if the file is usable with VFIO APIS
> > > * @file: VFIO group file or VFIO device file
> > > */
> > > bool vfio_file_is_valid(struct file *file)
> > > {
> > > - return vfio_group_from_file(file);
> > > + return vfio_group_from_file(file) ||
> > > + vfio_device_from_file(file);
> > > }
> > > EXPORT_SYMBOL_GPL(vfio_file_is_valid);
> >
> > This can only succeed on a device cdev that has been fully opened.
>
> Actually, we cannot. This is used in the kvm-vfio code to see if the
> user-provided fd is vfio fds in the SET_KVM path. And we don't
> have the device cdev fully opened until BIND_IOMMUFD. But we do
> need to invoke SET_KVM before issuing BIND_IOMMUFD as the device
> open needs kvm pointer. So if we cannot apply fully opened limit to this
> interface. Maybe an updated function comment is needed.
This also seems sketchy, KVM is using the VFIO fd as a "proof" to
enable the wbinvd stuff. A half opened cdev should not be used as that
proof.
Regardless it needs to be fixed for the pci usage.
Jason
More information about the Intel-gfx
mailing list