summaryrefslogtreecommitdiffstats
path: root/kernel/gsp_emulation.c
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-29 21:39:00 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-09-29 21:39:00 -0400
commitd0688c92692cc936ce2c347f26572b1bb55dc660 (patch)
treec48aae9b22b30a07de668a82446aa1f8814c108d /kernel/gsp_emulation.c
parentd2402e116c265c2ba827197e9d7c212c5b1f7aff (diff)
downloadopen-iov-d0688c92692cc936ce2c347f26572b1bb55dc660.tar.gz
open-iov-d0688c92692cc936ce2c347f26572b1bb55dc660.zip
sema-svc: deliver the tracking-sem payload for every consumed GPFIFO entry
The client's UVM_REGISTER_GPU blocks in uvm_push_end_and_wait on the first CE channel's tracking semaphore (pool word 0x121000000) waiting for value 3. The pool payload stayed at 1 while the client pushed: the pump processed entries whose push bytes were unreadable or had no decodable release, so the release bookkeeping advanced (expected_sem_payload) but nothing was written to the pool page. Treat the GPU semantics as normative: each consumed GPFIFO entry on an engine channel releases the channel's tracking semaphore with the incrementing queued value. When the decoded stream carries no release and sema_fake_rel is enabled, deliver the expected payload through svc_fake_release() instead of only bumping the counter. Also initialize expected_sem_payload for a fresh pool page whose current payload is 0 (expected = 1) so the first push is deliverable from the start.
Diffstat (limited to 'kernel/gsp_emulation.c')
0 files changed, 0 insertions, 0 deletions