Messages in this thread | | | Date | Tue, 25 Jan 2022 08:37:29 -0400 | From | Jason Gunthorpe <> | Subject | Re: [PATCH 7/7] iommu: Add iommu_domain::domain_ops |
| |
On Tue, Jan 25, 2022 at 12:59:14PM +0800, Lu Baolu wrote: > On 1/24/22 5:58 PM, Tian, Kevin wrote: > > > From: Lu Baolu <baolu.lu@linux.intel.com> > > > Sent: Monday, January 24, 2022 3:11 PM > > > +/** > > > + * struct domain_ops - per-domain ops > > > + * @attach_dev: attach an iommu domain to a device > > > + * @detach_dev: detach an iommu domain from a device > > > > What is the criteria about whether an op should be iommu_ops or domain_ops > > when it requires both domain and device pointers like above two (and future > > PASID-based attach)? > > Generally ops belong to iommu_ops if they are only device oriented, and > domain_ops if they are only domain oriented. But it's really hard to > judge when both device and domain are involved. Good question. :-) > > Perhaps we should leave the attach/detach interfaces in iommu_ops since > they are related to device capabilities. For example, some devices > support attach_dev_pasid, while others not.
Isn't the attach process for something like SVA or the KVM version actually rather different code?
Ideally the function pointers should help minimize case statements/etc inside the driver..
Or stated another way, I expect drivers will have different structs container_of'ing back to the iommu_domain (ie intel_iommu_domain_sva, say). Any code that needs to work differently depending on the struct should have an op in the domain so it can sanely container_of without a mess.
Jason
| |