Messages in this thread | | | Date | Wed, 10 May 2023 18:24:54 -0300 | From | Jason Gunthorpe <> | Subject | Re: [PATCH v1 4/5] iommu/arm-smmu-v3: Keep track of attached ssids |
| |
On Thu, May 11, 2023 at 04:50:51AM +0800, Michael Shavit wrote:
> @@ -213,14 +213,14 @@ static void arm_smmu_mm_invalidate_range(struct mmu_notifier *mn, > if (!(smmu_domain->smmu->features & ARM_SMMU_FEAT_BTM)) > arm_smmu_tlb_inv_range_asid(start, size, smmu_mn->cd->asid, > PAGE_SIZE, false, smmu_domain); > - arm_smmu_atc_inv_domain(smmu_domain, mm->pasid, start, size); > + arm_smmu_atc_inv_domain_ssid(smmu_domain, mm->pasid, start, > size);
You should be getting rid of mm->pasid in this series as well.
When each domain keeps track of what STE/CD entries that point to it then *ALL* invalidation should iterate over the list of pointing entires and generate the correct invalidation for that pointer.
Eg we learn the PASID from the fact that a CD at PASID xyz is pointing at this domain and generate an invalidation for that PASID.
mm->pasid is logically incorrect in all of this code with our multi-attach model, it was here because this code wasn't tracking at what as pointing at the iommu_domain.
Jason
| |