Re: [PATCH 00/12] Remove vfio_mdev.c, mdev_parent_ops and more

2021-04-27 Thread Jason Gunthorpe
On Tue, Apr 27, 2021 at 09:33:56AM +0200, Christian Borntraeger wrote:
> On 26.04.21 19:42, Jason Gunthorpe wrote:
> > On Mon, Apr 26, 2021 at 06:43:14PM +0200, Christian Borntraeger wrote:
> > > On 24.04.21 01:02, Jason Gunthorpe wrote:
> > > > Prologue
> > > > 
> > > > 
> > > > This is series #3 in part of a larger work that arose from the minor
> > > > remark that the mdev_parent_ops indirection shim is useless and
> > > > complicates things.
> > > > 
> > > > It applies on top of Alex's current tree and requires the prior two
> > > > series.
> > > 
> > > Do you have a tree somewhere?
> > 
> > [..]
> > > > A preview of the future series's is here:
> > > > https://github.com/jgunthorpe/linux/pull/3/commits
> > 
> > Has everything, you'll want to go to:
> >cover-letter: Remove vfio_mdev.c, mdev_parent_ops and more
> > 
> > As there are additional WIPs in that tree.
> 
> I gave this a quick spin on s390x vfio-ap and it seems to work ok.
> This is really just a quick test, but no obvious problem.

Great! Thanks

Jason
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 00/12] Remove vfio_mdev.c, mdev_parent_ops and more

2021-04-27 Thread Christian Borntraeger




On 26.04.21 19:42, Jason Gunthorpe wrote:

On Mon, Apr 26, 2021 at 06:43:14PM +0200, Christian Borntraeger wrote:

On 24.04.21 01:02, Jason Gunthorpe wrote:

Prologue


This is series #3 in part of a larger work that arose from the minor
remark that the mdev_parent_ops indirection shim is useless and
complicates things.

It applies on top of Alex's current tree and requires the prior two
series.


Do you have a tree somewhere?


[..]

A preview of the future series's is here:
https://github.com/jgunthorpe/linux/pull/3/commits


Has everything, you'll want to go to:
   cover-letter: Remove vfio_mdev.c, mdev_parent_ops and more

As there are additional WIPs in that tree.


I gave this a quick spin on s390x vfio-ap and it seems to work ok.
This is really just a quick test, but no obvious problem.
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 00/12] Remove vfio_mdev.c, mdev_parent_ops and more

2021-04-26 Thread Jason Gunthorpe
On Mon, Apr 26, 2021 at 06:43:14PM +0200, Christian Borntraeger wrote:
> On 24.04.21 01:02, Jason Gunthorpe wrote:
> > Prologue
> > 
> > 
> > This is series #3 in part of a larger work that arose from the minor
> > remark that the mdev_parent_ops indirection shim is useless and
> > complicates things.
> > 
> > It applies on top of Alex's current tree and requires the prior two
> > series.
> 
> Do you have a tree somewhere?

[..]
> > A preview of the future series's is here:
> >https://github.com/jgunthorpe/linux/pull/3/commits

Has everything, you'll want to go to:
  cover-letter: Remove vfio_mdev.c, mdev_parent_ops and more

As there are additional WIPs in that tree.

Jason
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


Re: [PATCH 00/12] Remove vfio_mdev.c, mdev_parent_ops and more

2021-04-26 Thread Christian Borntraeger




On 24.04.21 01:02, Jason Gunthorpe wrote:

Prologue


This is series #3 in part of a larger work that arose from the minor
remark that the mdev_parent_ops indirection shim is useless and
complicates things.

It applies on top of Alex's current tree and requires the prior two
series.


Do you have a tree somewhere?
___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel


[PATCH 00/12] Remove vfio_mdev.c, mdev_parent_ops and more

2021-04-23 Thread Jason Gunthorpe
Prologue


This is series #3 in part of a larger work that arose from the minor
remark that the mdev_parent_ops indirection shim is useless and
complicates things.

It applies on top of Alex's current tree and requires the prior two
series.

This series achieves the removal of vfio_mdev.c. The future patches are all
focused on leveraging the changes made in the prior series to simplify the
API and device operation.

A preview of the future series's is here:
  https://github.com/jgunthorpe/linux/pull/3/commits



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.

Thanks,
Jason

Jason Gunthorpe (12):
  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 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

 .../driver-api/vfio-mediated-device.rst   |  55 ++---
 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 |  65 --
 drivers/vfio/mdev/mdev_driver.c   |  10 +-
 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, 649 insertions(+), 875 deletions(-)
 delete mode 100644 drivers/vfio/mdev/vfio_mdev.c

-- 
2.31.1

___
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel