On 28/06/2022 12:27, John Garry via iommu wrote:
On 28/06/2022 12:23, Robin Murphy wrote:
+
+ size_t
+ dma_opt_mapping_size(struct device *dev);
+
+Returns the maximum optimal size of a mapping for the device.
Mapping large
+buffers may take longer so device drivers are advised to limit total
DMA
+streaming mappings length to the returned value.
Nit: I'm not sure "advised" is necessarily the right thing to say in
general - that's only really true for a caller who cares about
throughput of churning through short-lived mappings more than anything
else, and doesn't take a significant hit overall from splitting up
larger requests. I do think it's good to clarify the exact context of
"optimal" here, but I'd prefer to be objectively clear that it's for
workloads where the up-front mapping overhead dominates.
I'm going to go with something like this:
size_t
dma_opt_mapping_size(struct device *dev);
Returns the maximum optimal size of a mapping for the device.
Mapping larger buffers may take much longer in certain scenarios. In
addition, for high-rate short-lived streaming mappings the upfront time
spent on the mapping may account for an appreciable part of the total
request lifetime. As such, if splitting larger requests incurs no
significant performance penalty, then device drivers are advised to
limit total DMA streaming mappings length to the returned value.
Let me know if you would like it further amended.
Cheers,
John