mbox series

[00/11] support kernel allocated regions

Message ID cover.1732144783.git.asml.silence@gmail.com (mailing list archive)
Headers show
Series support kernel allocated regions | expand

Message

Pavel Begunkov Nov. 20, 2024, 11:33 p.m. UTC
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(-)

Comments

Jens Axboe Nov. 21, 2024, 1:28 a.m. UTC | #1
On 11/20/24 4:33 PM, Pavel Begunkov wrote:
> 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.

Took a quick look and I like it, agree that regions should be
broadly usable rather than be tied to pinning. I'll give this a
more thorough look in the coming days.