diff options
| author | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-21 12:17:47 -0400 |
|---|---|---|
| committer | Arthur Hanson Rasmusson <arthur@vgpu.io> | 2026-10-21 12:17:47 -0400 |
| commit | 2ae643432b2d1e37e90191afa6fbac042967bfe7 (patch) | |
| tree | 63ec896f10f933f27e2a7648cce9d26933291179 | |
| parent | e77efad422961e5266ef30ef5ce9f49ae1fd76c1 (diff) | |
| download | open-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.c | 10 |
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) { |
