[PATCH 00/13] Provide core infrastructure for managing open/release

Kirti Wankhede kwankhede at nvidia.com
Thu Jul 15 13:28:31 UTC 2021



On 7/15/2021 5:50 AM, Jason Gunthorpe wrote:
> Prologue:
> 
> This is the first series of three to send the "mlx5_vfio_pci" driver that has
> been discussed on the list for a while now.
>   - Reorganize reflck to support splitting vfio_pci
>   - Split vfio_pci into vfio_pci/vfio_pci_core and provide infrastructure
>     for non-generic VFIO PCI drivers
>   - The new driver mlx5_vfio_pci that is a full implementation of
>     suspend/resume functionality for mlx5 devices.
> 
> A preview of all the patches can be seen here:
> 
> https://github.com/jgunthorpe/linux/commits/mlx5_vfio_pci
> 
> ===============
> 
> This is in support of Max's series to split vfio-pci. For that to work the
> reflck concept embedded in vfio-pci needs to be sharable across all of the
> new VFIO PCI drivers which motivated re-examining how this is
> implemented.
> 
> Another significant issue is how the VFIO PCI core includes code like:
> 
>     if (pci_dev_driver(pdev) != &vfio_pci_driver)
> 
> Which is not scalable if there are going to be multiple different driver
> types.
> 
> This series takes the approach of moving the "reflck" mechanism into the
> core code as a "device set". Each vfio_device driver can specify how
> vfio_devices are grouped into the set using a key and the set comes along
> with a set-global mutex. The core code manages creating per-device set
> memory and associating it with each vfio_device.
> 
> In turn this allows the core code to provide an open/close_device()
> operation that is called only for the first/last FD, and is called under
> the global device set lock.
> 
> Review of all the drivers show that they are either already open coding
> the first/last semantic or are buggy and missing it. All drivers are
> migrated/fixed to the new open/close_device ops and the unused per-FD
> open()/release() ops are deleted.
> 

Why can't open()/release() ops be reused instead of adding 
open_device()/close_device().

Thanks,
Kirti


More information about the dri-devel mailing list