vfio/mdev: Allow the mdev_parent_ops to specify the device driver to bind
authorJason Gunthorpe <jgg@nvidia.com>
Thu, 17 Jun 2021 14:22:15 +0000 (16:22 +0200)
committerAlex Williamson <alex.williamson@redhat.com>
Mon, 21 Jun 2021 21:29:25 +0000 (15:29 -0600)
commit88a21f265ce50a17e6e71e3fb4467625cf234c5a
tree284c8e38e4948e421c058d9e53f4e4c9dfac1158
parentaf3ab3f9b986cdbc1b97b8a3341ce78851edb0dd
vfio/mdev: Allow the mdev_parent_ops to specify the device driver to bind

This allows a mdev driver to opt out of using vfio_mdev.c, instead the
driver will provide a 'struct mdev_driver' and register directly with the
driver core.

Much of mdev_parent_ops becomes unused in this mode:
- create()/remove() are done via the mdev_driver probe()/remove()
- mdev_attr_groups becomes mdev_driver driver.dev_groups
- Wrapper function callbacks are replaced with the same ones from
  struct vfio_device_ops

Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Kirti Wankhede <kwankhede@nvidia.com>
Link: https://lore.kernel.org/r/20210617142218.1877096-8-hch@lst.de
Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
Documentation/driver-api/vfio-mediated-device.rst
drivers/vfio/mdev/mdev_core.c
drivers/vfio/mdev/mdev_driver.c
include/linux/mdev.h