Re: [PATCH v10 Kernel 2/5] vfio iommu: Adds flag to indicate dirty pages tracking capability support

Kirti Wankhede
2019-12-17T06:32:35Z

On 12/17/2019 4:46 AM, Alex Williamson wrote:
> On Tue, 17 Dec 2019 01:51:37 +0530
> Kirti Wankhede <kwankhede@nvidia.com> wrote:
>
>> Flag VFIO_IOMMU_INFO_DIRTY_PGS in VFIO_IOMMU_GET_INFO indicates that driver
>> support dirty pages tracking.
>>
>> Signed-off-by: Kirti Wankhede <kwankhede@nvidia.com>
>> Reviewed-by: Neo Jia <cjia@nvidia.com>
>> ---
>> drivers/vfio/vfio_iommu_type1.c | 3 ++-
>> include/uapi/linux/vfio.h | 5 +++--
>> 2 files changed, 5 insertions(+), 3 deletions(-)
>>
>> diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
>> index 2ada8e6cdb88..3f6b04f2334f 100644
>> --- a/drivers/vfio/vfio_iommu_type1.c
>> +++ b/drivers/vfio/vfio_iommu_type1.c
>> @@ -2234,7 +2234,8 @@ static long vfio_iommu_type1_ioctl(void *iommu_data,
>> info.cap_offset = 0; /* output, no-recopy necessary */
>> }
>>
>> - info.flags = VFIO_IOMMU_INFO_PGSIZES;
>> + info.flags = VFIO_IOMMU_INFO_PGSIZES |
>> + VFIO_IOMMU_INFO_DIRTY_PGS;
>
> Type1 shouldn't advertise it until it's supported though, right?
> Thanks,
>

Should this be merged with last patch where VFIO_IOMMU_UNMAP_DMA ioctl
is updated?

Thanks,
Kirti

> Alex
>
>>
>> info.iova_pgsizes = vfio_pgsize_bitmap(iommu);
>>
>> diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h
>> index a0817ba267c1..81847ed54eb7 100644
>> --- a/include/uapi/linux/vfio.h
>> +++ b/include/uapi/linux/vfio.h
>> @@ -900,8 +900,9 @@ struct vfio_device_ioeventfd {
>> struct vfio_iommu_type1_info {
>> __u32 argsz;
>> __u32 flags;
>> -#define VFIO_IOMMU_INFO_PGSIZES (1 << 0) /* supported page sizes info */
>> -#define VFIO_IOMMU_INFO_CAPS (1 << 1) /* Info supports caps */
>> +#define VFIO_IOMMU_INFO_PGSIZES (1 << 0) /* supported page sizes info */
>> +#define VFIO_IOMMU_INFO_CAPS (1 << 1) /* Info supports caps */
>> +#define VFIO_IOMMU_INFO_DIRTY_PGS (1 << 2) /* supports dirty page tracking */
>> __u64 iova_pgsizes; /* Bitmap of supported page sizes */
>> __u32 cap_offset; /* Offset within info struct of first cap */
>> };
>