On Mon, 26 Apr 2021 17:00:02 -0300 Jason Gunthorpe <jgg@xxxxxxxxxx> wrote: > 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 and the actual device driver. > > Make every one of the mdev drivers implement an actual struct mdev_driver > and directly call vfio_register_group_dev() in the probe() function for > the mdev. > > Squash what is left of the mdev_parent_ops into the mdev_driver and remap > create(), remove() and mdev_attr_groups to their driver core > equivalents. 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. > > This allows deleting the entire mdev_drvdata, and tidying some of the > sysfs. Many places in the drivers start using container_of() > > This cleanly splits the mdev sysfs GUID lifecycle management stuff from > the vfio_device implementation part, the only VFIO special part of mdev > that remains is the mdev specific iommu intervention. > > v2: > - Keep && m in samples kconfig > - Restore accidently squashed removeal of vfio_mdev.c > - Remove indirections to call bus_register()/bus_unregister() > - Reflow long doc lines > v1: https://lore.kernel.org/r/0-v1-d88406ed308e+418-vfio3_jgg@xxxxxxxxxx > > Jason > > Cc: Leon Romanovsky <leonro@xxxxxxxxxx> > Cc: "Raj, Ashok" <ashok.raj@xxxxxxxxx> > Cc: Dan Williams <dan.j.williams@xxxxxxxxx> > Cc: Max Gurtovoy <mgurtovoy@xxxxxxxxxx> > Cc: Christoph Hellwig <hch@xxxxxx> > Cc: Tarun Gupta <targupta@xxxxxxxxxx> > Cc: Daniel Vetter <daniel@xxxxxxxx> > > > Jason Gunthorpe (13): > vfio/mdev: Remove CONFIG_VFIO_MDEV_DEVICE > vfio/mdev: Allow the mdev_parent_ops to specify the device driver to > bind > vfio/mtty: Convert to use vfio_register_group_dev() > vfio/mdpy: Convert to use vfio_register_group_dev() > vfio/mbochs: Convert to use vfio_register_group_dev() > vfio/ap_ops: Convert to use vfio_register_group_dev() > vfio/ccw: Convert to use vfio_register_group_dev() > vfio/gvt: Convert to use vfio_register_group_dev() > vfio/mdev: Remove vfio_mdev.c > vfio/mdev: Remove mdev_parent_ops dev_attr_groups > vfio/mdev: Remove mdev_parent_ops > vfio/mdev: Use the driver core to create the 'remove' file > vfio/mdev: Remove mdev drvdata It'd be really helpful if you could consistently copy at least one list, preferably one monitored by patchwork, for an entire series. The kvm list is missing patches 06 and 08. I can find the latter hopping over to the intel-gfx or dri-devel projects as I did for the last series, but 06 only copied linux-s390, where I need to use lore and can't find a patchwork. Thanks, Alex > > .../driver-api/vfio-mediated-device.rst | 56 ++--- > Documentation/s390/vfio-ap.rst | 1 - > arch/s390/Kconfig | 2 +- > drivers/gpu/drm/i915/Kconfig | 2 +- > drivers/gpu/drm/i915/gvt/kvmgt.c | 210 +++++++++-------- > drivers/s390/cio/vfio_ccw_drv.c | 21 +- > drivers/s390/cio/vfio_ccw_ops.c | 136 ++++++----- > drivers/s390/cio/vfio_ccw_private.h | 5 + > drivers/s390/crypto/vfio_ap_ops.c | 138 ++++++----- > drivers/s390/crypto/vfio_ap_private.h | 2 + > drivers/vfio/mdev/Kconfig | 7 - > drivers/vfio/mdev/Makefile | 1 - > drivers/vfio/mdev/mdev_core.c | 67 ++++-- > drivers/vfio/mdev/mdev_driver.c | 20 +- > drivers/vfio/mdev/mdev_private.h | 4 +- > drivers/vfio/mdev/mdev_sysfs.c | 37 ++- > drivers/vfio/mdev/vfio_mdev.c | 180 --------------- > drivers/vfio/vfio.c | 6 +- > include/linux/mdev.h | 86 +------ > include/linux/vfio.h | 4 + > samples/Kconfig | 6 +- > samples/vfio-mdev/mbochs.c | 166 +++++++------ > samples/vfio-mdev/mdpy.c | 162 +++++++------ > samples/vfio-mdev/mtty.c | 218 +++++++----------- > 24 files changed, 651 insertions(+), 886 deletions(-) > delete mode 100644 drivers/vfio/mdev/vfio_mdev.c >