All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] Update VFIO doc
@ 2023-02-02  8:01 Yi Liu
  2023-02-02  8:02 ` [PATCH 1/2] vfio: Update the kdoc for vfio_device_ops Yi Liu
  2023-02-02  8:02 ` [PATCH 2/2] docs: vfio: Update vfio.rst per latest interfaces Yi Liu
  0 siblings, 2 replies; 10+ messages in thread
From: Yi Liu @ 2023-02-02  8:01 UTC (permalink / raw)
  To: alex.williamson, jgg
  Cc: kevin.tian, chao.p.peng, eric.auger, yi.l.liu, yi.y.sun, kvm

Two updates VFIO doc.

Yi Liu (2):
  vfio: Update the kdoc for vfio_device_ops
  docs: vfio: Update vfio.rst per latest interfaces

 Documentation/driver-api/vfio.rst | 71 +++++++++++++++++++++----------
 include/linux/vfio.h              |  4 ++
 2 files changed, 52 insertions(+), 23 deletions(-)

-- 
2.34.1


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

* [PATCH 1/2] vfio: Update the kdoc for vfio_device_ops
  2023-02-02  8:01 [PATCH 0/2] Update VFIO doc Yi Liu
@ 2023-02-02  8:02 ` Yi Liu
  2023-02-03  4:01   ` Tian, Kevin
  2023-02-02  8:02 ` [PATCH 2/2] docs: vfio: Update vfio.rst per latest interfaces Yi Liu
  1 sibling, 1 reply; 10+ messages in thread
From: Yi Liu @ 2023-02-02  8:02 UTC (permalink / raw)
  To: alex.williamson, jgg
  Cc: kevin.tian, chao.p.peng, eric.auger, yi.l.liu, yi.y.sun, kvm

this is missed when adding bind_iommufd/unbind_iommufd and attach_ioas.

Signed-off-by: Yi Liu <yi.l.liu@intel.com>
---
 include/linux/vfio.h | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/include/linux/vfio.h b/include/linux/vfio.h
index 35be78e9ae57..cc7685386b53 100644
--- a/include/linux/vfio.h
+++ b/include/linux/vfio.h
@@ -70,6 +70,10 @@ struct vfio_device {
  *
  * @init: initialize private fields in device structure
  * @release: Reclaim private fields in device structure
+ * @bind_iommufd: Called when binding the device to an iommufd
+ * @unbind_iommufd: Opposite of bind_iommufd
+ * @attach_ioas: Called when attaching device to an IOAS/HWPT managed by the
+ *		 bound iommufd. Undo in unbind_iommufd.
  * @open_device: Called when the first file descriptor is opened for this device
  * @close_device: Opposite of open_device
  * @read: Perform read(2) on device file descriptor
-- 
2.34.1


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

* [PATCH 2/2] docs: vfio: Update vfio.rst per latest interfaces
  2023-02-02  8:01 [PATCH 0/2] Update VFIO doc Yi Liu
  2023-02-02  8:02 ` [PATCH 1/2] vfio: Update the kdoc for vfio_device_ops Yi Liu
@ 2023-02-02  8:02 ` Yi Liu
  2023-02-02 22:01   ` Alex Williamson
  2023-02-03  4:07   ` Tian, Kevin
  1 sibling, 2 replies; 10+ messages in thread
From: Yi Liu @ 2023-02-02  8:02 UTC (permalink / raw)
  To: alex.williamson, jgg
  Cc: kevin.tian, chao.p.peng, eric.auger, yi.l.liu, yi.y.sun, kvm

this imports the latest vfio_device_ops definition to vfio.rst.

Signed-off-by: Yi Liu <yi.l.liu@intel.com>
---
 Documentation/driver-api/vfio.rst | 71 +++++++++++++++++++++----------
 1 file changed, 48 insertions(+), 23 deletions(-)

diff --git a/Documentation/driver-api/vfio.rst b/Documentation/driver-api/vfio.rst
index c663b6f97825..10d84f01fda1 100644
--- a/Documentation/driver-api/vfio.rst
+++ b/Documentation/driver-api/vfio.rst
@@ -249,19 +249,22 @@ VFIO bus driver API
 
 VFIO bus drivers, such as vfio-pci make use of only a few interfaces
 into VFIO core.  When devices are bound and unbound to the driver,
-the driver should call vfio_register_group_dev() and
-vfio_unregister_group_dev() respectively::
+the driver should call vfio_register_group_dev() or
+vfio_register_emulated_iommu_dev() and vfio_unregister_group_dev()
+respectively::
 
-	void vfio_init_group_dev(struct vfio_device *device,
-				struct device *dev,
-				const struct vfio_device_ops *ops);
-	void vfio_uninit_group_dev(struct vfio_device *device);
 	int vfio_register_group_dev(struct vfio_device *device);
+	int vfio_register_emulated_iommu_dev(struct vfio_device *device);
 	void vfio_unregister_group_dev(struct vfio_device *device);
 
 The driver should embed the vfio_device in its own structure and call
-vfio_init_group_dev() to pre-configure it before going to registration
-and call vfio_uninit_group_dev() after completing the un-registration.
+vfio_alloc_device() or _vfio_alloc_device() to allocate the structure,
+and can register @init/@release callbacks to manage any private state
+wrapping the vfio_device.
+
+	vfio_alloc_device(dev_struct, member, dev, ops);
+	void vfio_put_device(struct vfio_device *device);
+
 vfio_register_group_dev() indicates to the core to begin tracking the
 iommu_group of the specified dev and register the dev as owned by a VFIO bus
 driver. Once vfio_register_group_dev() returns it is possible for userspace to
@@ -270,28 +273,50 @@ ready before calling it. The driver provides an ops structure for callbacks
 similar to a file operations structure::
 
 	struct vfio_device_ops {
-		int	(*open)(struct vfio_device *vdev);
+		char	*name;
+		int	(*init)(struct vfio_device *vdev);
 		void	(*release)(struct vfio_device *vdev);
+		int	(*bind_iommufd)(struct vfio_device *vdev,
+					struct iommufd_ctx *ictx, u32 *out_device_id);
+		void	(*unbind_iommufd)(struct vfio_device *vdev);
+		int	(*attach_ioas)(struct vfio_device *vdev, u32 *pt_id);
+		int	(*open_device)(struct vfio_device *vdev);
+		void	(*close_device)(struct vfio_device *vdev);
 		ssize_t	(*read)(struct vfio_device *vdev, char __user *buf,
 				size_t count, loff_t *ppos);
-		ssize_t	(*write)(struct vfio_device *vdev,
-				 const char __user *buf,
-				 size_t size, loff_t *ppos);
+		ssize_t	(*write)(struct vfio_device *vdev, const char __user *buf,
+			 size_t count, loff_t *size);
 		long	(*ioctl)(struct vfio_device *vdev, unsigned int cmd,
 				 unsigned long arg);
-		int	(*mmap)(struct vfio_device *vdev,
-				struct vm_area_struct *vma);
-	};
+		int	(*mmap)(struct vfio_device *vdev, struct vm_area_struct *vma);
+		void	(*request)(struct vfio_device *vdev, unsigned int count);
+		int	(*match)(struct vfio_device *vdev, char *buf);
+		void	(*dma_unmap)(struct vfio_device *vdev, u64 iova, u64 length);
+		int	(*device_feature)(struct vfio_device *device, u32 flags,
+					  void __user *arg, size_t argsz);
+};
 
 Each function is passed the vdev that was originally registered
-in the vfio_register_group_dev() call above.  This allows the bus driver
-to obtain its private data using container_of().  The open/release
-callbacks are issued when a new file descriptor is created for a
-device (via VFIO_GROUP_GET_DEVICE_FD).  The ioctl interface provides
-a direct pass through for VFIO_DEVICE_* ioctls.  The read/write/mmap
-interfaces implement the device region access defined by the device's
-own VFIO_DEVICE_GET_REGION_INFO ioctl.
-
+in the vfio_register_group_dev() or vfio_register_emulated_iommu_dev()
+call above.  This allows the bus driver to obtain its private data using
+container_of().
+- The init/release callbacks are issued in the drivers's structure allocation
+  and put.
+- The open/close_device callbacks are issued when a new file descriptor is
+  created for a device (via VFIO_GROUP_GET_DEVICE_FD).
+- The ioctl interface provides a direct pass through for VFIO_DEVICE_* ioctls.
+- The [un]bind_iommufd callbacks are issued when the device is bound to iommufd.
+  'unbound' is implied if iommufd is being used.
+- The attach_ioas callback is issued when the device is attached to an IOAS
+  managed by the bound iommufd. The attached IOAS is automatically detached
+  when the device is unbound from the iommufd.
+- The read/write/mmap interfaces implement the device region access defined by
+  the device's own VFIO_DEVICE_GET_REGION_INFO ioctl.
+- The request callback is issued when device is going to be unregistered.
+- The dma_unmap callback is issued when a range of iova's are unmapped in
+  the container or IOAS attached by the device. Drivers which care about
+  DMA unmap can implement this callback and must tolerate receiving unmap
+  notifications before the device is opened.
 
 PPC64 sPAPR implementation note
 -------------------------------
-- 
2.34.1


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

* Re: [PATCH 2/2] docs: vfio: Update vfio.rst per latest interfaces
  2023-02-02  8:02 ` [PATCH 2/2] docs: vfio: Update vfio.rst per latest interfaces Yi Liu
@ 2023-02-02 22:01   ` Alex Williamson
  2023-02-03  4:02     ` Tian, Kevin
  2023-02-03  8:00     ` Liu, Yi L
  2023-02-03  4:07   ` Tian, Kevin
  1 sibling, 2 replies; 10+ messages in thread
From: Alex Williamson @ 2023-02-02 22:01 UTC (permalink / raw)
  To: Yi Liu; +Cc: jgg, kevin.tian, chao.p.peng, eric.auger, yi.y.sun, kvm

On Thu,  2 Feb 2023 00:02:01 -0800
Yi Liu <yi.l.liu@intel.com> wrote:

> this imports the latest vfio_device_ops definition to vfio.rst.
> 
> Signed-off-by: Yi Liu <yi.l.liu@intel.com>
> ---
>  Documentation/driver-api/vfio.rst | 71 +++++++++++++++++++++----------
>  1 file changed, 48 insertions(+), 23 deletions(-)
> 
> diff --git a/Documentation/driver-api/vfio.rst b/Documentation/driver-api/vfio.rst
> index c663b6f97825..10d84f01fda1 100644
> --- a/Documentation/driver-api/vfio.rst
> +++ b/Documentation/driver-api/vfio.rst
> @@ -249,19 +249,22 @@ VFIO bus driver API
>  
>  VFIO bus drivers, such as vfio-pci make use of only a few interfaces
>  into VFIO core.  When devices are bound and unbound to the driver,
> -the driver should call vfio_register_group_dev() and
> -vfio_unregister_group_dev() respectively::
> +the driver should call vfio_register_group_dev() or
> +vfio_register_emulated_iommu_dev() and vfio_unregister_group_dev()
> +respectively::
>  
> -	void vfio_init_group_dev(struct vfio_device *device,
> -				struct device *dev,
> -				const struct vfio_device_ops *ops);
> -	void vfio_uninit_group_dev(struct vfio_device *device);
>  	int vfio_register_group_dev(struct vfio_device *device);
> +	int vfio_register_emulated_iommu_dev(struct vfio_device *device);
>  	void vfio_unregister_group_dev(struct vfio_device *device);
>  
>  The driver should embed the vfio_device in its own structure and call
> -vfio_init_group_dev() to pre-configure it before going to registration
> -and call vfio_uninit_group_dev() after completing the un-registration.
> +vfio_alloc_device() or _vfio_alloc_device() to allocate the structure,

AIUI, _vfio_alloc_device() is only exported because it's used by
vfio_alloc_device() which is a macro.  I don't think we want to list
_vfio_alloc_device() as an equal alternative, if anything we should
discourage any direct use.

> +and can register @init/@release callbacks to manage any private state
> +wrapping the vfio_device.
> +
> +	vfio_alloc_device(dev_struct, member, dev, ops);
> +	void vfio_put_device(struct vfio_device *device);
> +
>  vfio_register_group_dev() indicates to the core to begin tracking the
>  iommu_group of the specified dev and register the dev as owned by a VFIO bus
>  driver. Once vfio_register_group_dev() returns it is possible for userspace to
> @@ -270,28 +273,50 @@ ready before calling it. The driver provides an ops structure for callbacks
>  similar to a file operations structure::
>  
>  	struct vfio_device_ops {
> -		int	(*open)(struct vfio_device *vdev);
> +		char	*name;
> +		int	(*init)(struct vfio_device *vdev);
>  		void	(*release)(struct vfio_device *vdev);
> +		int	(*bind_iommufd)(struct vfio_device *vdev,
> +					struct iommufd_ctx *ictx, u32 *out_device_id);
> +		void	(*unbind_iommufd)(struct vfio_device *vdev);
> +		int	(*attach_ioas)(struct vfio_device *vdev, u32 *pt_id);
> +		int	(*open_device)(struct vfio_device *vdev);
> +		void	(*close_device)(struct vfio_device *vdev);
>  		ssize_t	(*read)(struct vfio_device *vdev, char __user *buf,
>  				size_t count, loff_t *ppos);
> -		ssize_t	(*write)(struct vfio_device *vdev,
> -				 const char __user *buf,
> -				 size_t size, loff_t *ppos);
> +		ssize_t	(*write)(struct vfio_device *vdev, const char __user *buf,
> +			 size_t count, loff_t *size);
>  		long	(*ioctl)(struct vfio_device *vdev, unsigned int cmd,
>  				 unsigned long arg);
> -		int	(*mmap)(struct vfio_device *vdev,
> -				struct vm_area_struct *vma);
> -	};
> +		int	(*mmap)(struct vfio_device *vdev, struct vm_area_struct *vma);
> +		void	(*request)(struct vfio_device *vdev, unsigned int count);
> +		int	(*match)(struct vfio_device *vdev, char *buf);
> +		void	(*dma_unmap)(struct vfio_device *vdev, u64 iova, u64 length);
> +		int	(*device_feature)(struct vfio_device *device, u32 flags,
> +					  void __user *arg, size_t argsz);
> +};
>  
>  Each function is passed the vdev that was originally registered
> -in the vfio_register_group_dev() call above.  This allows the bus driver
> -to obtain its private data using container_of().  The open/release
> -callbacks are issued when a new file descriptor is created for a
> -device (via VFIO_GROUP_GET_DEVICE_FD).  The ioctl interface provides
> -a direct pass through for VFIO_DEVICE_* ioctls.  The read/write/mmap
> -interfaces implement the device region access defined by the device's
> -own VFIO_DEVICE_GET_REGION_INFO ioctl.
> -
> +in the vfio_register_group_dev() or vfio_register_emulated_iommu_dev()
> +call above.  This allows the bus driver to obtain its private data using
> +container_of().
> +- The init/release callbacks are issued in the drivers's structure allocation

drivers' is the possessive of plural drivers.  Thanks,

Alex

> +  and put.
> +- The open/close_device callbacks are issued when a new file descriptor is
> +  created for a device (via VFIO_GROUP_GET_DEVICE_FD).
> +- The ioctl interface provides a direct pass through for VFIO_DEVICE_* ioctls.
> +- The [un]bind_iommufd callbacks are issued when the device is bound to iommufd.
> +  'unbound' is implied if iommufd is being used.
> +- The attach_ioas callback is issued when the device is attached to an IOAS
> +  managed by the bound iommufd. The attached IOAS is automatically detached
> +  when the device is unbound from the iommufd.
> +- The read/write/mmap interfaces implement the device region access defined by
> +  the device's own VFIO_DEVICE_GET_REGION_INFO ioctl.
> +- The request callback is issued when device is going to be unregistered.
> +- The dma_unmap callback is issued when a range of iova's are unmapped in
> +  the container or IOAS attached by the device. Drivers which care about
> +  DMA unmap can implement this callback and must tolerate receiving unmap
> +  notifications before the device is opened.
>  
>  PPC64 sPAPR implementation note
>  -------------------------------


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

* RE: [PATCH 1/2] vfio: Update the kdoc for vfio_device_ops
  2023-02-02  8:02 ` [PATCH 1/2] vfio: Update the kdoc for vfio_device_ops Yi Liu
@ 2023-02-03  4:01   ` Tian, Kevin
  0 siblings, 0 replies; 10+ messages in thread
From: Tian, Kevin @ 2023-02-03  4:01 UTC (permalink / raw)
  To: Liu, Yi L, alex.williamson, jgg; +Cc: chao.p.peng, eric.auger, yi.y.sun, kvm

> From: Liu, Yi L <yi.l.liu@intel.com>
> Sent: Thursday, February 2, 2023 4:02 PM
> 
> this is missed when adding bind_iommufd/unbind_iommufd and attach_ioas.
> 
> Signed-off-by: Yi Liu <yi.l.liu@intel.com>

Reviewed-by: Kevin Tian <kevin.tian@intel.com>

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

* RE: [PATCH 2/2] docs: vfio: Update vfio.rst per latest interfaces
  2023-02-02 22:01   ` Alex Williamson
@ 2023-02-03  4:02     ` Tian, Kevin
  2023-02-03  7:58       ` Liu, Yi L
  2023-02-03  8:00     ` Liu, Yi L
  1 sibling, 1 reply; 10+ messages in thread
From: Tian, Kevin @ 2023-02-03  4:02 UTC (permalink / raw)
  To: Alex Williamson, Liu, Yi L; +Cc: jgg, chao.p.peng, eric.auger, yi.y.sun, kvm

> From: Alex Williamson <alex.williamson@redhat.com>
> Sent: Friday, February 3, 2023 6:01 AM
> >
> >  The driver should embed the vfio_device in its own structure and call
> > -vfio_init_group_dev() to pre-configure it before going to registration
> > -and call vfio_uninit_group_dev() after completing the un-registration.
> > +vfio_alloc_device() or _vfio_alloc_device() to allocate the structure,
> 
> AIUI, _vfio_alloc_device() is only exported because it's used by
> vfio_alloc_device() which is a macro.  I don't think we want to list
> _vfio_alloc_device() as an equal alternative, if anything we should
> discourage any direct use.
> 

Agree

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

* RE: [PATCH 2/2] docs: vfio: Update vfio.rst per latest interfaces
  2023-02-02  8:02 ` [PATCH 2/2] docs: vfio: Update vfio.rst per latest interfaces Yi Liu
  2023-02-02 22:01   ` Alex Williamson
@ 2023-02-03  4:07   ` Tian, Kevin
  2023-02-03  7:59     ` Liu, Yi L
  1 sibling, 1 reply; 10+ messages in thread
From: Tian, Kevin @ 2023-02-03  4:07 UTC (permalink / raw)
  To: Liu, Yi L, alex.williamson, jgg; +Cc: chao.p.peng, eric.auger, yi.y.sun, kvm

> From: Liu, Yi L <yi.l.liu@intel.com>
> Sent: Thursday, February 2, 2023 4:02 PM
> 
> 
>  VFIO bus drivers, such as vfio-pci make use of only a few interfaces
>  into VFIO core.  When devices are bound and unbound to the driver,
> -the driver should call vfio_register_group_dev() and
> -vfio_unregister_group_dev() respectively::
> +the driver should call vfio_register_group_dev() or
> +vfio_register_emulated_iommu_dev() and vfio_unregister_group_dev()
> +respectively::

No need to duplicate every function name with the below list. Probably
just say that "Following interfaces are called when devices are bound
to and unbound from the driver:"

> +in the vfio_register_group_dev() or vfio_register_emulated_iommu_dev()
> +call above.  This allows the bus driver to obtain its private data using
> +container_of().
> +- The init/release callbacks are issued in the drivers's structure allocation
> +  and put.

"issued when vfio_device is initialized and released"

> +- The open/close_device callbacks are issued when a new file descriptor is
> +  created for a device (via VFIO_GROUP_GET_DEVICE_FD).
> +- The ioctl interface provides a direct pass through for VFIO_DEVICE_* ioctls.
> +- The [un]bind_iommufd callbacks are issued when the device is bound to
> iommufd.
> +  'unbound' is implied if iommufd is being used.

I didn't get what the last sentence tries to say


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

* RE: [PATCH 2/2] docs: vfio: Update vfio.rst per latest interfaces
  2023-02-03  4:02     ` Tian, Kevin
@ 2023-02-03  7:58       ` Liu, Yi L
  0 siblings, 0 replies; 10+ messages in thread
From: Liu, Yi L @ 2023-02-03  7:58 UTC (permalink / raw)
  To: Tian, Kevin, Alex Williamson; +Cc: jgg, chao.p.peng, eric.auger, yi.y.sun, kvm

> From: Tian, Kevin <kevin.tian@intel.com>
> Sent: Friday, February 3, 2023 12:02 PM
> 
> > From: Alex Williamson <alex.williamson@redhat.com>
> > Sent: Friday, February 3, 2023 6:01 AM
> > >
> > >  The driver should embed the vfio_device in its own structure and call
> > > -vfio_init_group_dev() to pre-configure it before going to registration
> > > -and call vfio_uninit_group_dev() after completing the un-registration.
> > > +vfio_alloc_device() or _vfio_alloc_device() to allocate the structure,
> >
> > AIUI, _vfio_alloc_device() is only exported because it's used by
> > vfio_alloc_device() which is a macro.  I don't think we want to list
> > _vfio_alloc_device() as an equal alternative, if anything we should
> > discourage any direct use.
> >
> 
> Agree

Done.

Regards,
Yi Liu

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

* RE: [PATCH 2/2] docs: vfio: Update vfio.rst per latest interfaces
  2023-02-03  4:07   ` Tian, Kevin
@ 2023-02-03  7:59     ` Liu, Yi L
  0 siblings, 0 replies; 10+ messages in thread
From: Liu, Yi L @ 2023-02-03  7:59 UTC (permalink / raw)
  To: Tian, Kevin, alex.williamson, jgg; +Cc: chao.p.peng, eric.auger, yi.y.sun, kvm

> From: Tian, Kevin <kevin.tian@intel.com>
> Sent: Friday, February 3, 2023 12:08 PM
> 
> > From: Liu, Yi L <yi.l.liu@intel.com>
> > Sent: Thursday, February 2, 2023 4:02 PM
> >
> >
> >  VFIO bus drivers, such as vfio-pci make use of only a few interfaces
> >  into VFIO core.  When devices are bound and unbound to the driver,
> > -the driver should call vfio_register_group_dev() and
> > -vfio_unregister_group_dev() respectively::
> > +the driver should call vfio_register_group_dev() or
> > +vfio_register_emulated_iommu_dev() and vfio_unregister_group_dev()
> > +respectively::
> 
> No need to duplicate every function name with the below list. Probably
> just say that "Following interfaces are called when devices are bound
> to and unbound from the driver:"

Got it.

> 
> > +in the vfio_register_group_dev() or
> vfio_register_emulated_iommu_dev()
> > +call above.  This allows the bus driver to obtain its private data using
> > +container_of().
> > +- The init/release callbacks are issued in the drivers's structure allocation
> > +  and put.
> 
> "issued when vfio_device is initialized and released"

Got it.

> > +- The open/close_device callbacks are issued when a new file descriptor
> is
> > +  created for a device (via VFIO_GROUP_GET_DEVICE_FD).
> > +- The ioctl interface provides a direct pass through for VFIO_DEVICE_*
> ioctls.
> > +- The [un]bind_iommufd callbacks are issued when the device is bound to
> > iommufd.
> > +  'unbound' is implied if iommufd is being used.
> 
> I didn't get what the last sentence tries to say

Oops, it is a rebase error. ☹ removed.

Regards,
Yi Liu

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

* RE: [PATCH 2/2] docs: vfio: Update vfio.rst per latest interfaces
  2023-02-02 22:01   ` Alex Williamson
  2023-02-03  4:02     ` Tian, Kevin
@ 2023-02-03  8:00     ` Liu, Yi L
  1 sibling, 0 replies; 10+ messages in thread
From: Liu, Yi L @ 2023-02-03  8:00 UTC (permalink / raw)
  To: Alex Williamson; +Cc: jgg, Tian, Kevin, chao.p.peng, eric.auger, yi.y.sun, kvm

> From: Alex Williamson <alex.williamson@redhat.com>
> Sent: Friday, February 3, 2023 6:01 AM
> On Thu,  2 Feb 2023 00:02:01 -0800

> > +in the vfio_register_group_dev() or
> vfio_register_emulated_iommu_dev()
> > +call above.  This allows the bus driver to obtain its private data using
> > +container_of().
> > +- The init/release callbacks are issued in the drivers's structure allocation
> 
> drivers' is the possessive of plural drivers.  Thanks,
> 

Yes. Thanks.

Regards,
Yi Liu

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

end of thread, other threads:[~2023-02-03  8:02 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-02  8:01 [PATCH 0/2] Update VFIO doc Yi Liu
2023-02-02  8:02 ` [PATCH 1/2] vfio: Update the kdoc for vfio_device_ops Yi Liu
2023-02-03  4:01   ` Tian, Kevin
2023-02-02  8:02 ` [PATCH 2/2] docs: vfio: Update vfio.rst per latest interfaces Yi Liu
2023-02-02 22:01   ` Alex Williamson
2023-02-03  4:02     ` Tian, Kevin
2023-02-03  7:58       ` Liu, Yi L
2023-02-03  8:00     ` Liu, Yi L
2023-02-03  4:07   ` Tian, Kevin
2023-02-03  7:59     ` Liu, Yi L

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.