On Thu, 5 May 2022 21:08:38 -0300 Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > 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. > > This series is based on Christoph's gvt rework here: > > https://lore.kernel.org/all/5a8b9f48-2c32-8177-1c18-e3bd7bfde558@xxxxxxxxx/ > > and so will need the PR merged first. > > 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. > > v4: > - Use 'device' as the argument name for a struct vfio_device in vfio.c > v3: https://lore.kernel.org/r/0-v3-e131a9b6b467+14b6-vfio_mdev_no_group_jgg@xxxxxxxxxx > - Based on VFIO's gvt/iommu merge > - Remove mention of mdev_legacy_get_vfio_device() from commit message > - Clarify commit message for vfio_dma_rw() conversion > - Talk about the open_count change in the commit message > - No code change > v2: https://lore.kernel.org/r/0-v2-6011bde8e0a1+5f-vfio_mdev_no_group_jgg@xxxxxxxxxx > - Based on Christoph's series so mdev_legacy_get_vfio_device() is removed > - Reflow indenting > - Use vfio_assert_device_open() and WARN_ON_ONCE instead of open coding > the assertion > v1: https://lore.kernel.org/r/0-v1-a8faf768d202+125dd-vfio_mdev_no_group_jgg@xxxxxxxxxx > > Jason Gunthorpe (7): > 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() > vfio/mdev: Pass in a struct vfio_device * to vfio_dma_rw() > drm/i915/gvt: Change from vfio_group_(un)pin_pages to > vfio_(un)pin_pages > 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/gvt.h | 5 +- > drivers/gpu/drm/i915/gvt/kvmgt.c | 51 ++- > drivers/s390/cio/vfio_ccw_cp.c | 47 +-- > 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 | 23 +- > drivers/vfio/vfio.c | 299 +++--------------- > include/linux/vfio.h | 21 +- > 10 files changed, 109 insertions(+), 355 deletions(-) Applied to vfio next branch for v5.19. Thanks, Alex