Messages in this thread | | | From | "Tian, Kevin" <> | Subject | RE: [PATCH RFC v2 03/11] iommu/sva: Add iommu_domain type for SVA | Date | Wed, 6 Apr 2022 01:00:13 +0000 |
| |
> From: Jason Gunthorpe <jgg@nvidia.com> > Sent: Sunday, April 3, 2022 7:32 AM > > On Sat, Apr 02, 2022 at 08:43:16AM +0000, Tian, Kevin wrote: > > > > This assumes any domain is interchangeable with any device, which is > > > not the iommu model. We need a domain op to check if a device is > > > compatiable with the domain for vfio an iommufd, this should do the > > > same. > > > > This suggests that mm_struct needs to include the format information > > of the CPU page table so the format can be checked by the domain op? > > No, Linux does not support multiple formats for CPU page tables, > AFAICT, and creating the SVA domain in the first place should check > this.
One interesting usage is when virtio-iommu supports vSVA one day. At that time there needs a way to know the format of the CPU page table and then virtio-iommu driver needs to check whether it is compatible with what the host iommu driver supports. But possibly this can wait to be solved until that usage comes...
> > > > It means each mm can have a list of domains associated with it and a > > > new domain is auto-created if the device doesn't work with any of the > > > existing domains. > > > > mm has only one page table and one format. If a device is incompatible > > with an existing domain wrapping that page table, how come creating > > another domain could make it compatible? > > Because domains wrap more than just the IOPTE format, they have > additional data related to the IOMMU HW block itself. Imagine a SOC > with two IOMMU HW blocks that can both process the CPU IOPTE format, > but have different configuration.
Curious. Is it hypothesis or real? If real can you help give a concrete example?
> > So if device A users IOMMU A it needs an iommu_domain from driver A and > same for another device B, even if both iommu_domains are thin > wrappers around the same mm_struct. >
| |