Re: [PATCH 2/4] vfio: vfio_iommu_type1: Define VFIO_IOMMU_INFO_CAPABILITIES

Pierre Morel
2019-05-17T08:18:33Z

On 16/05/2019 20:31, Alex Williamson wrote:
> On Fri, 10 May 2019 10:22:33 +0200
> Pierre Morel <pmorel@linux.ibm.com> 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@linux.ibm.com>
>> ---
>> 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