dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
  • [parent not found: <20210615133519.754763-8-hch@lst.de>]
  • [parent not found: <20210615133519.754763-6-hch@lst.de>]
  • [parent not found: <20210615133519.754763-10-hch@lst.de>]
  • [parent not found: <20210615133519.754763-11-hch@lst.de>]
  • * Re: Allow mdev drivers to directly create the vfio_device (v3)
           [not found] <20210615133519.754763-1-hch@lst.de>
                       ` (4 preceding siblings ...)
           [not found] ` <20210615133519.754763-11-hch@lst.de>
    @ 2021-06-15 19:35 ` Alex Williamson
      2021-06-15 20:35   ` Jason Gunthorpe
           [not found] ` <20210615133519.754763-3-hch@lst.de>
                       ` (2 subsequent siblings)
      8 siblings, 1 reply; 25+ messages in thread
    From: Alex Williamson @ 2021-06-15 19:35 UTC (permalink / raw)
      To: Christoph Hellwig
      Cc: kvm, linux-doc, David Airlie, dri-devel, Kirti Wankhede,
    	linux-s390, Jonathan Corbet, Rafael J. Wysocki, Halil Pasic,
    	Christian Borntraeger, Jason Gunthorpe, intel-gfx, Jason Herne,
    	Vasily Gorbik, Heiko Carstens, Rodrigo Vivi, Tony Krowiak,
    	Greg Kroah-Hartman, Cornelia Huck
    
    On Tue, 15 Jun 2021 15:35:09 +0200
    Christoph Hellwig <hch@lst.de> wrote:
    
    > This is my alternative take on this series from Jason:
    > 
    > https://lore.kernel.org/dri-devel/87czsszi9i.fsf@redhat.com/T/
    > 
    > The mdev/vfio parts are exactly the same, but this solves the driver core
    > changes for the direct probing without the in/out flag that Greg hated,
    > which cause a little more work, but probably make the result better.
    > 
    > Original decription from Jason below:
    > 
    > 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's struct vfio_device and the actual
    > device driver.
    > 
    > Instead, allow mdev drivers implement an actual struct mdev_driver and
    > directly call vfio_register_group_dev() in the probe() function for the
    > mdev. 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.
    > 
    > Ultimately converting all the drivers unlocks a fair number of additional
    > VFIO simplifications and cleanups.
    
    Looks like we need an update to
    Documentation/driver-api/vfio-mediated-device.rst to go along with
    this.
    
    Also, if we're preserving compatibility with the "legacy"
    mdev_parent_ops callbacks without deprecating them, does it really make
    sense to convert every one of the sample drivers to this new direct
    registration?  Thanks,
    
    Alex
    
    
    ^ permalink raw reply	[flat|nested] 25+ messages in thread
  • [parent not found: <20210615133519.754763-3-hch@lst.de>]
  • [parent not found: <20210615133519.754763-7-hch@lst.de>]
  • [parent not found: <20210615133519.754763-9-hch@lst.de>]
  • [parent not found: <20210614150846.4111871-1-hch@lst.de>]
    * [PATCH 00/10] Allow mdev drivers to directly create the vfio_device
    @ 2021-06-08  0:55 Jason Gunthorpe
      2021-06-08  0:55 ` [PATCH 06/10] vfio/mdev: Remove CONFIG_VFIO_MDEV_DEVICE Jason Gunthorpe
      0 siblings, 1 reply; 25+ messages in thread
    From: Jason Gunthorpe @ 2021-06-08  0:55 UTC (permalink / raw)
      To: David Airlie, Tony Krowiak, Alex Williamson,
    	Christian Borntraeger, Cornelia Huck, Jonathan Corbet,
    	Daniel Vetter, dri-devel, Vasily Gorbik, Greg Kroah-Hartman,
    	Heiko Carstens, intel-gfx, Jani Nikula, Jason Herne,
    	Joonas Lahtinen, kvm, Kirti Wankhede, linux-doc, linux-s390,
    	Halil Pasic, Rafael J. Wysocki, Rodrigo Vivi
      Cc: Christoph Hellwig
    
    This is a "v3" of the previous posted full conversion:
      https://lore.kernel.org/r/0-v2-7667f42c9bad+935-vfio3_jgg@nvidia.com
    
    Without the trailing patches that are running into complications:
     - The CCW conversion has some complicated remarks
     - AP is waiting for some locking stuff to get worked out
     - No feedback on GT
     - The license change topic for removing vfio_mdev.c
    
    Getting the baseline functionality merged will allow Intel's IDXD mdev
    driver to advance. It has already been RFC posted in the new format:
    
    https://lore.kernel.org/kvm/162164243591.261970.3439987543338120797.stgit@djiang5-desk3.ch.intel.com/
    
    This series includes base infrastructure and the sample conversions. The
    remaining four issues can be sorted out one by one.
    
    The major change in v3 is to enhance the driver core support for binding
    based on the request from Christoph Hellwig and Dan Williams. Based on
    some light analysis this looks broadly useful:
    
    https://lore.kernel.org/kvm/20210428233856.GY1370958@nvidia.com/
    
    ====
    
    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's struct vfio_device and the actual
    device driver.
    
    Instead, allow mdev drivers implement an actual struct mdev_driver and
    directly call vfio_register_group_dev() in the probe() function for the
    mdev. 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.
    
    Ultimately converting all the drivers unlocks a fair number of additional
    VFIO simplifications and cleanups.
    
    v3:
     - Use device_driver_attach() from the driver core
     - 5 new patches to make device_driver_attach() exported and usable for this
     - Remove trailing patches for now
    v2: https://lore.kernel.org/r/0-v2-7667f42c9bad+935-vfio3_jgg@nvidia.com
     - 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@nvidia.com
    
    Jason Gunthorpe (10):
      driver core: Do not continue searching for drivers if deferred probe
        is used
      driver core: Pull required checks into driver_probe_device()
      driver core: Flow the return code from ->probe() through to sysfs bind
      driver core: Don't return EPROBE_DEFER to userspace during sysfs bind
      driver core: Export device_driver_attach()
      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()
    
     Documentation/s390/vfio-ap.rst   |   1 -
     arch/s390/Kconfig                |   2 +-
     drivers/base/base.h              |   1 -
     drivers/base/bus.c               |   6 +-
     drivers/base/dd.c                | 116 ++++++++++++-------
     drivers/gpu/drm/i915/Kconfig     |   2 +-
     drivers/vfio/mdev/Kconfig        |   7 --
     drivers/vfio/mdev/Makefile       |   3 +-
     drivers/vfio/mdev/mdev_core.c    |  46 ++++++--
     drivers/vfio/mdev/mdev_driver.c  |  10 ++
     drivers/vfio/mdev/mdev_private.h |   2 +
     drivers/vfio/mdev/vfio_mdev.c    |  24 +---
     include/linux/device.h           |   2 +
     include/linux/mdev.h             |   2 +
     samples/Kconfig                  |   6 +-
     samples/vfio-mdev/mbochs.c       | 163 +++++++++++++++------------
     samples/vfio-mdev/mdpy.c         | 159 ++++++++++++++------------
     samples/vfio-mdev/mtty.c         | 185 ++++++++++++++-----------------
     18 files changed, 397 insertions(+), 340 deletions(-)
    
    -- 
    2.31.1
    
    
    ^ permalink raw reply	[flat|nested] 25+ messages in thread

    end of thread, other threads:[~2021-06-16 20:21 UTC | newest]
    
    Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
    -- links below jump to the message on this page --
         [not found] <20210615133519.754763-1-hch@lst.de>
         [not found] ` <20210615133519.754763-5-hch@lst.de>
    2021-06-15 14:03   ` [PATCH 04/10] driver core: Don't return EPROBE_DEFER to userspace during sysfs bind Cornelia Huck
    2021-06-15 19:36   ` Alex Williamson
         [not found] ` <20210615133519.754763-8-hch@lst.de>
    2021-06-15 14:06   ` [PATCH 07/10] vfio/mdev: Allow the mdev_parent_ops to specify the device driver to bind Cornelia Huck
    2021-06-15 14:11   ` Greg Kroah-Hartman
    2021-06-16  0:00     ` Jason Gunthorpe
    2021-06-16  6:39       ` Greg Kroah-Hartman
    2021-06-16 20:20   ` Kirti Wankhede
         [not found] ` <20210615133519.754763-6-hch@lst.de>
    2021-06-15 14:10   ` [PATCH 05/10] driver core: Export device_driver_attach() Greg Kroah-Hartman
         [not found] ` <20210615133519.754763-10-hch@lst.de>
    2021-06-15 14:12   ` [PATCH 09/10] vfio/mdpy: Convert to use vfio_register_group_dev() Greg Kroah-Hartman
         [not found] ` <20210615133519.754763-11-hch@lst.de>
    2021-06-15 14:12   ` [PATCH 10/10] vfio/mbochs: " Greg Kroah-Hartman
    2021-06-15 19:35 ` Allow mdev drivers to directly create the vfio_device (v3) Alex Williamson
    2021-06-15 20:35   ` Jason Gunthorpe
         [not found]     ` <20210616031313.GA24992@lst.de>
    2021-06-16 14:03       ` Jason Gunthorpe
         [not found] ` <20210615133519.754763-3-hch@lst.de>
    2021-06-15 13:53   ` [PATCH 02/10] driver core: Better distinguish probe errors in really_probe Cornelia Huck
    2021-06-15 14:09     ` Greg Kroah-Hartman
    2021-06-15 14:09   ` Greg Kroah-Hartman
    2021-06-16 20:20   ` Kirti Wankhede
         [not found] ` <20210615133519.754763-7-hch@lst.de>
    2021-06-15 14:10   ` [PATCH 06/10] vfio/mdev: Remove CONFIG_VFIO_MDEV_DEVICE Greg Kroah-Hartman
    2021-06-16 20:20   ` Kirti Wankhede
         [not found] ` <20210615133519.754763-9-hch@lst.de>
    2021-06-15 14:11   ` [PATCH 08/10] vfio/mtty: Convert to use vfio_register_group_dev() Greg Kroah-Hartman
    2021-06-16 20:20   ` Kirti Wankhede
         [not found] <20210614150846.4111871-1-hch@lst.de>
         [not found] ` <20210614150846.4111871-7-hch@lst.de>
    2021-06-15 10:50   ` [PATCH 06/10] vfio/mdev: Remove CONFIG_VFIO_MDEV_DEVICE Cornelia Huck
    2021-06-08  0:55 [PATCH 00/10] Allow mdev drivers to directly create the vfio_device Jason Gunthorpe
    2021-06-08  0:55 ` [PATCH 06/10] vfio/mdev: Remove CONFIG_VFIO_MDEV_DEVICE Jason Gunthorpe
    2021-06-11 12:40   ` Cornelia Huck
    2021-06-14 12:35     ` Jason Gunthorpe
    

    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).