RE: [PATCH v3 net-next 08/14] mlx4: use order-0 pages for RX
From: David Laight <hidden>
Date: 2017-02-22 17:58:33
From: Alexander Duyck
Sent: 22 February 2017 17:24
...
So there is a problem that is being overlooked here. That is the cost of the DMA map/unmap calls. The problem is many PowerPC systems have an IOMMU that you have to work around, and that IOMMU comes at a heavy cost for every map/unmap call. So unless you are saying you wan to setup a hybrid between the mlx5 and this approach where we have a page cache that these all fall back into you will take a heavy cost for having to map and unmap pages.
.. I can't help feeling that you need to look at how to get the iommu code to reuse pages, rather the ethernet driver. Maybe something like: 1) The driver requests a mapped receive buffer from the iommu. This might give it memory that is already mapped but not in use. 2) When the receive completes the driver tells the iommu the mapping is no longer needed. The iommu is not (yet) changed. 3) When the skb is freed the iommu is told that the buffer can be freed. 4) At (1), if the driver is using too much iommu resource then the mapping for completed receives can be removed to free up iommu space. Probably not as simple as it looks :-) David