From: Jason Gunthorpe <jgg@nvidia.com>
To: David Airlie <airlied@linux.ie>,
Tony Krowiak <akrowiak@linux.ibm.com>,
Alex Williamson <alex.williamson@redhat.com>,
Christian Borntraeger <borntraeger@de.ibm.com>,
Cornelia Huck <cohuck@redhat.com>,
Jonathan Corbet <corbet@lwn.net>, Daniel Vetter <daniel@ffwll.ch>,
Diana Craciun <diana.craciun@oss.nxp.com>,
dri-devel@lists.freedesktop.org,
Eric Auger <eric.auger@redhat.com>,
Eric Farman <farman@linux.ibm.com>,
Harald Freudenberger <freude@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Heiko Carstens <hca@linux.ibm.com>,
intel-gfx@lists.freedesktop.org,
intel-gvt-dev@lists.freedesktop.org,
Jani Nikula <jani.nikula@linux.intel.com>,
Jason Herne <jjherne@linux.ibm.com>,
Joonas Lahtinen <joonas.lahtinen@linux.intel.com>,
kvm@vger.kernel.org, Kirti Wankhede <kwankhede@nvidia.com>,
linux-doc@vger.kernel.org, linux-s390@vger.kernel.org,
Matthew Rosato <mjrosato@linux.ibm.com>,
Peter Oberparleiter <oberpar@linux.ibm.com>,
Halil Pasic <pasic@linux.ibm.com>,
Rodrigo Vivi <rodrigo.vivi@intel.com>,
Vineeth Vijayan <vneethv@linux.ibm.com>,
Zhi Wang <zhi.a.wang@intel.com>
Cc: Max Gurtovoy <mgurtovoy@nvidia.com>,
Yishai Hadas <yishaih@nvidia.com>,
"Raj, Ashok" <ashok.raj@intel.com>,
Leon Romanovsky <leonro@nvidia.com>,
Christoph Hellwig <hch@lst.de>
Subject: [PATCH v2 00/14] Provide core infrastructure for managing open/release
Date: Tue, 20 Jul 2021 14:42:46 -0300 [thread overview]
Message-ID: <0-v2-b6a5582525c9+ff96-vfio_reflck_jgg@nvidia.com> (raw)
This is in support of Max's series to split vfio-pci. For that to work the
reflck concept embedded in vfio-pci needs to be sharable across all of the
new VFIO PCI drivers which motivated re-examining how this is
implemented.
Another significant issue is how the VFIO PCI core includes code like:
if (pci_dev_driver(pdev) != &vfio_pci_driver)
Which is not scalable if there are going to be multiple different driver
types.
This series takes the approach of moving the "reflck" mechanism into the
core code as a "device set". Each vfio_device driver can specify how
vfio_devices are grouped into the set using a key and the set comes along
with a set-global mutex. The core code manages creating per-device set
memory and associating it with each vfio_device.
In turn this allows the core code to provide an open/close_device()
operation that is called only for the first/last FD, and is called under
the global device set lock.
Review of all the drivers show that they are either already open coding
the first/last semantic or are buggy and missing it. All drivers are
migrated/fixed to the new open/close_device ops and the unused per-FD
open()/release() ops are deleted.
The special behavior of PCI around the bus/slot "reset group" is recast in
terms of the device set which conslidates the reflck, eliminates two
touches of pci_dev_driver(), and allows the reset mechanism to share
across all VFIO PCI drivers. PCI is changed to acquire devices directly
from the device set instead of trying to work backwards from the struct
pci_device.
Overall a few minor bugs are squashed and quite a bit of code is removed
through consolidation.
v2:
- Reorder fsl and mbochs vfio_uninit_group_dev
- Fix missing error unwind in mbochs
- Return 0 from mdev open_device if there is no op
- Fix style for else {}
- Spelling fix for singleton
- Acquire cur_mem under lock
- Always use error unwind flow for vfio_pci_check_all_devices_bound()
v1: https://lore.kernel.org/r/0-v1-eaf3ccbba33c+1add0-vfio_reflck_jgg@nvidia.com
Jason Gunthorpe (12):
vfio/samples: Remove module get/put
vfio/mbochs: Fix missing error unwind in mbochs_probe()
vfio: Provide better generic support for open/release vfio_device_ops
vfio/samples: Delete useless open/close
vfio/fsl: Move to the device set infrastructure
vfio/platform: Use open_device() instead of open coding a refcnt
scheme
vfio/pci: Change vfio_pci_try_bus_reset() to use the dev_set
vfio/pci: Reorganize VFIO_DEVICE_PCI_HOT_RESET to use the device set
vfio/mbochs: Fix close when multiple device FDs are open
vfio/ap,ccw: Fix open/close when multiple device FDs are open
vfio/gvt: Fix open/close when multiple device FDs are open
vfio: Remove struct vfio_device_ops open/release
Max Gurtovoy (1):
vfio: Introduce a vfio_uninit_group_dev() API call
Yishai Hadas (1):
vfio/pci: Move to the device set infrastructure
Documentation/driver-api/vfio.rst | 4 +-
drivers/gpu/drm/i915/gvt/kvmgt.c | 8 +-
drivers/s390/cio/vfio_ccw_ops.c | 8 +-
drivers/s390/crypto/vfio_ap_ops.c | 8 +-
drivers/vfio/fsl-mc/vfio_fsl_mc.c | 158 ++----
drivers/vfio/fsl-mc/vfio_fsl_mc_intr.c | 6 +-
drivers/vfio/fsl-mc/vfio_fsl_mc_private.h | 7 -
drivers/vfio/mdev/vfio_mdev.c | 31 +-
drivers/vfio/pci/vfio_pci.c | 457 ++++++------------
drivers/vfio/pci/vfio_pci_private.h | 7 -
drivers/vfio/platform/vfio_platform_common.c | 86 ++--
drivers/vfio/platform/vfio_platform_private.h | 1 -
drivers/vfio/vfio.c | 151 +++++-
include/linux/mdev.h | 9 +-
include/linux/vfio.h | 26 +-
samples/vfio-mdev/mbochs.c | 23 +-
samples/vfio-mdev/mdpy.c | 40 +-
samples/vfio-mdev/mtty.c | 40 +-
18 files changed, 444 insertions(+), 626 deletions(-)
--
2.32.0
next reply other threads:[~2021-07-20 17:43 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-20 17:42 Jason Gunthorpe [this message]
2021-07-20 17:42 ` [PATCH v2 01/14] vfio/samples: Remove module get/put Jason Gunthorpe
2021-07-20 17:42 ` [PATCH v2 02/14] vfio/mbochs: Fix missing error unwind in mbochs_probe() Jason Gunthorpe
2021-07-20 22:01 ` Alex Williamson
2021-07-20 22:49 ` Jason Gunthorpe
2021-07-20 22:54 ` Alex Williamson
2021-07-21 9:18 ` Cornelia Huck
2021-07-21 9:16 ` Cornelia Huck
2021-07-20 17:42 ` [PATCH v2 03/14] vfio: Introduce a vfio_uninit_group_dev() API call Jason Gunthorpe
2021-07-21 11:33 ` Cornelia Huck
2021-07-20 17:42 ` [PATCH v2 04/14] vfio: Provide better generic support for open/release vfio_device_ops Jason Gunthorpe
2021-07-22 14:42 ` Cornelia Huck
[not found] ` <20210723073914.GC864@lst.de>
2021-07-23 14:38 ` Jason Gunthorpe
2021-07-20 17:42 ` [PATCH v2 05/14] vfio/samples: Delete useless open/close Jason Gunthorpe
2021-07-20 17:42 ` [PATCH v2 06/14] vfio/fsl: Move to the device set infrastructure Jason Gunthorpe
[not found] ` <20210723074435.GA2795@lst.de>
2021-07-23 12:22 ` Jason Gunthorpe
[not found] ` <20210723122903.GA24436@lst.de>
2021-07-23 13:11 ` Jason Gunthorpe
2021-07-20 17:42 ` [PATCH v2 07/14] vfio/platform: Use open_device() instead of open coding a refcnt scheme Jason Gunthorpe
2021-07-22 14:48 ` Cornelia Huck
[not found] ` <20210723074521.GB2795@lst.de>
2021-07-23 12:23 ` Jason Gunthorpe
2021-07-20 17:42 ` [PATCH v2 08/14] vfio/pci: Move to the device set infrastructure Jason Gunthorpe
[not found] ` <20210723074749.GC2795@lst.de>
2021-07-23 12:59 ` Jason Gunthorpe
2021-07-20 17:42 ` [PATCH v2 09/14] vfio/pci: Change vfio_pci_try_bus_reset() to use the dev_set Jason Gunthorpe
[not found] ` <20210723080543.GD2795@lst.de>
2021-07-23 13:30 ` Jason Gunthorpe
2021-07-20 17:42 ` [PATCH v2 10/14] vfio/pci: Reorganize VFIO_DEVICE_PCI_HOT_RESET to use the device set Jason Gunthorpe
[not found] ` <20210723081208.GE2795@lst.de>
2021-07-23 13:31 ` Jason Gunthorpe
2021-07-20 17:42 ` [PATCH v2 11/14] vfio/mbochs: Fix close when multiple device FDs are open Jason Gunthorpe
2021-07-20 17:42 ` [PATCH v2 12/14] vfio/ap, ccw: Fix open/close " Jason Gunthorpe
2021-07-20 17:42 ` [PATCH v2 13/14] vfio/gvt: " Jason Gunthorpe
2021-07-20 17:43 ` [PATCH v2 14/14] vfio: Remove struct vfio_device_ops open/release Jason Gunthorpe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=0-v2-b6a5582525c9+ff96-vfio_reflck_jgg@nvidia.com \
--to=jgg@nvidia.com \
--cc=airlied@linux.ie \
--cc=akrowiak@linux.ibm.com \
--cc=alex.williamson@redhat.com \
--cc=ashok.raj@intel.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=corbet@lwn.net \
--cc=daniel@ffwll.ch \
--cc=diana.craciun@oss.nxp.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=eric.auger@redhat.com \
--cc=farman@linux.ibm.com \
--cc=freude@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=hch@lst.de \
--cc=intel-gfx@lists.freedesktop.org \
--cc=intel-gvt-dev@lists.freedesktop.org \
--cc=jani.nikula@linux.intel.com \
--cc=jjherne@linux.ibm.com \
--cc=joonas.lahtinen@linux.intel.com \
--cc=kvm@vger.kernel.org \
--cc=kwankhede@nvidia.com \
--cc=leonro@nvidia.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mgurtovoy@nvidia.com \
--cc=mjrosato@linux.ibm.com \
--cc=oberpar@linux.ibm.com \
--cc=pasic@linux.ibm.com \
--cc=rodrigo.vivi@intel.com \
--cc=vneethv@linux.ibm.com \
--cc=yishaih@nvidia.com \
--cc=zhi.a.wang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).