> From: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> > Sent: Thursday, September 28, 2023 12:28 PM > > The iopf_queue_flush_dev() is called by the iommu driver before releasing > a PASID. It ensures that all pending faults for this PASID have been > handled or cancelled, and won't hit the address space that reuses this > PASID. The driver must make sure that no new fault is added to the queue. > > The SMMUv3 driver doesn't use it because it only implements the > Arm-specific stall fault model where DMA transactions are held in the SMMU > while waiting for the OS to handle iopf's. Since a device driver must > complete all DMA transactions before detaching domain, there are no > pending iopf's with the stall model. PRI support requires adding a call to > iopf_queue_flush_dev() after flushing the hardware page fault queue. > > The current implementation of iopf_queue_flush_dev() is a simplified > version. It is only suitable for SVA case in which the processing of iopf > is implemented in the inner loop of the iommu subsystem. > > Improve this interface to make it also work for handling iopf out of the > iommu core. Rename the function with a more meaningful name. Remove a > warning message in iommu_page_response() since the iopf queue might get > flushed before possible pending responses. > > Signed-off-by: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>