On Wed, 31 May 2023 14:30:52 -0300
Jason Gunthorpe <j...@nvidia.com> wrote:

> On Wed, May 31, 2023 at 01:18:44PM -0400, Laine Stump wrote:
> > On 5/31/23 10:31 AM, Jason Gunthorpe wrote:  
> > > On Wed, May 31, 2023 at 03:18:17PM +0100, Joao Martins wrote:  
> > > > Hey Laine,
> > > > 
> > > > On 23/08/2022 15:11, Laine Stump wrote:  
> > > > > ping.
> > > > > 
> > > > > I have a different version of this patch where I do read the 
> > > > > modules.alias file
> > > > > rather than just checking the name of the driver, but that also 
> > > > > requires "double
> > > > > mocking" open() in the unit test, which wasn't working properly, and 
> > > > > I'd rather
> > > > > not spend the time figuring it out if it's not going to be needed. 
> > > > > (Alex prefers
> > > > > that version because it is more correct than just checking the name, 
> > > > > and he's
> > > > > concerned that the new sysfs-based API may take longer than we're 
> > > > > thinking to
> > > > > get into downstream distros, but the version in this patch does 
> > > > > satisfy both
> > > > > Jason and Daniel's suggested implementations). Anyway, I can post the 
> > > > > other
> > > > > patch if anyone is interested.
> > > > >   
> > > > [sorry for the thread necromancy]  
> > 
> > Heh. I had actually dug out this same thread last week and started a mail to
> > ask Jason if the planned sysfs stuff had ever been pushed, but then forgot
> > to hit "send" :-)
> > 
> > Now that there are multiple vfio variant drivers available (for igb, e1000e,
> > and mlx5 that I know of),  
> 
> Oh I haven't seen those intel ones posted yet?
> 
> > Jason, can you point me at the information for this patch in an ELI5 manner
> > for a non-kernel person? (including what upstream kernel it's in, and what
> > it is that I need to look at to determine if a driver is a vfio
> > variant).  
> 
> It is this patch:
> 
> commit 3c28a76124b25882411f005924be73795b6ef078
> Author: Yi Liu <yi.l....@intel.com>
> Date:   Wed Sep 21 18:44:01 2022 +0800
> 
>     vfio: Add struct device to vfio_device
>     
>     and replace kref. With it a 'vfio-dev/vfioX' node is created under the
>     sysfs path of the parent, indicating the device is bound to a vfio
>     driver, e.g.:
>     
>     /sys/devices/pci0000\:6f/0000\:6f\:01.0/vfio-dev/vfio0
>     
>     It is also a preparatory step toward adding cdev for supporting future
>     device-oriented uAPI.
>     
>     Add Documentation/ABI/testing/sysfs-devices-vfio-dev.
>     
>     Suggested-by: Jason Gunthorpe <j...@nvidia.com>
>     Signed-off-by: Yi Liu <yi.l....@intel.com>
>     Signed-off-by: Kevin Tian <kevin.t...@intel.com>
>     Reviewed-by: Jason Gunthorpe <j...@nvidia.com>
>     Link: 
> https://lore.kernel.org/r/20220921104401.38898-16-kevin.t...@intel.com
>     Signed-off-by: Alex Williamson <alex.william...@redhat.com>
> 
> $ git describe --contains 3c28a76124b25882411f005924be73795b6ef078
> v6.1-rc1~42^2~35
> 
> So it is in v6.1-rc1
> 
> libvirt should start thinking about determining the vfioX number for
> the device, we will need that for iommufd enablement eventually
> 
> so, stat for a directory like this:
> 
> /sys/devices/pci0000\:6f/0000\:6f\:01.0/vfio-dev
> 
> Confirms vfio
>
> Then scan it to get 'vfioX' which will eventually be the /dev/ node
> libvirt will have to open.
> 
> And the other part is something in the stack should use the modalias
> mechanism to find load and bind the correct variant driver.

I'd forgotten about this as well, so after binding a driver to a device
we can tell if that driver presents a vfio interface by looking for
this sysfs directory.  Prior to binding to a device, we can only know
if a driver provides a vfio interface through modalias.

Also note that we're saying "vfio" not "vfio-pci".  Only the mdev
interface has the device_api attribute to indicate the exported vfio
device interface.  The "vfio_pci:" match in modalias indicates a vfio
PCI driver, not necessarily a driver that provides a vfio-pci API.  We
have no current examples to the contrary, but for instance I wouldn't
recommend validating whether mode='subsystem' type='pci' is appropriate
based on that information.  Thanks,

Alex

Reply via email to