Re: Memory providers multiplexing (Was: [PATCH net-next v4 4/5] page_pool: remove PP_FLAG_PAGE_FRAG flag)

From: Christian König
Date: Wed Jul 12 2023 - 09:35:41 EST


Am 12.07.23 um 15:03 schrieb Jason Gunthorpe:
On Wed, Jul 12, 2023 at 09:55:51AM +0200, Christian König wrote:

Anyone see any glaring issues with this approach? I plan on trying to
implement a PoC and sending an RFC v2.
Well we already have DMA-buf as user API for this use case, which is
perfectly supported by RDMA if I'm not completely mistaken.

So what problem do you try to solve here actually?
In a nutshell, netdev's design currently needs struct pages to do DMA
to it's packet buffers.

So it cannot consume the scatterlist that dmabuf puts out

RDMA doesn't need struct pages at all, so it is fine.

If Mina can go down the path of changing netdev to avoid needing
struct pages then no changes to DRM side things.

Otherwise a P2P struct page and a co-existance with netmem on a
ZONE_DEVICE page would be required. :\

Uff, depending on why netdev needs struct page (I think I have a good idea why) this isn't really going to work generically either way.

What we maybe able to do is to allow copy_file_range() between DMA-buf file descriptor and a TCP socket.

If I'm not completely mistaken that should then end up in DMA-bufs file_operations->copy_file_range callback (maybe with some minor change to allows this).

The DMA-buf framework could then forward this to the exporter of the memory which owns the backing memory could then do the necessary steps.

Regards,
Christian.


Jason