[Intel-gfx] Allow mdev drivers to directly create the vfio_device (v4)
Christoph Hellwig
hch at lst.de
Thu Jun 17 14:22:08 UTC 2021
This is my alternative take on this series from Jason:
https://lore.kernel.org/dri-devel/87czsszi9i.fsf@redhat.com/T/
The mdev/vfio parts are exactly the same, but this solves the driver core
changes for the direct probing without the in/out flag that Greg hated,
which cause a little more work, but probably make the result better.
Original decription from Jason below:
The mdev bus's core part for managing the lifecycle of devices is mostly
as one would expect for a driver core bus subsystem.
However instead of having a normal 'struct device_driver' and binding the
actual mdev drivers through the standard driver core mechanisms it open
codes this with the struct mdev_parent_ops and provides a single driver
that shims between the VFIO core's struct vfio_device and the actual
device driver.
Instead, allow mdev drivers implement an actual struct mdev_driver and
directly call vfio_register_group_dev() in the probe() function for the
mdev. Arrange to bind the created mdev_device to the mdev_driver that is
provided by the end driver.
The actual execution flow doesn't change much, eg what was
parent_ops->create is now device_driver->probe and it is called at almost
the exact same time - except under the normal control of the driver core.
Ultimately converting all the drivers unlocks a fair number of additional
VFIO simplifications and cleanups.
Changes since v3:
- minor cleanup to avoid the probe_ret variable in really_probe entirely
- use a saner name for a variable in mdev-mtty
- use a better driver name in mdev-mtty
- update the documentation to match the new interface
Changes since v2:
- avoid warning spam for successful probes
- improve the probe_count protection
More information about the Intel-gfx
mailing list