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

Samiullah Khawaja
2025-09-29T17:32:35Z

On Mon, Sep 29, 2025 at 9:00 AM Jason Gunthorpe <jgg@ziepe.ca> wrote:
>
> 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.
Interesting. So the user should be able to serialize/unserialize HWPTs
before the Live Update PREPARE event? But what if a device was marked
for preservation but the user never serialized the attached HWPT,
would that be considered an error during LUO PREPARE or should iommufd
serialize the remaining HWPTs here?
>
> Jason