mbox series

[0/9] Make the rest of the VFIO driver interface use vfio_device

Message ID 0-v1-a8faf768d202+125dd-vfio_mdev_no_group_jgg@nvidia.com (mailing list archive)
Headers show
Series Make the rest of the VFIO driver interface use vfio_device | expand

Message

Jason Gunthorpe April 12, 2022, 3:53 p.m. UTC
Prior series have transformed other parts of VFIO from working on struct
device or struct vfio_group into working directly on struct
vfio_device. Based on that work we now have vfio_device's readily
available in all the drivers.

Update the rest of the driver facing API to use vfio_device as an input.

The following are switched from struct device to struct vfio_device:
  vfio_register_notifier()
  vfio_unregister_notifier()
  vfio_pin_pages()
  vfio_unpin_pages()
  vfio_dma_rw()

The following group APIs are obsoleted and removed by just using struct
vfio_device with the above:
  vfio_group_pin_pages()
  vfio_group_unpin_pages()
  vfio_group_iommu_domain()
  vfio_group_get_external_user_from_dev()

To retain the performance of the new device APIs relative to their group
versions optimize how vfio_group_add_container_user() is used to avoid
calling it when the driver must already guarantee the device is open and
the container_users incrd.

The remaining exported VFIO group interfaces are only used by kvm, and are
addressed by a parallel series.

There is a conflict with Christoph's gvt rework here:

 https://lore.kernel.org/all/20220411141403.86980-1-hch@lst.de/

I've organized this so it is independent of Christoph's series, by adding
the temporary mdev_legacy_get_vfio_device(), however it is easy for me to
rebase. We can decide what to do as we see what becomes mergable. My
preference would be to see Christoph's series merged into the drm&vfio
trees and we do both series this cycle.

I have a followup series that needs this.

This is also part of the iommufd work - moving the driver facing interface
to vfio_device provides a much cleaner path to integrate with iommufd.

Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>

Jason Gunthorpe (9):
  vfio: Make vfio_(un)register_notifier accept a vfio_device
  vfio/ccw: Remove mdev from struct channel_program
  vfio/mdev: Pass in a struct vfio_device * to vfio_pin/unpin_pages()
  drm/i915/gvt: Change from vfio_group_(un)pin_pages to
    vfio_(un)pin_pages
  vfio: Pass in a struct vfio_device * to vfio_dma_rw()
  drm/i915/gvt: Add missing module_put() in error unwind
  drm/i915/gvt: Delete kvmgt_vdev::vfio_group
  vfio: Remove dead code
  vfio: Remove calls to vfio_group_add_container_user()

 .../driver-api/vfio-mediated-device.rst       |   4 +-
 drivers/gpu/drm/i915/gvt/kvmgt.c              |  48 ++-
 drivers/s390/cio/vfio_ccw_cp.c                |  44 +--
 drivers/s390/cio/vfio_ccw_cp.h                |   4 +-
 drivers/s390/cio/vfio_ccw_fsm.c               |   3 +-
 drivers/s390/cio/vfio_ccw_ops.c               |   7 +-
 drivers/s390/crypto/vfio_ap_ops.c             |  22 +-
 drivers/vfio/mdev/vfio_mdev.c                 |  12 +
 drivers/vfio/vfio.c                           | 283 ++----------------
 include/linux/mdev.h                          |   1 +
 include/linux/vfio.h                          |  21 +-
 11 files changed, 115 insertions(+), 334 deletions(-)


base-commit: ce522ba9ef7e2d9fb22a39eb3371c0c64e2a433e

Comments

Christoph Hellwig April 13, 2022, 5:52 a.m. UTC | #1
On Tue, Apr 12, 2022 at 12:53:27PM -0300, Jason Gunthorpe wrote:
> There is a conflict with Christoph's gvt rework here:
> 
>  https://lore.kernel.org/all/20220411141403.86980-1-hch@lst.de/
> 
> I've organized this so it is independent of Christoph's series, by adding
> the temporary mdev_legacy_get_vfio_device(), however it is easy for me to
> rebase. We can decide what to do as we see what becomes mergable. My
> preference would be to see Christoph's series merged into the drm&vfio
> trees and we do both series this cycle.

The hacks for the unconverted gvt are a real mess, so I hope we can
finish the gvt conversion first.