RE: [PATCH v7 09/28] iommufd/access: Add internal APIs for HW queue to use

From: Tian, Kevin
Date: Wed Jul 02 2025 - 05:46:04 EST


> From: Nicolin Chen <nicolinc@xxxxxxxxxx>
> Sent: Friday, June 27, 2025 3:35 AM
>
> The new HW queue object, as an internal iommufd object, wants to reuse
> the
> struct iommufd_access to pin some iova range in the iopt.
>
> However, an access generally takes the refcount of an ictx. So, in such an
> internal case, a deadlock could happen when the release of the ictx has to
> wait for the release of the access first when releasing a hw_queue object,
> which could wait for the release of the ictx that is refcounted:
> ictx --releases--> hw_queue --releases--> access
> ^ |
> |_________________releases________________v
>
> To address this, add a set of lightweight internal APIs to unlink the ictx
> and the access, i.e. no ictx refcounting by the access:
> ictx --releases--> hw_queue --releases--> access
>
> Then, there's no point in setting the access->ictx. So simply define !ictx
> as an flag for an internal use and add an inline helper.
>
> Signed-off-by: Nicolin Chen <nicolinc@xxxxxxxxxx>

Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>