summaryrefslogtreecommitdiffstats
path: root/debug/risc-v-gsp-rm-vm/tests/test_session_call.py
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-02 15:22:04 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-02 15:22:04 -0500
commitbbd3450baa544d8e25f2048cec6dee21bffac7b2 (patch)
tree5f4c9848584d657c56dac60bcd468458dcdde485 /debug/risc-v-gsp-rm-vm/tests/test_session_call.py
parentbd658403569467ae2dd12d50da27c530643cb097 (diff)
downloadopen-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 'debug/risc-v-gsp-rm-vm/tests/test_session_call.py')
0 files changed, 0 insertions, 0 deletions