The first part of the series (Patches 1-11) implement kernel allocated regions, which is the classical way SQ/CQ are created. It should be straightforward with simple preparations patches and cleanups. The main part is Patch 10, which internally implements kernel allocations, and Patch 11 that implementing the mmap part and exposes it to reg-wait / parameter region users. The rest (Patches 12-18) converts SQ, CQ and provided buffers rings to regions, which carves a common path for all of them and removes duplication. v3: fix !NOMMU unused function warning rebased to avoid conflicts with recent fixes use more appropriate alloc_pages_bulk_array_node Pavel Begunkov (18): io_uring: rename ->resize_lock io_uring/rsrc: export io_check_coalesce_buffer io_uring/memmap: flag vmap'ed regions io_uring/memmap: flag regions with user pages io_uring/memmap: account memory before pinning io_uring/memmap: reuse io_free_region for failure path io_uring/memmap: optimise single folio regions io_uring/memmap: helper for pinning region pages io_uring/memmap: add IO_REGION_F_SINGLE_REF io_uring/memmap: implement kernel allocated regions io_uring/memmap: implement mmap for regions io_uring: pass ctx to io_register_free_rings io_uring: use region api for SQ io_uring: use region api for CQ io_uring/kbuf: use mmap_lock to sync with mmap io_uring/kbuf: remove pbuf ring refcounting io_uring/kbuf: use region api for pbuf rings io_uring/memmap: unify io_uring mmap'ing code include/linux/io_uring_types.h | 23 +- io_uring/io_uring.c | 72 +++---- io_uring/kbuf.c | 226 ++++++-------------- io_uring/kbuf.h | 20 +- io_uring/memmap.c | 375 ++++++++++++++++----------------- io_uring/memmap.h | 23 +- io_uring/register.c | 91 ++++---- io_uring/rsrc.c | 22 +- io_uring/rsrc.h | 4 + 9 files changed, 362 insertions(+), 494 deletions(-) -- 2.47.1