diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-02 15:22:04 -0500 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-11-02 15:22:04 -0500 |
| commit | bbd3450baa544d8e25f2048cec6dee21bffac7b2 (patch) | |
| tree | 5f4c9848584d657c56dac60bcd468458dcdde485 /tools/cuda-ab/run/r18_anim | |
| parent | bd658403569467ae2dd12d50da27c530643cb097 (diff) | |
| download | open-iov-bbd3450baa544d8e25f2048cec6dee21bffac7b2.tar.gz open-iov-bbd3450baa544d8e25f2048cec6dee21bffac7b2.zip | |
vgsp: CONT-113 - clamp keep_mask to capture-covered slots (r1405 poison root cause)
The r1405 priv-error wedge traced live: the draw window calls
CALL_MME_MACRO(34)/(57) while the MME capture holds 13 SA slots
(0..12, IR <= 0xe9); keep_mask=~0 exempted every slot from stubbing,
so those calls ran, the MME fetched an instruction the packed program
does not hold (info=badf1201 pc_valid=1 pc=513 mac=0x1f1 miss=1
ir=badf1201) and poisoned the lane; the second recovery's hard re-arm
left the engine unresponsive (probe rc=-110, GP_GET frozen).
Fix (one variable): gsp_phys_gr_slot_kept() - a keep_mask slot is only
honored when the capture covers it (SA entry present AND its IR
instruction entered the replay); otherwise the proven r1186 safe
combination applies: SA stub + CALL-run drop, never a fetch of
non-resident code. The decision reads the live SA table per window, so
a later capture generation that covers the slot releases it
automatically. Bounded MME-KEEP-CLAMP witness. Knob
sema_gl_mme_keep_clamp (default 1; 0 = r1405 all-real A/B).
Diffstat (limited to 'tools/cuda-ab/run/r18_anim')
0 files changed, 0 insertions, 0 deletions
