[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v4 08/12] vfio/iommufd: Probe and request hwpt dirty tracking
From: |
Eric Auger |
Subject: |
Re: [PATCH v4 08/12] vfio/iommufd: Probe and request hwpt dirty tracking capability |
Date: |
Wed, 17 Jul 2024 14:27:18 +0200 |
User-agent: |
Mozilla Thunderbird |
Hi Joao,
On 7/12/24 13:47, Joao Martins wrote:
> Probe hardware dirty tracking support by querying device hw capabilities via
> IOMMUFD_GET_HW_INFO.
this is not what the patch brings. GET_HW_INFO is always in place.
>
> In preparation to using the dirty tracking UAPI, request dirty tracking in the
> HWPT flags when the IOMMU supports dirty tracking.
this is what the patch brings.
>
> The auto domain logic allows different IOMMU domains to be created when DMA
> dirty tracking is not desired (and VF can provide it) while others doesn't
> have
don't
> it and want the IOMMU capability. This is not used in this way here given how
> VFIODevice migration capability checking takes place *after* the device
> attachment.
Id on't understand the above sentence
Eric
>
> Signed-off-by: Joao Martins <joao.m.martins@oracle.com>
> ---
> include/hw/vfio/vfio-common.h | 1 +
> hw/vfio/iommufd.c | 12 ++++++++++++
> 2 files changed, 13 insertions(+)
>
> diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h
> index 2dd468ce3c02..760f31d84ac8 100644
> --- a/include/hw/vfio/vfio-common.h
> +++ b/include/hw/vfio/vfio-common.h
> @@ -97,6 +97,7 @@ typedef struct IOMMUFDBackend IOMMUFDBackend;
>
> typedef struct VFIOIOASHwpt {
> uint32_t hwpt_id;
> + uint32_t hwpt_flags;
> QLIST_HEAD(, VFIODevice) device_list;
> QLIST_ENTRY(VFIOIOASHwpt) next;
> } VFIOIOASHwpt;
> diff --git a/hw/vfio/iommufd.c b/hw/vfio/iommufd.c
> index d34dc88231ec..edc8f97d8f3d 100644
> --- a/hw/vfio/iommufd.c
> +++ b/hw/vfio/iommufd.c
> @@ -246,6 +246,15 @@ static bool iommufd_cdev_autodomains_get(VFIODevice
> *vbasedev,
> }
> }
>
> + /*
> + * This is quite early and VFIODevice isn't yet fully initialized,
so what's the problem exactly with the above?
> + * thus rely on IOMMU hardware capabilities as to whether IOMMU dirty
> + * tracking is going to be needed.
> + */
> + if (vbasedev->hiod->caps.hw_caps & IOMMU_HW_CAP_DIRTY_TRACKING) {
> + flags = IOMMU_HWPT_ALLOC_DIRTY_TRACKING;
> + }
> +
> if (!iommufd_backend_alloc_hwpt(iommufd, vbasedev->devid,
> container->ioas_id, flags,
> IOMMU_HWPT_DATA_NONE, 0, NULL,
> @@ -255,6 +264,7 @@ static bool iommufd_cdev_autodomains_get(VFIODevice
> *vbasedev,
>
> hwpt = g_malloc0(sizeof(*hwpt));
> hwpt->hwpt_id = hwpt_id;
> + hwpt->hwpt_flags = flags;
> QLIST_INIT(&hwpt->device_list);
>
> ret = iommufd_cdev_attach_ioas_hwpt(vbasedev, hwpt->hwpt_id, errp);
> @@ -267,6 +277,8 @@ static bool iommufd_cdev_autodomains_get(VFIODevice
> *vbasedev,
> vbasedev->hwpt = hwpt;
> QLIST_INSERT_HEAD(&hwpt->device_list, vbasedev, hwpt_next);
> QLIST_INSERT_HEAD(&container->hwpt_list, hwpt, next);
> + container->bcontainer.dirty_pages_supported |=
> + (flags & IOMMU_HWPT_ALLOC_DIRTY_TRACKING);
> return true;
> }
>
- Re: [PATCH v4 05/12] vfio/iommufd: Introduce auto domain creation, (continued)
- RE: [PATCH v4 05/12] vfio/iommufd: Introduce auto domain creation, Duan, Zhenzhong, 2024/07/16
- Re: [PATCH v4 05/12] vfio/iommufd: Introduce auto domain creation, Joao Martins, 2024/07/17
- RE: [PATCH v4 05/12] vfio/iommufd: Introduce auto domain creation, Duan, Zhenzhong, 2024/07/17
- Re: [PATCH v4 05/12] vfio/iommufd: Introduce auto domain creation, Joao Martins, 2024/07/17
- RE: [PATCH v4 05/12] vfio/iommufd: Introduce auto domain creation, Duan, Zhenzhong, 2024/07/18
- Re: [PATCH v4 05/12] vfio/iommufd: Introduce auto domain creation, Joao Martins, 2024/07/18
- RE: [PATCH v4 05/12] vfio/iommufd: Introduce auto domain creation, Duan, Zhenzhong, 2024/07/18
[PATCH v4 08/12] vfio/iommufd: Probe and request hwpt dirty tracking capability, Joao Martins, 2024/07/12
[PATCH v4 09/12] vfio/iommufd: Implement VFIOIOMMUClass::set_dirty_tracking support, Joao Martins, 2024/07/12