Messages in this thread | | | Date | Thu, 12 May 2022 13:17:08 +0800 | Subject | Re: [PATCH v6 08/12] iommu/sva: Use attach/detach_pasid_dev in SVA interfaces | From | Baolu Lu <> |
| |
On 2022/5/12 13:01, Tian, Kevin wrote: >> From: Baolu Lu <baolu.lu@linux.intel.com> >> Sent: Thursday, May 12, 2022 11:03 AM >> >> On 2022/5/11 22:53, Jason Gunthorpe wrote: >>>>> Also, given the current arrangement it might make sense to have a >>>>> struct iommu_domain_sva given that no driver is wrappering this in >>>>> something else. >>>> Fair enough. How about below wrapper? >>>> >>>> +struct iommu_sva_domain { >>>> + /* >>>> + * Common iommu domain header,*must* be put at the top >>>> + * of the structure. >>>> + */ >>>> + struct iommu_domain domain; >>>> + struct mm_struct *mm; >>>> + struct iommu_sva bond; >>>> +} >>>> >>>> The refcount is wrapped in bond. >>> I'm still not sure that bond is necessary >> >> "bond" is the sva handle that the device drivers get through calling >> iommu_sva_bind(). >> > > 'bond' was required before because we didn't have a domain to wrap > the page table at that time. > > Now we have a domain and it is 1:1 associated to bond. Probably > make sense now by just returning the domain as the sva handle > instead?
It also includes the device information that the domain has been attached. So the sva_unbind() looks like this:
/** * iommu_sva_unbind_device() - Remove a bond created with iommu_sva_bind_device * @handle: the handle returned by iommu_sva_bind_device() * * Put reference to a bond between device and address space. The device should * not be issuing any more transaction for this PASID. All outstanding page * requests for this PASID must have been flushed to the IOMMU. */ void iommu_sva_unbind_device(struct iommu_sva *handle)
It's fine to replace the iommu_sva with iommu_sva_domain for sva handle, if we can include the device in the unbind() interface.
Anyway, I'd expect to achieve all these in two steps:
- sva and iopf refactoring, only iommu internal changes; - sva interface refactoring, only interface changes.
Does above work?
Best regards, baolu
| |