> From: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> > Sent: Tuesday, January 30, 2024 4:09 PM > > Previously, before a group of page faults was passed to the domain's iopf > handler, the last page fault of the group was kept in the list of > iommu_fault_param::faults. In the page fault response path, the group's > last page fault was used to look up the list, and the page faults were > responded to device only if there was a matched fault. > > The previous approach seems unnecessarily complex and not performance > friendly. Put the page fault group itself to the outstanding fault list. > It can be removed in the page fault response path or in the > iopf_queue_remove_device() path. The pending list is protected by > iommu_fault_param::lock. To allow checking for the group's presence in > the list using list_empty(), the iopf group should be removed from the > list with list_del_init(). > > IOMMU_PAGE_RESP_PASID_VALID is set in the code but not used anywhere. > Remove it to make the code clean. IOMMU_PAGE_RESP_PASID_VALID is set > in the response message indicating that the response message includes > a valid PASID value. Actually, we should keep this hardware detail in > the individual driver. When the page fault handling framework in IOMMU > and IOMMUFD subsystems includes a valid PASID in the fault message, the > response message should always contain the same PASID value. Individual > drivers should be responsible for deciding whether to include the PASID > in the messages they provide for the hardware. > > Signed-off-by: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> > Reviewed-by: Jason Gunthorpe <jgg@xxxxxxxxxx> > Tested-by: Yan Zhao <yan.y.zhao@xxxxxxxxx> Reviewed-by: Kevin Tian <kevin.tian@xxxxxxxxx>