Public bug reported:
[Impact]
NVMe over RDMA sizes each request's scatterlist from the block layer's
physical segment count. For GPUDirect Storage (nvidia-fs) I/O, that count
describes the CPU proxy pages, not the GPU memory behind them. Physically
contiguous proxy pages are merged into fewer segments, but the 64K GPU pages
they map need not be contiguous. The nvidia-fs mapper can therefore need
more scatterlist entries than were allocated.
The mapper is not given the table size. When it reaches the end, it moves the
end marker and keeps writing. The result is silent memory corruption of the
memory past the scatterlist, such as the neighbouring request's PDU, rather
than an I/O error.
[Fix]
For requests that may carry GPU pages, size the scatterlist from a per-bio
upper bound: one entry per 64K GPU page each bio touches, plus one for a bio
that starts inside a GPU page. Keep the physical segment count as a minimum.
CPU requests keep the existing allocation, and every eligible request still
passes through the nvidia-fs mapper so mixed CPU/GPU requests are rejected.
The change is SAUCE-only (drivers/nvme/host/nvfs-rdma.h, rdma.c) and is
proposed for Ubuntu 26.04 linux-nvidia and linux-nvidia-bos.
** Affects: linux-nvidia-bos (Ubuntu)
Importance: Undecided
Status: New
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2170268
Title:
[linux-nvidia]: nvme-rdma: GDS scatterlist can be undersized for GPU
I/O
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux-nvidia-bos/+bug/2170268/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs