On Thu, Sep 12, 2024 at 11:42:43AM +0800, Zhangfei Gao wrote: > > > The VIOMMU series is essential to allow the invalidations to be processed > > > for the CD as well. > > > > > > It is enough to allow qemu work to progress. > > > > > > This is on github: https://github.com/jgunthorpe/linux/commits/smmuv3_nesting > > > > > > v2: > > > > As mentioned above, the VIOMMU series would be required to test > > the entire nesting feature, which now has a v2 rebasing on this > > series. I tested it with a paring QEMU branch. Please refer to: > > https://lore.kernel.org/linux-iommu/cover.1724776335.git.nicolinc@xxxxxxxxxx/ > > Also, there is another new VIRQ series on top of the VIOMMU one > > and this nesting series. And I tested it too. Please refer to: > > https://lore.kernel.org/linux-iommu/cover.1724777091.git.nicolinc@xxxxxxxxxx/ > > > > With that, > > > > Tested-by: Nicolin Chen <nicolinc@xxxxxxxxxx> > > > Have you tested the user page fault? No, I don't have a HW to test PRI. So, I've little experience with the IOPF and its counter part in QEMU. I recall that Shameer has a series of changes in QEMU. > I got an issue, when a user page fault happens, > group->attach_handle = iommu_attach_handle_get(pasid) > return NULL. > > A bit confused here, only find IOMMU_NO_PASID is used when attaching > > __fault_domain_replace_dev > ret = iommu_replace_group_handle(idev->igroup->group, hwpt->domain, > &handle->handle); > curr = xa_store(&group->pasid_array, IOMMU_NO_PASID, handle, GFP_KERNEL); > > not find where the code attach user pasid with the attach_handle. In SMMUv3 case (the latest design), a DOMAIN_NESTED is a CD/PASID table. So one single attach_handle (domain/idev) should be enough to cover the entire thing. Please refer to: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/iommu/io-pgfault.c?h=v6.11-rc7#n127 Thanks Nicolin