summaryrefslogtreecommitdiffstats
path: root/tools/rmtool/src
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-10 15:13:31 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-10 15:13:31 -0500
commitdf6e71bb5188bdc762ca0fbc73352f9067572589 (patch)
tree0598532da068ec59d950eff00d11154b718666b7 /tools/rmtool/src
parent72c7e2e6d4443457807d947f38ec650b3b8fb75a (diff)
downloadopen-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/rmtool/src')
0 files changed, 0 insertions, 0 deletions