All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC 00/16] Introduce ring flexible placement
@ 2025-11-06 17:01 Pavel Begunkov
  2025-11-06 17:01 ` [RFC 01/16] io_uring: add helper calculating region byte size Pavel Begunkov
                   ` (15 more replies)
  0 siblings, 16 replies; 17+ messages in thread
From: Pavel Begunkov @ 2025-11-06 17:01 UTC (permalink / raw)
  To: io-uring; +Cc: asml.silence

This patchset allows the user to put rings and ring headers
into the memory/parameter region and specify offsets where they
should lie.

It solves a problem where the headers are placed before ring entries,
which 1. usually padded wasting memory and using more cache lines
than a smarter placement would need. And 2. it grows the region size
to a non pow2. It's also handy to have a way to put everything into
a single region.

It's implemented for SQ and CQ, but planned to be supported by zcrx
as well. There is a bunch of cleanups (1-13), it'd make sense to
merge some of them separately. It also adds an ability to register
a memory region during setup and not via a registration (Patch 15).
And the placement handling is in Patch 16.

Pavel Begunkov (16):
  io_uring: add helper calculating region byte size
  io_uring: pass sq entires in the params struct
  io_uring: use mem_is_zero to check ring params
  io_uring: move flags check to io_uring_sanitise_params
  io_uring: introduce struct io_ctx_config
  io_uring: split out config init helper
  io_uring: add structure keeping ring offsets
  io_uring: pre-calculate scq offsets
  io_uring: inroduce helper for setting user offset
  io_uring: separate cqe array from headers
  io_uring/region: introduce io_region_slice
  io_uring: convert pointer init to io_region_slice
  io_uring: refactor rings_size()
  io_uring: extract io_create_mem_region
  io_uring: allow creating mem region at setup
  io_uring: introduce SCQ placement

 include/linux/io_uring_types.h |  17 +-
 include/uapi/linux/io_uring.h  |  21 +-
 io_uring/fdinfo.c              |   2 +-
 io_uring/io_uring.c            | 341 +++++++++++++++++++++++----------
 io_uring/io_uring.h            |  34 +++-
 io_uring/memmap.c              |  16 +-
 io_uring/memmap.h              |   7 +
 io_uring/register.c            |  75 ++++----
 8 files changed, 360 insertions(+), 153 deletions(-)

-- 
2.49.0


^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2025-11-06 17:02 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-06 17:01 [RFC 00/16] Introduce ring flexible placement Pavel Begunkov
2025-11-06 17:01 ` [RFC 01/16] io_uring: add helper calculating region byte size Pavel Begunkov
2025-11-06 17:01 ` [RFC 02/16] io_uring: pass sq entires in the params struct Pavel Begunkov
2025-11-06 17:01 ` [RFC 03/16] io_uring: use mem_is_zero to check ring params Pavel Begunkov
2025-11-06 17:01 ` [RFC 04/16] io_uring: move flags check to io_uring_sanitise_params Pavel Begunkov
2025-11-06 17:01 ` [RFC 05/16] io_uring: introduce struct io_ctx_config Pavel Begunkov
2025-11-06 17:01 ` [RFC 06/16] io_uring: split out config init helper Pavel Begunkov
2025-11-06 17:01 ` [RFC 07/16] io_uring: add structure keeping ring offsets Pavel Begunkov
2025-11-06 17:01 ` [RFC 08/16] io_uring: pre-calculate scq offsets Pavel Begunkov
2025-11-06 17:01 ` [RFC 09/16] io_uring: inroduce helper for setting user offset Pavel Begunkov
2025-11-06 17:01 ` [RFC 10/16] io_uring: separate cqe array from headers Pavel Begunkov
2025-11-06 17:01 ` [RFC 11/16] io_uring/region: introduce io_region_slice Pavel Begunkov
2025-11-06 17:01 ` [RFC 12/16] io_uring: convert pointer init to io_region_slice Pavel Begunkov
2025-11-06 17:01 ` [RFC 13/16] io_uring: refactor rings_size() Pavel Begunkov
2025-11-06 17:01 ` [RFC 14/16] io_uring: extract io_create_mem_region Pavel Begunkov
2025-11-06 17:01 ` [RFC 15/16] io_uring: allow creating mem region at setup Pavel Begunkov
2025-11-06 17:01 ` [RFC 16/16] io_uring: introduce SCQ placement Pavel Begunkov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.