diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-26 00:13:42 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-26 00:13:42 -0400 |
| commit | b72b771767fd58ccd015f7af4e817051f696937b (patch) | |
| tree | 284f8f96a3d3dd1539bf1ca79635905a294bb3ad /tools/guest-diag/wall2/t112c-gdbstub.py | |
| parent | c01a9967cd38194242214acfaa0dab42396d7cc3 (diff) | |
| download | open-iov-master.tar.gz open-iov-master.zip | |
vgsp-sema: SESSION 128 utility/copy-channel inline-download sweep (sema_gr_util_scan, default 0) - decode the driver's engine-side MME/i2m upload path and materialize LOAD_INLINE_DATA downloads and pitch copy-ins from channels the put-bounded entry loop never decodesHEADmaster
The Vulkan client's code/constant uploads leave the utility channels (the
MEM2MEM/A140 composite at h=0xbeef0100 and the eng=11/12 copy channels)
and were invisible to the emulation: with an unresolved USERD the
put-bounded entry loop skips those channels entirely (the !userd_ok branch
continues), and with a resolved USERD the main decode's operand group and
LOAD_INLINE_DATA arms only accept subchannel 1 while the uploads ride the
mem2mem/copy subchannels (2/4).
svc_gr_util_sweep scans up to sema_gr_util_scan (default 0 = off; requires
sema_gr_xlate) GPFIFO entries of every channel directly, reads each push
plus its successor as the tail (the driver's source-view GPFIFO call
carries the payload of a trailing LOAD_INLINE_DATA run - observed
beef0100 idx00->idx01 and idx08->idx09), and feeds them through
svc_gr_ahead_push in a new inline-only mode: the GRCE/INLINE_TO_MEMORY
operand group now also accepts the mem2mem subchannel, the QMD window,
release and copy-pend arms are skipped, and a TURING_DMA_COPY_A launch on
the copy subchannels materializes the engine copy-in (src from the
client's staging buffer through the trusted read, dst through the same
svc_grce_inline_write the GR sweep uses) instead of queueing a launch
copy-out. Every materialization is once-only keyed by (push_va, content
hash, dst, bytes); SVC_AHEAD_TAIL_INLINE_MAX rises 4 KB -> 32 KB so the
12 KB code-staging payload is not truncated.
Verified on r737 (gated): the sweep runs for all ten channels (utility,
CE and GR) with bounded reads and no release/QMD state changes; the
utility channel is swept 14 entries per pass. The LOAD_INLINE_DATA arm on
the utility channel's subchannel-2 runs still does not fire (payload/parse
witness is the next debug item, see Handoff SESSION 128).
Diffstat (limited to 'tools/guest-diag/wall2/t112c-gdbstub.py')
0 files changed, 0 insertions, 0 deletions
