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

From: Tian, Kevin
Date: Sun May 19 2024 - 23:35:54 EST


> From: Baolu Lu <baolu.lu@xxxxxxxxxxxxxxx>
> Sent: Monday, May 20, 2024 10:10 AM
>
> 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.
>

then do it only for that scenario?