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 */