Re: [RFC PATCH 13/15] iommufd: Persist iommu domains for live update

Jason Gunthorpe
2025-09-29T16:00:46Z

On Sun, Sep 28, 2025 at 07:06:21PM +0000, Samiullah Khawaja wrote:
> +static int iommufd_save_ioas(struct iommufd_ctx *ictx,
> + struct iommufd_lu *iommufd_lu)
> +{
> + struct iommufd_hwpt_paging *hwpt_paging;
> + struct iommufd_ioas *ioas = NULL;
> + struct iommufd_object *obj;
> + unsigned long index;
> + int rc;
> +
> + /* Iterate each ioas. */
> + xa_for_each(&ictx->objects, index, obj) {
> + if (obj->type != IOMMUFD_OBJ_IOAS)
> + continue;

Wrong locking

> +
> + ioas = (struct iommufd_ioas *)obj;
> + mutex_lock(&ioas->mutex);
> +
> + /*
> + * TODO: Iterate over each device of this iommufd and only save
> + * hwpt/domain if the device is persisted.
> + */
> + list_for_each_entry(hwpt_paging, &ioas->hwpt_list, hwpt_item) {
> + if (!hwpt_paging->common.domain)
> + continue;

I don't think this should be automatic. The user should directly
serialize/unserialize HWPTs by ID.

Jason