The classical way SQ/CQ work is kernel doing the allocation and the user mmap'ing it into the userspace. Regions need to support it as well. The patchset 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. I'll be sending liburing tests in a separate set. Additionally tested converting CQ/SQ to internal region api, but this change is left for later. Pavel Begunkov (11): io_uring: rename ->resize_lock io_uring/rsrc: export io_check_coalesce_buffer io_uring/memmap: add internal region flags 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 include/linux/io_uring_types.h | 7 +- io_uring/io_uring.c | 2 +- io_uring/memmap.c | 190 ++++++++++++++++++++++++++++----- io_uring/memmap.h | 12 ++- io_uring/register.c | 12 +-- io_uring/rsrc.c | 22 ++-- io_uring/rsrc.h | 4 + 7 files changed, 198 insertions(+), 51 deletions(-) -- 2.46.0