A bit late but first we need a better and more generic API for ring/memory/region registration (see Patch 4), and it changes the API extending registered waits to be a generic parameter passing mechanism. That will be useful in the future to implement a more flexible rings creation, especially when we want to share same huge page / mapping. Patch 6 uses it for registered wait arguments, and it can also be used to optimise parameter passing for normal io_uring requests. A dirty liburing branch with tests: https://github.com/isilence/liburing/tree/io-uring-region-test v3: fix page array memleak (Patch 4) v2: cleaned up namings and commit messages moved all EXT_ARG_REG related bits Patch 5 -> 6 added alignment checks (Patch 6) Pavel Begunkov (6): io_uring: fortify io_pin_pages with a warning io_uring: disable ENTER_EXT_ARG_REG for IOPOLL io_uring: temporarily disable registered waits io_uring: introduce concept of memory regions io_uring: add memory region registration io_uring: restore back registered wait arguments include/linux/io_uring_types.h | 20 +++---- include/uapi/linux/io_uring.h | 28 +++++++++- io_uring/io_uring.c | 27 +++++----- io_uring/memmap.c | 69 ++++++++++++++++++++++++ io_uring/memmap.h | 14 +++++ io_uring/register.c | 97 ++++++++++++---------------------- io_uring/register.h | 1 - 7 files changed, 166 insertions(+), 90 deletions(-) -- 2.46.0