> From: Jason Gunthorpe <jgg@xxxxxxxxxx> > Sent: Wednesday, October 26, 2022 2:12 AM > > The hw_pagetable object exposes the internal struct iommu_domain's to > userspace. An iommu_domain is required when any DMA device attaches to > an > IOAS to control the io page table through the iommu driver. > > For compatibility with VFIO the hw_pagetable is automatically created when > a DMA device is attached to the IOAS. If a compatible iommu_domain > already > exists then the hw_pagetable associated with it is used for the > attachment. > > In the initial series there is no iommufd uAPI for the hw_pagetable > object. The next patch provides driver facing APIs for IO page table > attachment that allows drivers to accept either an IOAS or a hw_pagetable > ID and for the driver to return the hw_pagetable ID that was auto-selected > from an IOAS. The expectation is the driver will provide uAPI through its > own FD for attaching its device to iommufd. This allows userspace to learn > the mapping of devices to iommu_domains and to override the automatic > attachment. > > The future HW specific interface will allow userspace to create > hw_pagetable objects using iommu_domains with IOMMU driver specific > parameters. This infrastructure will allow linking those domains to IOAS's > and devices. > > Signed-off-by: Jason Gunthorpe <jgg@xxxxxxxxxx> Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>