From: Jason Gunthorpe <jgg@xxxxxxxx>
Sent: Wednesday, April 10, 2024 11:42 PM
On Mon, Mar 25, 2024 at 10:16:54AM +0800, Lu Baolu wrote:
+static int __cache_tag_assign_parent_domain(struct dmar_domain*domain, u16 did,
+ struct device *dev, ioasid_t pasid)CACHE_TAG_TYPE_PARENT_IOTLB);
+{
+ struct device_domain_info *info = dev_iommu_priv_get(dev);
+ int ret;
+
+ ret = cache_tag_assign(domain, did, dev, pasid,
+ if (ret || !info->ats_enabled)
+ return ret;
I'm not sure I understood the point of PARENT_IOTLB? I didn't see any
different implementation?
Isn't this backwards though? Each domain should have a list of things
to invalidate if the domain itself changes.
So the nesting parent should have a list of CHILD_DEVTLB's that need
cleaning. That list is changed when the nesting domains are attached
to something.
probably just a naming confusion. it's called PARENT_IOTLB from the
angle that this domain is used as a parent domain but actually it
tracks the child tags in nested attach.