Re: [PATCH v5 6/9] iommufd: Fault-capable hwpt attach/detach/replace

From: Baolu Lu
Date: Sun May 19 2024 - 22:12:18 EST


On 5/15/24 4:43 PM, Tian, Kevin wrote:
From: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx>
Sent: Tuesday, April 30, 2024 10:57 PM
+
+int iommufd_fault_domain_replace_dev(struct iommufd_device *idev,
+ struct iommufd_hw_pagetable *hwpt,
+ struct iommufd_hw_pagetable *old)
+{
+ struct iommu_attach_handle *handle;
+ int ret;
+
+ if (hwpt->fault)
+ ret = iommufd_fault_iopf_enable(idev);
+ else
+ iommufd_fault_iopf_disable(idev);
+
+ ret = iommu_group_replace_domain(idev->igroup->group, hwpt-
domain);
+ if (ret)
+ goto out_cleanup;
+
+ iommufd_auto_response_faults(old, idev);
+ handle = iommu_attach_handle_get(idev->igroup->group,
IOMMU_NO_PASID, 0);
+ handle->idev = idev;

why is auto response required in replace? new requests can come
after the auto response anyway...

The user should prepare for faults delivered to the old or new hwpt
in the transition window.

The current design of replace allows switching between one that is not
IOPF-capable and one that is. This implies that if we switch from an
IOPF-capable hwpt to a non-IOPF-capable one, the response queue needs to
be auto responded.

Best regards,
baolu