Re: [PATCH v2 3/6] iommufd: Initializing and releasing IO page fault data

From: Baolu Lu
Date: Tue Dec 12 2023 - 21:09:36 EST


On 12/12/23 10:12 PM, Jason Gunthorpe wrote:
On Tue, Dec 12, 2023 at 02:10:08PM +0100, Joel Granados wrote:

diff --git a/drivers/iommu/iommufd/device.c b/drivers/iommu/iommufd/device.c
index 645ab5d290fe..0a8e03d5e7c5 100644
--- a/drivers/iommu/iommufd/device.c
+++ b/drivers/iommu/iommufd/device.c
@@ -456,6 +456,16 @@ int iommufd_hw_pagetable_attach(struct iommufd_hw_pagetable *hwpt,
if (rc)
goto err_unlock;
+ if (hwpt->fault) {
+ void *curr;
+
+ curr = iopf_pasid_cookie_set(idev->dev, IOMMU_NO_PASID, idev);
I'm hitting an error here when I try to attach to a hwpt that I created
previously with the `IOMMU_HWPT_ALLOC_IOPF_CAPABLE` flag.

I get an -ENODEV from iopf_pasid_cookie_set which is triggered by
dev->iommu->fault_param being 0x0.

I looked around and I see that the fault param gets set in
iopf_queue_add_device which is called from iommu_dev_enable_feature
only. Furthermore iommu_dev_enable_feature is only called in idxd and
uacce drivers.

Questions:
1. Should iopf_queue_add_device get called from the
IOMMU_HWPT_ALLOC_IOPF_CAPABLE ioctl call? This make sense to me as
this is where the device and the IOPF are related from user space.
It probably needs to call the set feature thing in the short term.

In the medium term I would like the drivers to manage the iopf based
on domain attachment not explicit feature asks

Yes, it's the same as my plan.


2. This is not intended to work only with idxd and uacce. right?
It should work everywhere, I suspect Intel Team didn't hit this
because they are testing IDXD SIOV?

Yes.

Can you guys also test it as a PF
assignment?

For PF assignment, probably the driver (vfio-pci) needs to enable iopf.

Best regards,
baolu