Pull io_uring updates from Jens Axboe: - Avoid indirect function calls in io-wq for executing and freeing work. The design of io-wq is such that it can be a generic mechanism, but as it's just used by io_uring now, may as well avoid these indirect calls - Clean up registered buffers for networking - Add support for IORING_OP_PIPE. Pretty straight forward, allows creating pipes with io_uring, particularly useful for having these be instantiated as direct descriptors - Clean up the coalescing support fore registered buffers - Add support for multiple interface queues for zero-copy rx networking. As this feature was merged for 6.15 it supported just a single ifq per ring - Clean up the eventfd support - Add dma-buf support to zero-copy rx - Clean up and improving the request draining support - Clean up provided buffer support, most notably with an eye toward making the legacy support less intrusive - Minor fdinfo cleanups, dropping support for dumping what credentials are registered - Improve support for overflow CQE handling, getting rid of GFP_ATOMIC for allocating overflow entries where possible - Improve detection of cases where io-wq doesn't need to spawn a new worker unnecessarily - Various little cleanups * tag 'for-6.16/io_uring-20250523' of git://git.kernel.dk/linux: (59 commits) io_uring/cmd: warn on reg buf imports by ineligible cmds io_uring/io-wq: only create a new worker if it can make progress io_uring/io-wq: ignore non-busy worker going to sleep io_uring/io-wq: move hash helpers to the top trace/io_uring: fix io_uring_local_work_run ctx documentation io_uring: finish IOU_OK -> IOU_COMPLETE transition io_uring: add new helpers for posting overflows io_uring: pass in struct io_big_cqe to io_alloc_ocqe() io_uring: make io_alloc_ocqe() take a struct io_cqe pointer io_uring: split alloc and add of overflow io_uring: open code io_req_cqe_overflow() io_uring/fdinfo: get rid of dumping credentials io_uring/fdinfo: only compile if CONFIG_PROC_FS is set io_uring/kbuf: unify legacy buf provision and removal io_uring/kbuf: refactor __io_remove_buffers io_uring/kbuf: don't compute size twice on prep io_uring/kbuf: drop extra vars in io_register_pbuf_ring io_uring/kbuf: use mem_is_zero() io_uring/kbuf: account ring io_buffer_list memory io_uring: drain based on allocates reqs ...
Showing the changes to include/uapi/linux (1 of 45 files). Show all
Unified · Split
| @@ -73,6 +73,7 @@ struct io_uring_sqe { · 72 unmodified lines | ||
| 73 | 73 | __u32 futex_flags; |
| 74 | 74 | __u32 install_fd_flags; |
| 75 | 75 | __u32 nop_flags; |
| 76 | + __u32 pipe_flags; | |
| 76 | 77 | }; |
| 77 | 78 | __u64 user_data; /* data to be passed back at completion time */ |
| 78 | 79 | /* pack this to avoid bogus arm OABI complaints */ |
| @@ -287,6 +288,7 @@ enum io_uring_op { · 208 unmodified lines | ||
| 287 | 288 | IORING_OP_EPOLL_WAIT, |
| 288 | 289 | IORING_OP_READV_FIXED, |
| 289 | 290 | IORING_OP_WRITEV_FIXED, |
| 291 | + IORING_OP_PIPE, | |
| 290 | 292 | |
| 291 | 293 | /* this goes last, obviously */ |
| 292 | 294 | IORING_OP_LAST, |
| @@ -992,12 +994,16 @@ struct io_uring_zcrx_offsets { · 699 unmodified lines | ||
| 992 | 994 | __u64 __resv[2]; |
| 993 | 995 | }; |
| 994 | 996 | |
| 997 | +enum io_uring_zcrx_area_flags { | |
| 998 | + IORING_ZCRX_AREA_DMABUF = 1, | |
| 999 | +}; | |
| 1000 | + | |
| 995 | 1001 | struct io_uring_zcrx_area_reg { |
| 996 | 1002 | __u64 addr; |
| 997 | 1003 | __u64 len; |
| 998 | 1004 | __u64 rq_area_token; |
| 999 | 1005 | __u32 flags; |
| 1000 | − __u32 __resv1; | |
| 1006 | + __u32 dmabuf_fd; | |
| 1001 | 1007 | __u64 __resv2[2]; |
| 1002 | 1008 | }; |
| 1003 | 1009 | |