diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-26 15:43:01 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-26 15:43:01 -0400 |
| commit | c3cdcf4b1f2279512f1ef37888fe8c76160295e5 (patch) | |
| tree | b066d9d1bb9e63d2028a2150ae436983822e497f /docs/04-implementation/04-real-render-walls.md | |
| parent | 87adc72977bf1e882b36a0597431f7e113559908 (diff) | |
| download | open-iov-c3cdcf4b1f2279512f1ef37888fe8c76160295e5.tar.gz open-iov-c3cdcf4b1f2279512f1ef37888fe8c76160295e5.zip | |
vgsp-sema: SESSION 135 CE first-submission capture: reject a consumed-state USERD candidate (get >= put > 0)
At the first-submission instant the channel's own submission is by
definition unconsumed - the notifier clear this capture runs before is
what would let the driver treat it as consumed. A candidate whose USERD
reads a consumed state (put == get > 0) cannot be this channel's live
just-submitted work.
Observed r785 (CUDA-first boot, three Vulkan runs): the capture latched
fb 0x80000 / userd 0x90000 for beef0101 (rank 0) with put=1 get=1 - the
dead CUDA client's caf00012 block surviving in VRAM after its session
ended. The decoded entry (va=0x120000000 len=40) was the old session's,
the expectations seeded from the stale pool word (want=2/3 vs pay=1) and
the Vulkan client stalled into its fence timeout on every run.
All genuine first-submission latches on record read put=1 get=0 at the
capture instant (r779 caf00012 rank0, r785 caf00012 rank0, r781/run1
beef0101). Idle 0/0 stays acceptable per svc_userd_probe's own rule.
Session-scoped rank ownership (svc_ce_firstsub_off) does not cover this
class: the stale block belongs to a previous CLIENT, and its consumed
state is the only local signal that it is not this submission.
Diffstat (limited to 'docs/04-implementation/04-real-render-walls.md')
0 files changed, 0 insertions, 0 deletions
