On Tue, Apr 30, 2024 at 10:57:04PM +0800, Lu Baolu wrote: > @@ -206,8 +197,11 @@ void iommu_report_device_fault(struct device *dev, struct iopf_fault *evt) > if (group == &abort_group) > goto err_abort; > > - group->domain = get_domain_for_iopf(dev, fault); > - if (!group->domain) > + if (!(fault->prm.flags & IOMMU_FAULT_PAGE_REQUEST_PASID_VALID) || > + get_attach_handle_for_iopf(dev, fault->prm.pasid, group)) > + get_attach_handle_for_iopf(dev, IOMMU_NO_PASID, group); That seems a bit weird looking? get_attach_handle_for_iopf(dev, (fault->prm.flags & IOMMU_FAULT_PAGE_REQUEST_PASID_VALID) ? fault->prm.pasid : IOMMU_NO_PASID, group); Jason