[Intel-gfx] [PATCH v9 16/25] iommufd/device: Add iommufd_access_detach() API
Alex Williamson
alex.williamson at redhat.com
Tue Apr 4 22:45:12 UTC 2023
On Sat, 1 Apr 2023 08:18:24 -0700
Yi Liu <yi.l.liu at intel.com> wrote:
> From: Nicolin Chen <nicolinc at nvidia.com>
>
> Previously, the detach routine is only done by the destroy(). And it was
> called by vfio_iommufd_emulated_unbind() when the device runs close(), so
> all the mappings in iopt were cleaned in that setup, when the call trace
> reaches this detach() routine.
>
> Now, there's a need of a detach uAPI, meaning that it does not only need
> a new iommufd_access_detach() API, but also requires access->ops->unmap()
> call as a cleanup. So add one.
>
> However, leaving that unprotected can introduce some potential of a race
> condition during the pin_/unpin_pages() call, where access->ioas->iopt is
> getting referenced. So, add an ioas_lock to protect the context of iopt
> referencings.
>
> Also, to allow the iommufd_access_unpin_pages() callback to happen via
> this unmap() call, add an ioas_unpin pointer, so the unpin routine won't
> be affected by the "access->ioas = NULL" trick.
>
> Reviewed-by: Kevin Tian <kevin.tian at intel.com>
> Tested-by: Terrence Xu <terrence.xu at intel.com>
> Tested-by: Yanting Jiang <yanting.jiang at intel.com>
> Signed-off-by: Nicolin Chen <nicolinc at nvidia.com>
> Signed-off-by: Yi Liu <yi.l.liu at intel.com>
> ---
> drivers/iommu/iommufd/device.c | 76 +++++++++++++++++++++++--
> drivers/iommu/iommufd/iommufd_private.h | 2 +
> include/linux/iommufd.h | 1 +
> 3 files changed, 74 insertions(+), 5 deletions(-)
Does this need to go in via iommufd first? There seems to be quite a
bit of churn in iommufd/device.c vs the vfio_mdev_ops branch (ie. it
doesn't apply). Thanks,
Alex
More information about the Intel-gfx
mailing list