On Wed,  3 Sep 2025 17:17:58 +0200
David Marchand <david.march...@redhat.com> wrote:

> Import VFIO header (from v6.16) to be included in many parts of DPDK.
> 
> Signed-off-by: David Marchand <david.march...@redhat.com>
> ---
>  kernel/linux/uapi/linux/vfio.h | 1836 ++++++++++++++++++++++++++++++++
>  kernel/linux/uapi/version      |    2 +-
>  2 files changed, 1837 insertions(+), 1 deletion(-)
>  create mode 100644 kernel/linux/uapi/linux/vfio.h

The linux kernel source tree has a well defined method for making exported
uapi headers: 
        make headers_install

DPDK should not be inventing its own method for this.

If you use this on current released kernel (6.16) you will get slightly 
different file.
The point of having DPDK vfio.h was to workaround case where distro was too old;
not to be different.

diff --git a/kernel/linux/uapi/linux/vfio.h b/kernel/linux/uapi/linux/vfio.h
index 4413783940..4d96d1fc12 100644
--- a/kernel/linux/uapi/linux/vfio.h
+++ b/kernel/linux/uapi/linux/vfio.h
@@ -9,8 +9,8 @@
  * it under the terms of the GNU General Public License version 2 as
  * published by the Free Software Foundation.
  */
-#ifndef _UAPIVFIO_H
-#define _UAPIVFIO_H
+#ifndef VFIO_H
+#define VFIO_H
 
 #include <linux/types.h>
 #include <linux/ioctl.h>
@@ -905,10 +905,12 @@ struct vfio_device_feature {
  * VFIO_DEVICE_BIND_IOMMUFD - _IOR(VFIO_TYPE, VFIO_BASE + 18,
  *                                struct vfio_device_bind_iommufd)
  * @argsz:      User filled size of this data.
- * @flags:      Must be 0.
+ * @flags:      Must be 0 or a bit flags of VFIO_DEVICE_BIND_*
  * @iommufd:    iommufd to bind.
  * @out_devid:  The device id generated by this bind. devid is a handle for
  *              this device/iommufd bond and can be used in IOMMUFD commands.
+ * @token_uuid_ptr: Valid if VFIO_DEVICE_BIND_FLAG_TOKEN. Points to a 16 byte
+ *                  UUID in the same format as 
VFIO_DEVICE_FEATURE_PCI_VF_TOKEN.
  *
  * Bind a vfio_device to the specified iommufd.
  *
@@ -917,13 +919,21 @@ struct vfio_device_feature {
  *
  * Unbind is automatically conducted when device fd is closed.
  *
+ * A token is sometimes required to open the device, unless this is known to be
+ * needed VFIO_DEVICE_BIND_FLAG_TOKEN should not be set and token_uuid_ptr is
+ * ignored. The only case today is a PF/VF relationship where the VF bind must
+ * be provided the same token as VFIO_DEVICE_FEATURE_PCI_VF_TOKEN provided to
+ * the PF.
+ *
  * Return: 0 on success, -errno on failure.
  */
 struct vfio_device_bind_iommufd {
        __u32           argsz;
        __u32           flags;
+#define VFIO_DEVICE_BIND_FLAG_TOKEN (1 << 0)
        __s32           iommufd;
        __u32           out_devid;
+       __aligned_u64   token_uuid_ptr;
 };
 
 #define VFIO_DEVICE_BIND_IOMMUFD       _IO(VFIO_TYPE, VFIO_BASE + 18)
@@ -1833,4 +1843,4 @@ struct vfio_iommu_spapr_tce_remove {
 
 /* ***************************************************************** */
 
-#endif /* _UAPIVFIO_H */
+#endif /* VFIO_H */

Reply via email to