On Wed, May 18, 2022 at 11:21:17AM -0700, Jacob Pan wrote: > On VT-d platforms with scalable mode enabled, devices issue DMA requests > with PASID need to attach PASIDs to given IOMMU domains. The attach > operation involves the following: > - Programming the PASID into the device's PASID table > - Tracking device domain and the PASID relationship > - Managing IOTLB and device TLB invalidations > > This patch add attach_dev_pasid functions to the default domain ops which > is used by DMA and identity domain types. It could be extended to support > other domain types whenever necessary. > > Signed-off-by: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> > Signed-off-by: Jacob Pan <jacob.jun.pan@xxxxxxxxxxxxxxx> > drivers/iommu/intel/iommu.c | 72 +++++++++++++++++++++++++++++++++++-- > 1 file changed, 70 insertions(+), 2 deletions(-) > > diff --git a/drivers/iommu/intel/iommu.c b/drivers/iommu/intel/iommu.c > index 1c2c92b657c7..75615c105fdf 100644 > +++ b/drivers/iommu/intel/iommu.c > @@ -1556,12 +1556,18 @@ static void __iommu_flush_dev_iotlb(struct device_domain_info *info, > u64 addr, unsigned int mask) > { > u16 sid, qdep; > + ioasid_t pasid; > > if (!info || !info->ats_enabled) > return; > > sid = info->bus << 8 | info->devfn; > qdep = info->ats_qdep; > + pasid = iommu_get_pasid_from_domain(info->dev, &info->domain->domain); No, a simgple domain can be attached to multiple pasids, all need to be flushed. This whole API isn't suitable. Jason