diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-28 09:09:13 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-09-28 09:09:13 -0400 |
| commit | 448d1d9a6f9168006910a79e177d4bed331bacc6 (patch) | |
| tree | 5e628d80c4a07f1e6f50824ba63ce2a42715f399 /userspace/cuda/tools | |
| parent | 17e1f522e4e9e04d13c4ca9495a2f4f1bdc58c36 (diff) | |
| download | open-iov-448d1d9a6f9168006910a79e177d4bed331bacc6.tar.gz open-iov-448d1d9a6f9168006910a79e177d4bed331bacc6.zip | |
sem: run GR channels - accept CE methods on subchannel 0, discover GR rings
- The CE semaphore/memset method groups also arrive on subchannel 0 (CUDA's
push library binds the copy class on compute channels to carry the
work-submission releases), so the stream decoder accepts both 0 and 4.
- GR (compute) channel rings live in the same video-memory allocation as the
CE rings, 0x3000 bytes per channel after them: ring (0x2000) at
ce_end + 0x3000*rank, USERD at +0x2000. Discover and pin them once the CE
ranks are known; verified against ring entry 0 (1 MB aligned push VA in
the client window, sane length) and the USERD's put/get, so a layout
change costs a failed pin, not a wrong one. Gated by sema_gr_rings
(default on).
- memprobe: require the sem-VA triple in the sem-object scanner (a bare
qword in the window matches thousands of unrelated pointers once the
ring/pushbuffer windows are part of the range).
Live evidence: ring entries read through the guest's /proc/pid/mem decode to
the GR channels' first pushes; pinning the ring (fb 0x140000+0x3000*rank),
USERD (ring+0x2000) and first-push pages made all 20 GR channels execute
their entry 0 for the first time (get=1 sub=1).
Diffstat (limited to 'userspace/cuda/tools')
0 files changed, 0 insertions, 0 deletions
