On Mon, Apr 28, 2025 at 04:34:14PM -0700, Nicolin Chen wrote: > On Mon, Apr 28, 2025 at 03:12:33PM -0700, Nicolin Chen wrote: > > On Mon, Apr 28, 2025 at 08:14:19PM +0000, Pranjal Shrivastava wrote: > > > On Fri, Apr 25, 2025 at 10:58:03PM -0700, Nicolin Chen wrote: > > > > + iopt_for_each_contig_area(&iter, area, iopt, iova, last_iova) { > > > > + unsigned long last = min(last_iova, > > > > iopt_area_last_iova(area)); > > > > + unsigned long last_index = > > > > iopt_area_iova_to_index(area, last); > > > > + unsigned long index = > > > > + iopt_area_iova_to_index(area, iter.cur_iova); > > > > + > > > > + if (area->prevent_access || > > > > > > Nit: > > > Shouldn't we return -EBUSY or something if (area->prevent_access == 1) ? > > > IIUC, this just means that an unmap attempt is in progress, hence avoid > > > accessing the area. > > > > Maybe. But this is what it was. So we need a different patch to > > change that. > > Rereading the code. The prevent_access is set by an unmap(), which > means there shouldn't be any pin() and rw() as the caller should > finish unmap() first. > > In the newer use case of vCMDQ, it's similar. If VMM is unmapping > the stage-2 mapping, it shouldn't try to allocate a vCMDQ. > > -EBUSY makes some sense, but -EINVAL could still stand. > > So, I am leaving it as is, since this patch is just about moving > the functions for sharing.
Ack. I don't have a strong preference too. This should be fine, we can re-visit this if needed in the future. Reviewed-by: Pranjal Shrivastava <pr...@google.com> > > Nicolin Thanks!