On Tue, Oct 15, 2024 at 11:19:33AM +0800, Zhangfei Gao wrote: > > +static int iommufd_fault_iopf_enable(struct iommufd_device *idev) > > +{ > > + struct device *dev = idev->dev; > > + int ret; > > + > > + /* > > + * Once we turn on PCI/PRI support for VF, the response failure code > > + * should not be forwarded to the hardware due to PRI being a shared > > + * resource between PF and VFs. There is no coordination for this > > + * shared capability. This waits for a vPRI reset to recover. > > + */ > > + if (dev_is_pci(dev) && to_pci_dev(dev)->is_virtfn) > > + return -EINVAL; > > I am using the SMMUv3 stall feature, and need to forward this to hardware, > And now I am hacking to comment this check. > Any suggestions? Are you using PCI SRIOV and stall together? > > + mutex_lock(&idev->iopf_lock); > > + /* Device iopf has already been on. */ > > + if (++idev->iopf_enabled > 1) { > > + mutex_unlock(&idev->iopf_lock); > > + return 0; > > + } > > + > > + ret = iommu_dev_enable_feature(dev, IOMMU_DEV_FEAT_IOPF); > > + if (ret) > > + --idev->iopf_enabled; > > + mutex_unlock(&idev->iopf_lock); > > Also iommu_dev_enable_feature(idev->dev, IOMMU_DEV_FEAT_SVA); is required > In thinking how to add it properly. FEAT_SVA needs to be deleted, not added too. smmu-v3 needs some more fixing to move that arm_smmu_master_enable_sva() logic into domain attachment. Jason