[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <063D6719AE5E284EB5DD2968C1650D6DCFE6DBFD@AcuExch.aculab.com>
Date: Wed, 22 Feb 2017 17:58:23 +0000
From: David Laight <David.Laight@...LAB.COM>
To: 'Alexander Duyck' <alexander.duyck@...il.com>,
Eric Dumazet <eric.dumazet@...il.com>
CC: Eric Dumazet <edumazet@...gle.com>,
Alexander Duyck <alexander.h.duyck@...el.com>,
"David S . Miller" <davem@...emloft.net>,
netdev <netdev@...r.kernel.org>,
Tariq Toukan <tariqt@...lanox.com>,
"Saeed Mahameed" <saeedm@...lanox.com>,
Willem de Bruijn <willemb@...gle.com>,
Jesper Dangaard Brouer <brouer@...hat.com>,
Brenden Blanco <bblanco@...mgrid.com>,
Alexei Starovoitov <ast@...nel.org>
Subject: RE: [PATCH v3 net-next 08/14] mlx4: use order-0 pages for RX
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
Powered by blists - more mailing lists