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. 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