> From: Baolu Lu <baolu.lu@xxxxxxxxxxxxxxx> > Sent: Sunday, March 5, 2023 11:06 AM > > On 3/4/23 12:35 AM, Jacob Pan wrote: > >>> From: Baolu Lu<baolu.lu@xxxxxxxxxxxxxxx> > >>> Sent: Thursday, March 2, 2023 10:07 PM > >>> > >>>> + > >>>> + if (hw_pass_through && domain_type_is_si(dmar_domain)) > >>>> + ret = intel_pasid_setup_pass_through(iommu, > >>>> dmar_domain, > >>>> + dev, pasid); > >>>> + else if (dmar_domain->use_first_level) > >>>> + ret = domain_setup_first_level(iommu, dmar_domain, > >>>> + dev, pasid); > >>>> + else > >>>> + ret = intel_pasid_setup_second_level(iommu, > >>>> dmar_domain, > >>>> + dev, pasid); > >>>> + > >>>> + return ret; > >>>> +} > >>> Do you need to consider pasid cache invalidation? > >>> > >> To avoid confusion this is not about invalidation of pasid cache itself > >> which should be covered by above setup functions already. > >> > >> Here actually means per-PASID invalidation in iotlb and devtlb. Today > >> only RID is tracked per domain for invalidation. it needs extension to > >> walk attached pasid too. > > Yes, will add. > > > > For the set up path, there is no need to flush IOTLBs, because we're going > > from non present to present. > > > > On the remove path, IOTLB flush should be covered when device driver > > calls iommu_detach_device_pasid(). Covered with this patch. > > It's not only for the PASID teardown path, but also for unmap(). As the > device has issued DMA requests with PASID, the IOMMU probably will cache > the DMA translation with PASID tagged. Hence, we need to invalidate the > PASID-specific IOTLB and device TLB in the unmap() path. > > I once had a patch for this: > > https://lore.kernel.org/linux-iommu/20220614034411.1634238-1- > baolu.lu@xxxxxxxxxxxxxxx/ > > Probably you can use it as a starting point. > just that we should not have a sub-device term there. Just name the tracking information per pasid.