>
>
>
> I still fail to see how this is not an issue with IOAT - if you want to
> DMA into the user buffer, you better have that pinned and locked doe the
> duration of the DMA transfer.


I checked and you are right! there is pinning of the pages (
http://lxr.linux.no/linux/net/ipv4/tcp.c#L1158). But i wasn't entirely wrong
too: for IOAT-less zero copy, you have to mark the pages as COW and wait
until the data has been acked (possibly retransmitting data etc). With IOAT
you pin for a very short while. Also, there is a sysctl threshold
called tcp_dma_copybreak that helps avoid pinning small buffers.

If you want to read some code, look for the CONFIG_NET_DMA and also the ioat
dma driver at drivers/dma/ioatdma.c



Cheers,
>
> Gilad
>

Reply via email to