News: 0001597198

  ARM Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life (Terry Pratchett, Jingo)

NVIDIA Improves Block Layer Peer-To-Peer DMA In Linux 6.19

([Linux Storage] 5 Hours Ago Linux 6.19 Block)


The IO_uring and block subsystem changes have been merged for the [1]Linux 6.19 merge window with a few improvements worth highlighting this cycle.

The [2]IO_uring merge brings several code clean-ups, support for mixed size SQEs, zero copy receive "zcrx" updates, and improved ring initialization. IO_uring also now supports getsockname() and getpeername().

[3]

With the [4]block merge for Linux 6.19 catching my eye were improvements to the block layer peer-to-peer (P2P) DMA support. The P2P DMA work around block devices ended up being work pursued by NVIDIA. NVIDIA engineer Leon Romanovsky explained with [5]the patch series :

"This patch series improves block layer and NVMe driver support for MMIO memory regions, particularly for peer-to-peer (P2P) DMA transfers that go through the host bridge.

The series addresses a critical gap where P2P transfers through the host bridge (PCI_P2PDMA_MAP_THRU_HOST_BRIDGE) were not properly marked as MMIO memory, leading to potential issues with:

- Inappropriate CPU cache synchronization operations on MMIO regions

- Incorrect DMA mapping/unmapping that doesn't respect MMIO semantics

- Missing IOMMU configuration for MMIO memory handling

This work is extracted from the larger DMA physical API improvement series and focuses specifically on block layer and NVMe requirements for MMIO memory support."

In addition to the enhancements to the block layer P2P DMA support, Linux 6.19 block code also has improved its auto integrity code, speeds up polled I/O handling, fixes blk-throttle for SSD devices, support for caching zones, a variety of MD fixes, improved usage of per-CPU workqueues with Bcache, the block tracing code now supports zoned devices, and other improvements.



[1] https://www.phoronix.com/search/Linux+6.19

[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0abcfd8983e3d3d27b8f5f7d01fed4354eb422c4

[3] https://www.phoronix.com/image-viewer.php?id=2025&image=nvidia_p2p_block_lrg

[4] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cc25df3e2e22a956d3a0d427369367b4a901d203

[5] https://lore.kernel.org/lkml/20251114-block-with-mmio-v5-0-69d00f73d766@nvidia.com/



Brief History Of Linux (#17)
If only Gary had been sober

When Micro-soft moved to Seattle in 1979, most of its revenue came from
sales of BASIC, a horrible language so dependant on GOTOs that spaghetti
looked more orderly than its code did. (BASIC has ruined more promising
programmers than anything else, prompting its original inventor Dartmouth
University to issue a public apology in 1986.)

However, by 1981 BASIC hit the backburner to what is now considered the
luckiest break in the history of computing: MS-DOS. (We use the term
"break" because MS-DOS was and always will be broken.) IBM was developing
a 16-bit "personal computer" and desperately needed an OS to drive it.

Their first choice was Gary Kildall's CP/M, but IBM never struck a deal
with him. We've discovered the true reason: Kildall was drunk at the time
the IBM representatives went to talk with him. A sober man would not have
insulted the reps, calling their employer an "Incredibly Bad Monopoly" and
referring to their new IBM-PC as an "Idealistically Backwards
Microcomputer for People without Clues". Needless to say, Gary "I Lost The
Deal Of The Century" Kildall was not sober.