On 16/05/2019 20:31, Alex Williamson wrote:
On Fri, 10 May 2019 10:22:33 +0200
Pierre Morel <pmorel@xxxxxxxxxxxxx> wrote:
To use the VFIO_IOMMU_GET_INFO to retrieve IOMMU specific information,
we define a new flag VFIO_IOMMU_INFO_CAPABILITIES in the
vfio_iommu_type1_info structure and the associated capability
information block.
Signed-off-by: Pierre Morel <pmorel@xxxxxxxxxxxxx>
---
include/uapi/linux/vfio.h | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h
index 8f10748..8f68e0f 100644
--- a/include/uapi/linux/vfio.h
+++ b/include/uapi/linux/vfio.h
@@ -715,6 +715,16 @@ struct vfio_iommu_type1_info {
__u32 flags;
#define VFIO_IOMMU_INFO_PGSIZES (1 << 0) /* supported page sizes info */
__u64 iova_pgsizes; /* Bitmap of supported page sizes */
+#define VFIO_IOMMU_INFO_CAPABILITIES (1 << 1) /* support capabilities info */
+ __u64 cap_offset; /* Offset within info struct of first cap */
+};
+
+#define VFIO_IOMMU_INFO_CAP_QFN 1
+#define VFIO_IOMMU_INFO_CAP_QGRP 2
Descriptions?
+
+struct vfio_iommu_type1_info_block {
+ struct vfio_info_cap_header header;
+ __u32 data[];
};
#define VFIO_IOMMU_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 12)
This is just a blob of data, what's the API? How do we revision it?
How does the user know how to interpret it? Dumping kernel internal
structures out to userspace like this is not acceptable, define a user
API. Thanks,
Alex
Thanks Alex for the comments.
I will add the decription and the user API for the next iteration.
Regards,
Pierre
--
Pierre Morel
Linux/KVM/QEMU in Böblingen - Germany