mirror-linux/Documentation
Linus Torvalds ca0b04ba0b for-6.15/io_uring-rx-zc-20250325
-----BEGIN PGP SIGNATURE-----
 
 iQJEBAABCAAuFiEEwPw5LcreJtl1+l5K99NY+ylx4KYFAmfjTP8QHGF4Ym9lQGtl
 cm5lbC5kawAKCRD301j7KXHgpm6oEACnpGL52FAKTVj14GDqFo6Pq0Jmnh07x8qj
 mpHFPwxfWAzRiuNyji2iS9ecS2cnlkixNyMWZipXRi4KJAUjJH6YDd7IofUI3Glf
 6v7b6srFSvsWJIJ8LdkJHLHAJuzYnJvFZ8apwgQczEDqgHq7BAunM1sVQ+mydjYk
 EXT4kN6DSBOPzwr9GAay52f8nXhbqdHfT+YTGHPHg+QToojL6gD7vvW57w/QqD/x
 91hJef1z01cSIsDZOxA0EUeD+9bBAHpoamr/e3IOOCVYCN6hy0dGa9g0QGbbpVyE
 AeU4FGZLV9J8OOfvHVraDt5Wn3IXxYaMu22dSn1S6tVinwjXhJR2LAA+t4fGHAkt
 i38LjOsIbopSQn/cNhzwC8UZcHLqnVsdDolHlHzsVFVfcpck2/4JFpUeP8QhWgrk
 f9tY12QUf/oEaWm0/sUCHZNFxpIGeFA5FFXf0Z92clnzBuiuWoesBNvxqY/2DeZn
 IDNXiv+Trxr6kFEjTpzPeuxbWrn4PJ7afQSAFcEmOCguk5riM+zJZNIKg0TxUHSS
 tt6sfxmTP1DhgDKad5kT3MLyzOcx47Kbjf4dj6KmRnD+3DGwwN2F7X7R1GJylPSp
 RLOzJ+Ouuy9UmBN6JMsT4BmR9+FJTVirADU926d/ZqCTtRV8Tnq/6HHmKmmr4CR0
 THJ0PJqQjg==
 =MOve
 -----END PGP SIGNATURE-----

Merge tag 'for-6.15/io_uring-rx-zc-20250325' of git://git.kernel.dk/linux

Pull io_uring zero-copy receive support from Jens Axboe:
 "This adds support for zero-copy receive with io_uring, enabling fast
  bulk receive of data directly into application memory, rather than
  needing to copy the data out of kernel memory.

  While this version only supports host memory as that was the initial
  target, other memory types are planned as well, with notably GPU
  memory coming next.

  This work depends on some networking components which were queued up
  on the networking side, but have now landed in your tree.

  This is the work of Pavel Begunkov and David Wei. From the v14 posting:

    'We configure a page pool that a driver uses to fill a hw rx queue
     to hand out user pages instead of kernel pages. Any data that ends
     up hitting this hw rx queue will thus be dma'd into userspace
     memory directly, without needing to be bounced through kernel
     memory. 'Reading' data out of a socket instead becomes a
     _notification_ mechanism, where the kernel tells userspace where
     the data is. The overall approach is similar to the devmem TCP
     proposal

     This relies on hw header/data split, flow steering and RSS to
     ensure packet headers remain in kernel memory and only desired
     flows hit a hw rx queue configured for zero copy. Configuring this
     is outside of the scope of this patchset.

     We share netdev core infra with devmem TCP. The main difference is
     that io_uring is used for the uAPI and the lifetime of all objects
     are bound to an io_uring instance. Data is 'read' using a new
     io_uring request type. When done, data is returned via a new shared
     refill queue. A zero copy page pool refills a hw rx queue from this
     refill queue directly. Of course, the lifetime of these data
     buffers are managed by io_uring rather than the networking stack,
     with different refcounting rules.

     This patchset is the first step adding basic zero copy support. We
     will extend this iteratively with new features e.g. dynamically
     allocated zero copy areas, THP support, dmabuf support, improved
     copy fallback, general optimisations and more'

  In a local setup, I was able to saturate a 200G link with a single CPU
  core, and at netdev conf 0x19 earlier this month, Jamal reported
  188Gbit of bandwidth using a single core (no HT, including soft-irq).

  Safe to say the efficiency is there, as bigger links would be needed
  to find the per-core limit, and it's considerably more efficient and
  faster than the existing devmem solution"

* tag 'for-6.15/io_uring-rx-zc-20250325' of git://git.kernel.dk/linux:
  io_uring/zcrx: add selftest case for recvzc with read limit
  io_uring/zcrx: add a read limit to recvzc requests
  io_uring: add missing IORING_MAP_OFF_ZCRX_REGION in io_uring_mmap
  io_uring: Rename KConfig to Kconfig
  io_uring/zcrx: fix leaks on failed registration
  io_uring/zcrx: recheck ifq on shutdown
  io_uring/zcrx: add selftest
  net: add documentation for io_uring zcrx
  io_uring/zcrx: add copy fallback
  io_uring/zcrx: throttle receive requests
  io_uring/zcrx: set pp memory provider for an rx queue
  io_uring/zcrx: add io_recvzc request
  io_uring/zcrx: dma-map area for the device
  io_uring/zcrx: implement zerocopy receive pp memory provider
  io_uring/zcrx: grab a net device
  io_uring/zcrx: add io_zcrx_area
  io_uring/zcrx: add interface queue and refill queue
2025-03-28 13:45:52 -07:00
..
ABI powerpc updates for 6.15 2025-03-27 19:39:08 -07:00
PCI pci-v6.14-changes 2025-01-25 16:03:40 -08:00
RCU rcu: Remove references to old grace-period-wait primitives 2025-02-04 21:50:06 -08:00
accel
accounting Mainly individually changelogged singleton patches. The patch series in 2025-01-26 17:50:53 -08:00
admin-guide Landlock update for v6.15-rc1 2025-03-28 12:37:13 -07:00
arch powerpc updates for 6.15 2025-03-27 19:39:08 -07:00
block blk-crypto: add ioctls to create and prepare hardware-wrapped keys 2025-02-10 09:54:19 -07:00
bpf
cdrom
core-api RCU pull request for v6.15 2025-03-24 19:41:37 -07:00
cpu-freq
crypto
dev-tools It has been a reasonably busy cycle for docs... 2025-03-24 18:42:27 -07:00
devicetree soc: arm platform changes for 6.15 2025-03-27 09:37:18 -07:00
doc-guide
driver-api [GIT PULL for v6.15] media updates 2025-03-25 21:00:31 -07:00
edac EDAC: Add a memory repair control feature 2025-02-26 11:13:23 +01:00
fault-injection
fb
features scripts: get_feat.pl: substitute s390x with s390 2025-03-12 16:25:50 -06:00
filesystems Ext4 bug fixes and cleanups, including: 2025-03-27 13:27:08 -07:00
firmware-guide
firmware_class
fpga
gpu drm: xlnx: zynqmp_dpsub: Fix kernel doc 2025-01-16 12:45:16 +01:00
hid HID: THC: Add documentation 2025-01-09 10:14:14 +01:00
hwmon hwmon: add driver for HTU31 2025-03-18 08:03:40 -07:00
i2c
iio docs: iio: Allow creating cross-references ABI 2025-02-18 13:42:46 -07:00
images
infiniband
input Documentation: input: Add section pertaining to polled input devices 2025-02-21 13:29:53 -07:00
isdn
kbuild Kbuild updates for v6.14 2025-01-31 12:07:07 -08:00
kernel-hacking
leds Documentation:leds: Add leds-st1202.rst 2025-01-09 10:30:23 +00:00
litmus-tests
livepatch docs: livepatch: move text out of code block 2025-03-04 16:01:29 +01:00
locking
maintainer
mhi
misc-devices
mm mm: pgtable: Fix grammar error 2025-02-04 09:40:14 -07:00
netlabel
netlink ynl: devlink: add missing board-serial-number 2025-03-25 04:50:39 -07:00
networking for-6.15/io_uring-rx-zc-20250325 2025-03-28 13:45:52 -07:00
nvdimm
nvme Documentation: typo fixes 2025-02-18 14:01:22 -07:00
pcmcia
peci
power Two fixes for footnote-related warnings that appeared with Sphinx 8.x. 2025-01-30 10:57:19 -08:00
process Networking changes for 6.15. 2025-03-26 21:48:21 -07:00
rust rust: docs: add missing newline to printing macro examples 2025-03-06 00:41:08 +01:00
scheduler Scheduler updates for v6.15: 2025-03-24 21:28:12 -07:00
scsi scsi: st: Add sysfs file position_lost_in_reset 2025-02-03 17:51:31 -05:00
security Hi, 2025-03-28 12:42:53 -07:00
sound sound updates for 6.15-rc1 2025-03-26 09:41:55 -07:00
sphinx docs: automarkup: drop legacy support 2025-02-18 13:42:46 -07:00
sphinx-static
spi
staging
sunrpc/xdr nfsd: rename NFS4_SHARE_WANT_* constants to OPEN4_SHARE_ACCESS_WANT_* 2025-01-21 15:30:01 -05:00
target
tee
timers
tools Documentation/rv: Add docs for the sched monitors 2025-03-24 17:27:40 -04:00
trace Latency tracing changes for v6.15: 2025-03-27 16:03:52 -07:00
translations Scheduler updates for v6.15: 2025-03-24 21:28:12 -07:00
usb Documentation: typo fixes 2025-02-18 14:01:22 -07:00
userspace-api Landlock update for v6.15-rc1 2025-03-28 12:37:13 -07:00
virt KVM/arm64 updates for 6.15 2025-03-20 12:54:12 -04:00
w1
watchdog
wmi platform/x86: wmi: Update documentation regarding the GUID-based API 2025-02-24 13:30:58 +02:00
.gitignore
Changes
CodingStyle
Kconfig
Makefile docs: Makefile: use the new script to check for bad ABI references 2025-02-13 09:44:30 -07:00
SubmittingPatches
atomic_bitops.txt
atomic_t.txt
conf.py docs: changes: update Sphinx minimal version to 3.4.3 2025-02-13 11:33:32 -07:00
docutils.conf
index.rst
memory-barriers.txt
subsystem-apis.rst Documentation: Document the NVMe PCI endpoint target driver 2025-01-10 19:30:49 -08:00