Messages in this thread | | | Date | Tue, 7 Mar 2023 09:55:28 -0800 | Subject | Re: [PATCH v2 08/16] iommu: define and export iommu_access_remote_vm() | From | Fenghua Yu <> |
| |
Hi, Baolu,
On 3/6/23 17:41, Baolu Lu wrote: > On 3/7/23 12:31 AM, Fenghua Yu wrote: >> Define and export iommu_access_remote_vm() to allow IOMMU related >> drivers to access user address space by PASID. >> >> The IDXD driver would like to use it to write the user's completion >> record that the hardware device is not able to write to due to user >> page fault. > > I don't quite follow here. Isn't I/O page fault already supported?
The following patch 9 in this series explains in details why IDXD device cannot use page fault to write to user memory: https://lore.kernel.org/dmaengine/20230306163138.587484-10-fenghua.yu@intel.com/
"DSA supports page fault handling through PRS. However, the DMA engine that's processing the descriptor is blocked until the PRS response is received. Other workqueues sharing the engine are also blocked. Page fault handing by the driver with PRS disabled can be used to mitigate the stalling.
With PRS disabled while ATS remain enabled, DSA handles page faults on a completion record by reporting an event in the event log. In this instance, the descriptor is completed and the event log contains the completion record address and the contents of the completion record."
That's why IDXD driver needs this IOMMU's helper iommu_access_remote_vm() to copy the completion record from event log buffer to user space.
Thanks.
-Fenghua
| |