summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-21 12:17:47 -0400
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-10-21 12:17:47 -0400
commit2ae643432b2d1e37e90191afa6fbac042967bfe7 (patch)
tree63ec896f10f933f27e2a7648cce9d26933291179
parente77efad422961e5266ef30ef5ce9f49ae1fd76c1 (diff)
downloadopen-iov-2ae643432b2d1e37e90191afa6fbac042967bfe7.tar.gz
open-iov-2ae643432b2d1e37e90191afa6fbac042967bfe7.zip
gr: default wedge quiet window 40 s (r417 live: a 20 s host hold did not heal, the next 40 s hold did - legit engine writes resumed)
r417 reproduced the wedge deterministically with wedge_recover v2 (ITER 0 green, ITER 1 zero-write, both with the legacy win0 shadow path on and with the icache-invalidate bit forced off - the bit is not the trigger) and exercised the r410 quiet path for the first time: the 20 s hold left the outcome at 0 pages, the following 40 s hold logged 'WEDGE-QUIET healed: engine wrote 1 page(s) after the 40000 ms hold (streak was 1)'. A shadow-win0=0 A/B showed the engine executes but fetches the wrong program in that legacy shape (all-32768 wrong), so the win0 shadow path stays on. Default base raised to 40 s so the first hold heals instead of paying 20 s + 40 s.
-rw-r--r--kernel/gsp_phys_gpu.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/gsp_phys_gpu.c b/kernel/gsp_phys_gpu.c
index 6bd5aa0..b93c254 100644
--- a/kernel/gsp_phys_gpu.c
+++ b/kernel/gsp_phys_gpu.c
@@ -1124,23 +1124,25 @@ int gsp_phys_gr_nowrite_retries_value(void)
EXPORT_SYMBOL_GPL(gsp_phys_gr_nowrite_retries_value);
/*
- * r410 wedge quiet window (gsp_phys_gr_wedge_quiet_ms; default 20000, clamped
+ * r410 wedge quiet window (gsp_phys_gr_wedge_quiet_ms; default 40000, clamped
* [0,120000]; 0 disables). The sticky per-lane no-execute wedge (100% of
* launches no-write while kept busy) is proven to CLEAR when the lane stays
* quiet for tens of seconds (r409: a ~37 s client gap healed a wedged run;
* r416: 58 consecutive no-write launches during a 126 s client run, first
- * launches green again after the lane sat ~52 s idle). Immediate retries and
+ * launches green again after the lane sat ~52 s idle; r417: a 20 s host hold
+ * did not heal, a 40 s hold did - "WEDGE-QUIET healed: engine wrote 1
+ * page(s) after the 40000 ms hold"). Immediate retries and
* re-arms do not heal it (r409/r154). So when a zero-write outcome follows a
* previous accepted zero-write launch, the retry loop first holds this many ms
* with NO submissions to the engine, then re-arms (lane enable + schedules)
* and re-publishes once. The value doubles per further quiet retry. The
* quiet window is recovery-only: a launch that wrote anything never enters it.
*/
-static unsigned int gsp_phys_gr_wedge_quiet_ms_param = 20000u;
+static unsigned int gsp_phys_gr_wedge_quiet_ms_param = 40000u;
module_param_named(gsp_phys_gr_wedge_quiet_ms,
gsp_phys_gr_wedge_quiet_ms_param, uint, 0644);
MODULE_PARM_DESC(gsp_phys_gr_wedge_quiet_ms,
- "Quiet-window ms before retrying a launch on a lane whose previous launch also no-wrote (0=disable, default 20000)");
+ "Quiet-window ms before retrying a launch on a lane whose previous launch also no-wrote (0=disable, default 40000; r417: a 20 s hold did not heal, 40 s healed)");
unsigned int gsp_phys_gr_wedge_quiet_ms_value(void)
{