> 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?