Re: [PATCH v4 3/6] iommu/sva: Stop using ioasid_set for SVA

From: Jacob Pan
Date: Tue Mar 07 2023 - 12:43:38 EST


Hi Jason,

On Fri, 3 Mar 2023 09:15:45 -0400, Jason Gunthorpe <jgg@xxxxxxxxxx> wrote:

> On Fri, Mar 03, 2023 at 05:57:41PM +0800, Baolu Lu wrote:
> > On 2023/3/3 17:32, Jean-Philippe Brucker wrote:
> > > > I suppose the common thing is reserving some kind of special
> > > > PASIDs.
> > > Are you planning to use RID_PASID != 0 in VT-d? Otherwise we could
> > > just communicate min_pasid from the IOMMU driver the same way we do
> > > max_pasid.
> > >
> > > Otherwise I guess re-introduce a lighter ioasid_alloc() that the IOMMU
> > > driver calls to reserve PASID0/RID_PASID.
> >
> > Yes. We probably will use a non-zero RID_PASID in the future. An
> > interface to reserve (or allocate) a PASID from iommu_global_pasid_ida
> > should work then.
>
> Just allowing the driver to store XA_ZERO_ENTRY would be fine
>
So we provide APIs for both?
1. alloc a global PASID, returned by this API
2. try to reserve a global PASID given by the driver, i.e.
xa_cmpxchg(&iommu_global_pasid_ida.xa, 2, NULL, XA_ZERO_ENTRY,
GFP_KERNEL);
seems #1 is sufficient.

Thanks,

Jacob