On Mon, 10 Apr 2023 at 14:08, Kal Conley <kal.conley@xxxxxxxxxxx> wrote: > > The main purpose of this patchset is to add AF_XDP support for UMEM > chunk sizes > PAGE_SIZE. This is enabled for UMEMs backed by HugeTLB > pages. > > Note, v5 fixes a major bug in previous versions of this patchset. > In particular, dma_map_page_attrs used to be called once for each > order-0 page in a hugepage with the assumption that returned I/O > addresses are contiguous within a hugepage. This assumption is incorrect > when an IOMMU is enabled. To fix this, v5 does DMA page accounting > accounting at hugepage granularity. Thank you so much Kal for implementing this feature. After you have fixed the three small things I had for patch #2, you have my ack for the whole set below. Please add it. For the whole set: Acked-by: Magnus Karlsson <magnus.karlsson@xxxxxxxxx> It would be great if you have the time and desire to also take this to zero-copy mode. I have had multiple AF_XDP users mailing me privately that such a feature would be very useful for them. For some of them it was even a requirement to be able to get down to the latencies they were aiming for. > Changes since v4: > * Use hugepages in DMA map (fixes zero-copy mode with IOMMU). > * Use pool->dma_pages to check for DMA. This change is needed to avoid > performance regressions). > * Update commit message and benchmark table. > > Changes since v3: > * Fix checkpatch.pl whitespace error. > > Changes since v2: > * Related fixes/improvements included with v2 have been removed. These > changes have all been resubmitted as standalone patchsets. > * Minimize uses of #ifdef CONFIG_HUGETLB_PAGE. > * Improve AF_XDP documentation. > * Update benchmark table in commit message. > > Changes since v1: > * Add many fixes/improvements to the XSK selftests. > * Add check for unaligned descriptors that overrun UMEM. > * Fix compile errors when CONFIG_HUGETLB_PAGE is not set. > * Fix incorrect use of _Static_assert. > * Update AF_XDP documentation. > * Rename unaligned 9K frame size test. > * Make xp_check_dma_contiguity less conservative. > * Add more information to benchmark table. > > Thanks to Magnus Karlsson for all his support! > > Happy Easter! > > Kal Conley (4): > xsk: Use pool->dma_pages to check for DMA > xsk: Support UMEM chunk_size > PAGE_SIZE > selftests: xsk: Use hugepages when umem->frame_size > PAGE_SIZE > selftests: xsk: Add tests for 8K and 9K frame sizes > > Documentation/networking/af_xdp.rst | 36 ++++++++++------ > include/net/xdp_sock.h | 2 + > include/net/xdp_sock_drv.h | 12 ++++++ > include/net/xsk_buff_pool.h | 12 +++--- > net/xdp/xdp_umem.c | 55 +++++++++++++++++++----- > net/xdp/xsk_buff_pool.c | 43 ++++++++++-------- > tools/testing/selftests/bpf/xskxceiver.c | 27 +++++++++++- > tools/testing/selftests/bpf/xskxceiver.h | 2 + > 8 files changed, 142 insertions(+), 47 deletions(-) > > -- > 2.39.2 >