mbox series

[v1,00/18] VFIO ccw/mdev rework

Message ID 20220602171948.2790690-1-farman@linux.ibm.com (mailing list archive)
Headers show
Series VFIO ccw/mdev rework | expand

Message

Eric Farman June 2, 2022, 5:19 p.m. UTC
Last autumn, Jason Gunthorpe proposed some rework of vfio-ccw [1],
to better fit with the new mdev API (thank you!). Part of that
series was pulled for kernel 5.16 [2], but the complexities of
the remaining patches got them hung up behind other work.

This series attempts to dust off and complete that, with the
goal of untangling the lifecycle of a s390 subchannel when
bound to vfio-ccw instead of the usual io_subchannel driver.

Patches 1-8 are inspired by and/or split out from that series,
in order to be consumable on their own (backports, etc.).

Patches 9-12 handle the goal of making the FSM complete,
and synchronizing the subchannel's life with that of the mdev.
(This was the goal of patch 5 of the larger series [3].)

Patches 13-14 are pulled directly from the earlier series.
As these patches hit some other of the consumers of vfio,
those on CC who are unfamiliar with vfio-ccw probably only
care about these. :)

Patches 15-18 links the lifecycle of the vfio_ccw_private struct
with the mdev via a vfio reference. (Patch 17 was also pulled
directly from the earlier series.)

In the end, the subchannel probe/remove callbacks from the css
driver simply register/unregister with vfio-mdev. The communication
with the subchannel is delayed until the mdev routines, which
handles all the vfio-related memory and subchannel enablement.
There's no longer a configuration where the mdev is closed while
the subchannel remains enabled, since that's weird.

@Jason: I carried the S-o-b/r-b tags on patches 13, 14, and 17,
as they were cherry-picked straight from your v3.
If you'd prefer your S-o-b on others, please let me know.

[1] https://lore.kernel.org/r/0-v3-57c1502c62fd+2190-ccw_mdev_jgg@nvidia.com/
[2] https://lore.kernel.org/r/0-v4-cea4f5bd2c00+b52-ccw_mdev_jgg@nvidia.com/
[3] https://lore.kernel.org/r/5-v3-57c1502c62fd+2190-ccw_mdev_jgg@nvidia.com/

Cc: Kirti Wankhede <kwankhede@nvidia.com>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
Cc: Zhi Wang <zhi.a.wang@intel.com>
Cc: intel-gvt-dev@lists.freedesktop.org
Cc: Tony Krowiak <akrowiak@linux.ibm.com>
Cc: Jason Herne <jjherne@linux.ibm.com>

Eric Farman (14):
  vfio/ccw: Fix FSM state if mdev probe fails
  vfio/ccw: Ensure mdev->dev is cleared on mdev remove
  vfio/ccw: Do not change FSM state in subchannel event
  vfio/ccw: Remove private->mdev
  vfio/ccw: Pass enum to FSM event jumptable
  vfio/ccw: Flatten MDEV device (un)register
  vfio/ccw: Check that private pointer is not NULL
  vfio/ccw: Create an OPEN FSM Event
  vfio/ccw: Create a CLOSE FSM event
  vfio/ccw: Refactor vfio_ccw_mdev_reset
  vfio/ccw: Move FSM open/close to MDEV open/close
  vfio/ccw: Manage private with mdev
  vfio/ccw: Create a get_private routine
  vfio/ccw: Manage ccw/mdev reference counts

Jason Gunthorpe (3):
  vfio/mdev: Consolidate all the device_api sysfs into the core code
  vfio/mdev: Add mdev available instance checking to the core
  vfio: Export vfio_device_try_get()

Michael Kawano (1):
  vfio/ccw: Remove UUID from s390 debug log

 .../driver-api/vfio-mediated-device.rst       |   8 +-
 drivers/gpu/drm/i915/gvt/kvmgt.c              |   9 +-
 drivers/s390/cio/vfio_ccw_async.c             |   1 -
 drivers/s390/cio/vfio_ccw_drv.c               | 114 ++++++--------
 drivers/s390/cio/vfio_ccw_fsm.c               |  91 +++++++++--
 drivers/s390/cio/vfio_ccw_ops.c               | 145 ++++++------------
 drivers/s390/cio/vfio_ccw_private.h           |  33 +++-
 drivers/s390/crypto/vfio_ap_ops.c             |  41 ++---
 drivers/s390/crypto/vfio_ap_private.h         |   2 -
 drivers/vfio/mdev/mdev_core.c                 |  13 +-
 drivers/vfio/mdev/mdev_private.h              |   2 +
 drivers/vfio/mdev/mdev_sysfs.c                |  64 +++++++-
 drivers/vfio/vfio.c                           |   3 +-
 include/linux/mdev.h                          |  13 +-
 include/linux/vfio.h                          |   1 +
 samples/vfio-mdev/mbochs.c                    |   9 +-
 samples/vfio-mdev/mdpy.c                      |  31 +---
 samples/vfio-mdev/mtty.c                      |  10 +-
 18 files changed, 300 insertions(+), 290 deletions(-)

Comments

Jason Gunthorpe June 2, 2022, 7:29 p.m. UTC | #1
On Thu, Jun 02, 2022 at 07:19:30PM +0200, Eric Farman wrote:
> Last autumn, Jason Gunthorpe proposed some rework of vfio-ccw [1],
> to better fit with the new mdev API (thank you!). Part of that
> series was pulled for kernel 5.16 [2], but the complexities of
> the remaining patches got them hung up behind other work.
> 
> This series attempts to dust off and complete that, with the
> goal of untangling the lifecycle of a s390 subchannel when
> bound to vfio-ccw instead of the usual io_subchannel driver.
> 
> Patches 1-8 are inspired by and/or split out from that series,
> in order to be consumable on their own (backports, etc.).
> 
> Patches 9-12 handle the goal of making the FSM complete,
> and synchronizing the subchannel's life with that of the mdev.
> (This was the goal of patch 5 of the larger series [3].)
> 
> Patches 13-14 are pulled directly from the earlier series.
> As these patches hit some other of the consumers of vfio,
> those on CC who are unfamiliar with vfio-ccw probably only
> care about these. :)
> 
> Patches 15-18 links the lifecycle of the vfio_ccw_private struct
> with the mdev via a vfio reference. (Patch 17 was also pulled
> directly from the earlier series.)
> 
> In the end, the subchannel probe/remove callbacks from the css
> driver simply register/unregister with vfio-mdev. The communication
> with the subchannel is delayed until the mdev routines, which
> handles all the vfio-related memory and subchannel enablement.
> There's no longer a configuration where the mdev is closed while
> the subchannel remains enabled, since that's weird.

This all looks great thanks!

I would like this to go through the VFIO tree once you repost it on v5.19-rc1

> @Jason: I carried the S-o-b/r-b tags on patches 13, 14, and 17,
> as they were cherry-picked straight from your v3.
> If you'd prefer your S-o-b on others, please let me know.

It is OK, you did a lot of work splitting things up

Thanks,
Jason
Yi Liu June 10, 2022, 4:11 a.m. UTC | #2
Hi Eric,

On 2022/6/3 01:19, Eric Farman wrote:
> Last autumn, Jason Gunthorpe proposed some rework of vfio-ccw [1],
> to better fit with the new mdev API (thank you!). Part of that
> series was pulled for kernel 5.16 [2], but the complexities of
> the remaining patches got them hung up behind other work.
> 
> This series attempts to dust off and complete that, with the
> goal of untangling the lifecycle of a s390 subchannel when
> bound to vfio-ccw instead of the usual io_subchannel driver.
> 
> Patches 1-8 are inspired by and/or split out from that series,
> in order to be consumable on their own (backports, etc.).
> 
> Patches 9-12 handle the goal of making the FSM complete,
> and synchronizing the subchannel's life with that of the mdev.
> (This was the goal of patch 5 of the larger series [3].)
> 
> Patches 13-14 are pulled directly from the earlier series.
> As these patches hit some other of the consumers of vfio,
> those on CC who are unfamiliar with vfio-ccw probably only
> care about these. :)
> 
> Patches 15-18 links the lifecycle of the vfio_ccw_private struct
> with the mdev via a vfio reference. (Patch 17 was also pulled
> directly from the earlier series.)
> 
> In the end, the subchannel probe/remove callbacks from the css
> driver simply register/unregister with vfio-mdev. The communication
> with the subchannel is delayed until the mdev routines, which
> handles all the vfio-related memory and subchannel enablement.
> There's no longer a configuration where the mdev is closed while
> the subchannel remains enabled, since that's weird.
> 
> @Jason: I carried the S-o-b/r-b tags on patches 13, 14, and 17,
> as they were cherry-picked straight from your v3.
> If you'd prefer your S-o-b on others, please let me know.

very nice to see it. do you have a 5.19 based branch including these
changes on github? I'd like to rebase my vfio cdev patches on top of
your changes. :-)

> [1] https://lore.kernel.org/r/0-v3-57c1502c62fd+2190-ccw_mdev_jgg@nvidia.com/
> [2] https://lore.kernel.org/r/0-v4-cea4f5bd2c00+b52-ccw_mdev_jgg@nvidia.com/
> [3] https://lore.kernel.org/r/5-v3-57c1502c62fd+2190-ccw_mdev_jgg@nvidia.com/
> 
> Cc: Kirti Wankhede <kwankhede@nvidia.com>
> Cc: Jonathan Corbet <corbet@lwn.net>
> Cc: Zhenyu Wang <zhenyuw@linux.intel.com>
> Cc: Zhi Wang <zhi.a.wang@intel.com>
> Cc: intel-gvt-dev@lists.freedesktop.org
> Cc: Tony Krowiak <akrowiak@linux.ibm.com>
> Cc: Jason Herne <jjherne@linux.ibm.com>
> 
> Eric Farman (14):
>    vfio/ccw: Fix FSM state if mdev probe fails
>    vfio/ccw: Ensure mdev->dev is cleared on mdev remove
>    vfio/ccw: Do not change FSM state in subchannel event
>    vfio/ccw: Remove private->mdev
>    vfio/ccw: Pass enum to FSM event jumptable
>    vfio/ccw: Flatten MDEV device (un)register
>    vfio/ccw: Check that private pointer is not NULL
>    vfio/ccw: Create an OPEN FSM Event
>    vfio/ccw: Create a CLOSE FSM event
>    vfio/ccw: Refactor vfio_ccw_mdev_reset
>    vfio/ccw: Move FSM open/close to MDEV open/close
>    vfio/ccw: Manage private with mdev
>    vfio/ccw: Create a get_private routine
>    vfio/ccw: Manage ccw/mdev reference counts
> 
> Jason Gunthorpe (3):
>    vfio/mdev: Consolidate all the device_api sysfs into the core code
>    vfio/mdev: Add mdev available instance checking to the core
>    vfio: Export vfio_device_try_get()
> 
> Michael Kawano (1):
>    vfio/ccw: Remove UUID from s390 debug log
> 
>   .../driver-api/vfio-mediated-device.rst       |   8 +-
>   drivers/gpu/drm/i915/gvt/kvmgt.c              |   9 +-
>   drivers/s390/cio/vfio_ccw_async.c             |   1 -
>   drivers/s390/cio/vfio_ccw_drv.c               | 114 ++++++--------
>   drivers/s390/cio/vfio_ccw_fsm.c               |  91 +++++++++--
>   drivers/s390/cio/vfio_ccw_ops.c               | 145 ++++++------------
>   drivers/s390/cio/vfio_ccw_private.h           |  33 +++-
>   drivers/s390/crypto/vfio_ap_ops.c             |  41 ++---
>   drivers/s390/crypto/vfio_ap_private.h         |   2 -
>   drivers/vfio/mdev/mdev_core.c                 |  13 +-
>   drivers/vfio/mdev/mdev_private.h              |   2 +
>   drivers/vfio/mdev/mdev_sysfs.c                |  64 +++++++-
>   drivers/vfio/vfio.c                           |   3 +-
>   include/linux/mdev.h                          |  13 +-
>   include/linux/vfio.h                          |   1 +
>   samples/vfio-mdev/mbochs.c                    |   9 +-
>   samples/vfio-mdev/mdpy.c                      |  31 +---
>   samples/vfio-mdev/mtty.c                      |  10 +-
>   18 files changed, 300 insertions(+), 290 deletions(-)
>