diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-10 15:13:31 -0500 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-10 15:13:31 -0500 |
| commit | df6e71bb5188bdc762ca0fbc73352f9067572589 (patch) | |
| tree | 0598532da068ec59d950eff00d11154b718666b7 /tools/cuda-ab/run/transformer | |
| parent | 72c7e2e6d4443457807d947f38ec650b3b8fb75a (diff) | |
| download | open-iov-df6e71bb5188bdc762ca0fbc73352f9067572589.tar.gz open-iov-df6e71bb5188bdc762ca0fbc73352f9067572589.zip | |
vgsp: author the scrub release pair for scanner-registered waits (CONT.414)
The X DDX vidheap scrub wait polls the finish payload at channel buffer
+0x6c004 while the host still reads USERD GP_PUT=0, so put-based forward
authoring wrote sema=entries-1 / fin=0: exactly the values that leave
channelWaitForFreeEntry and channelWaitForFinishPayload blocked. Xorg then
held the NVRM RM API write lock inside NV_ESC_RM_VID_HEAP_CONTROL, and the
GL thread and nvidia-modeset both sat D-state on os_acquire_rwlock_write.
A scanner-registered buffer with no observed submissions now gets the
proven all-ones release pair (sema=fin=0xffffffff) and is re-authored every
pass so a guest rewrite cannot re-block the wait. Put-driven records keep
forward-only authoring.
Result: the GL thread leaves D-state and a glClear+glFinish+glReadPixels
probe returns rc=0 with pixel=ff0000ff (a real red readback).
Diffstat (limited to 'tools/cuda-ab/run/transformer')
0 files changed, 0 insertions, 0 deletions
