All of lore.kernel.org
 help / color / mirror / Atom feed
* Allow mdev drivers to directly create the vfio_device (v4)
@ 2021-06-17 14:22 ` Christoph Hellwig
  0 siblings, 0 replies; 46+ messages in thread
From: Christoph Hellwig @ 2021-06-17 14:22 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Jason Gunthorpe, Alex Williamson, Kirti Wankhede
  Cc: David Airlie, Tony Krowiak, Christian Borntraeger, Cornelia Huck,
	Jonathan Corbet, Daniel Vetter, dri-devel, Vasily Gorbik,
	Heiko Carstens, intel-gfx, Jani Nikula, Jason Herne,
	Joonas Lahtinen, kvm, linux-doc, linux-s390, Halil Pasic,
	Rafael J. Wysocki, Rodrigo Vivi

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.

Changes since v3:
 - minor cleanup to avoid the probe_ret variable in really_probe entirely
 - use a saner name for a variable in mdev-mtty
 - use a better driver name in mdev-mtty
 - update the documentation to match the new interface

Changes since v2:
 - avoid warning spam for successful probes
 - improve the probe_count protection

^ permalink raw reply	[flat|nested] 46+ messages in thread
* Allow mdev drivers to directly create the vfio_device (v3)
@ 2021-06-15 13:35 Christoph Hellwig
  2021-06-15 13:35 ` [PATCH 02/10] driver core: Better distinguish probe errors in really_probe Christoph Hellwig
  0 siblings, 1 reply; 46+ messages in thread
From: Christoph Hellwig @ 2021-06-15 13:35 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Jason Gunthorpe, Alex Williamson, Kirti Wankhede
  Cc: David Airlie, Tony Krowiak, Christian Borntraeger, Cornelia Huck,
	Jonathan Corbet, Daniel Vetter, dri-devel, Vasily Gorbik,
	Heiko Carstens, intel-gfx, Jani Nikula, Jason Herne,
	Joonas Lahtinen, kvm, linux-doc, linux-s390, Halil Pasic,
	Rafael J. Wysocki, Rodrigo Vivi

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.

Changes since v1:
 - avoid warning spam for successful probes
 - improve the probe_count protection

^ permalink raw reply	[flat|nested] 46+ messages in thread
* Allow mdev drivers to directly create the vfio_device (v2 / alternative)
@ 2021-06-14 15:08 Christoph Hellwig
  2021-06-14 15:08 ` [PATCH 02/10] driver core: Better distinguish probe errors in really_probe Christoph Hellwig
  0 siblings, 1 reply; 46+ messages in thread
From: Christoph Hellwig @ 2021-06-14 15:08 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Jason Gunthorpe, Alex Williamson, Kirti Wankhede
  Cc: David Airlie, Tony Krowiak, Christian Borntraeger, Cornelia Huck,
	Jonathan Corbet, Daniel Vetter, dri-devel, Vasily Gorbik,
	Heiko Carstens, intel-gfx, Jani Nikula, Jason Herne,
	Joonas Lahtinen, kvm, linux-doc, linux-s390, Halil Pasic,
	Rafael J. Wysocki, Rodrigo Vivi

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.

^ permalink raw reply	[flat|nested] 46+ messages in thread

end of thread, other threads:[~2021-06-23 10:16 UTC | newest]

Thread overview: 46+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-17 14:22 Allow mdev drivers to directly create the vfio_device (v4) Christoph Hellwig
2021-06-17 14:22 ` [Intel-gfx] " Christoph Hellwig
2021-06-17 14:22 ` [PATCH 01/10] driver core: Pull required checks into driver_probe_device() Christoph Hellwig
2021-06-17 14:22   ` [Intel-gfx] " Christoph Hellwig
2021-06-17 14:22 ` [PATCH 02/10] driver core: Better distinguish probe errors in really_probe Christoph Hellwig
2021-06-17 14:22   ` [Intel-gfx] " Christoph Hellwig
2021-06-17 14:22 ` [PATCH 03/10] driver core: Flow the return code from ->probe() through to sysfs bind Christoph Hellwig
2021-06-17 14:22   ` [Intel-gfx] " Christoph Hellwig
2021-06-17 14:22 ` [PATCH 04/10] driver core: Don't return EPROBE_DEFER to userspace during " Christoph Hellwig
2021-06-17 14:22   ` [Intel-gfx] " Christoph Hellwig
2021-06-17 14:22 ` [PATCH 05/10] driver core: Export device_driver_attach() Christoph Hellwig
2021-06-17 14:22   ` [Intel-gfx] " Christoph Hellwig
2021-06-17 14:22 ` [PATCH 06/10] vfio/mdev: Remove CONFIG_VFIO_MDEV_DEVICE Christoph Hellwig
2021-06-17 14:22   ` [Intel-gfx] " Christoph Hellwig
2021-06-17 14:22 ` [PATCH 07/10] vfio/mdev: Allow the mdev_parent_ops to specify the device driver to bind Christoph Hellwig
2021-06-17 14:22   ` [Intel-gfx] " Christoph Hellwig
2021-06-17 14:22 ` [PATCH 08/10] vfio/mtty: Convert to use vfio_register_group_dev() Christoph Hellwig
2021-06-17 14:22   ` [Intel-gfx] " Christoph Hellwig
2021-06-17 14:22 ` [PATCH 09/10] vfio/mdpy: " Christoph Hellwig
2021-06-17 14:22   ` [Intel-gfx] " Christoph Hellwig
2021-06-17 14:22 ` [PATCH 10/10] vfio/mbochs: " Christoph Hellwig
2021-06-17 14:22   ` [Intel-gfx] " Christoph Hellwig
2021-06-17 14:47 ` [Intel-gfx] ✗ Fi.CI.CHECKPATCH: warning for series starting with [01/10] driver core: Pull required checks into driver_probe_device() Patchwork
2021-06-17 15:16 ` [Intel-gfx] ✓ Fi.CI.BAT: success " Patchwork
2021-06-17 17:12 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork
2021-06-23  0:05 ` Allow mdev drivers to directly create the vfio_device (v4) Jason Gunthorpe
2021-06-23  0:05   ` [Intel-gfx] " Jason Gunthorpe
2021-06-23  0:05   ` Jason Gunthorpe
2021-06-23  1:21   ` Alex Williamson
2021-06-23  1:21     ` [Intel-gfx] " Alex Williamson
2021-06-23  1:21     ` Alex Williamson
  -- strict thread matches above, loose matches on Subject: below --
2021-06-15 13:35 Allow mdev drivers to directly create the vfio_device (v3) Christoph Hellwig
2021-06-15 13:35 ` [PATCH 02/10] driver core: Better distinguish probe errors in really_probe Christoph Hellwig
2021-06-15 13:53   ` Cornelia Huck
2021-06-15 13:53     ` Cornelia Huck
2021-06-15 14:09     ` Greg Kroah-Hartman
2021-06-15 14:09       ` Greg Kroah-Hartman
2021-06-15 14:09   ` Greg Kroah-Hartman
2021-06-15 14:09     ` Greg Kroah-Hartman
2021-06-16 20:20   ` Kirti Wankhede
2021-06-16 20:20     ` Kirti Wankhede
2021-06-14 15:08 Allow mdev drivers to directly create the vfio_device (v2 / alternative) Christoph Hellwig
2021-06-14 15:08 ` [PATCH 02/10] driver core: Better distinguish probe errors in really_probe Christoph Hellwig
2021-06-14 18:47   ` Kirti Wankhede
2021-06-14 18:47     ` Kirti Wankhede
2021-06-15  5:17   ` Greg Kroah-Hartman
2021-06-15  5:17     ` Greg Kroah-Hartman
2021-06-15  5:48     ` Christoph Hellwig

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.