simplify the mdev interface v6

Christoph Hellwig
2022-07-09T04:55:21Z

Hi all,

this series signigicantly simplies the mdev driver interface by following
the patterns for device model interaction used elsewhere in the kernel.

Changes since v5:
- rebased to the latest vfio/next branch
- drop the last patch again
- make sure show_available_instances works properly for the internallly
tracked case

Changes since v4:
- move the kobject_put later in mdev_device_release
- add a Fixes tag for the first patch
- add another patch to remove an extra kobject_get/put

Changes since v3:
- make the sysfs_name and pretty_name fields pointers instead of arrays
- add an i915 cleanup to prepare for the above

Changes since v2:
- rebased to vfio/next
- fix a pre-existing memory leak in i915 instead of making it worse
- never manipulate if ->available_instances if drv->get_available is
provided
- keep a parent reference for the mdev_type
- keep a few of the sysfs.c helper function around
- improve the documentation for the parent device lifetime
- minor spellig / formatting fixes

Changes since v1:
- embedd the mdev_parent into a different sub-structure in i916
- remove headers now inclued by mdev.h from individual source files
- pass an array of mdev_types to mdev_register_parent
- add additional patches to implement all attributes on the
mdev_type in the core code

Diffstat:
Documentation/driver-api/vfio-mediated-device.rst | 26 +-
Documentation/s390/vfio-ap.rst | 2
Documentation/s390/vfio-ccw.rst | 2
drivers/gpu/drm/i915/gvt/aperture_gm.c | 20 +-
drivers/gpu/drm/i915/gvt/gvt.h | 42 ++--
drivers/gpu/drm/i915/gvt/kvmgt.c | 168 ++++-------------
drivers/gpu/drm/i915/gvt/vgpu.c | 210 +++++++---------------
drivers/s390/cio/cio.h | 4
drivers/s390/cio/vfio_ccw_drv.c | 12 -
drivers/s390/cio/vfio_ccw_ops.c | 51 -----
drivers/s390/cio/vfio_ccw_private.h | 2
drivers/s390/crypto/vfio_ap_ops.c | 68 +------
drivers/s390/crypto/vfio_ap_private.h | 6
drivers/vfio/mdev/mdev_core.c | 190 ++++---------------
drivers/vfio/mdev/mdev_driver.c | 7
drivers/vfio/mdev/mdev_private.h | 32 ---
drivers/vfio/mdev/mdev_sysfs.c | 189 ++++++++++---------
include/linux/mdev.h | 77 ++++----
samples/vfio-mdev/mbochs.c | 103 +++-------
samples/vfio-mdev/mdpy.c | 115 +++---------
samples/vfio-mdev/mtty.c | 94 +++------
21 files changed, 463 insertions(+), 957 deletions(-)