> From: Nicolin Chen <nicol...@nvidia.com> > Sent: Friday, June 27, 2025 3:35 AM > > +int iommufd_access_notify_unmap(struct io_pagetable *iopt, unsigned long > iova, > + unsigned long length) > { > struct iommufd_ioas *ioas = > container_of(iopt, struct iommufd_ioas, iopt); > struct iommufd_access *access; > unsigned long index; > + int ret = 0; > > xa_lock(&ioas->iopt.access_list); > + /* Bypass any unmap if there is an internal access */ > + xa_for_each(&ioas->iopt.access_list, index, access) { > + if (iommufd_access_is_internal(access)) { > + ret = -EBUSY; > + goto unlock; > + } > + } > +
hmm all those checks are per iopt. Could do one-off check in iopt_unmap_iova_range() and store the result in a local flag. Then use that flag to decide whether to return -EBUSY if area->num_accesses is true in the loop. Reviewed-by: Kevin Tian <kevin.t...@intel.com>