[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