diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c index f0a700ac6..2421307f0 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c @@ -1700,9 +1700,14 @@ static void gk20a_channel_timeout_handler(struct work_struct *work) if (!failing_ch) goto fail_enable_ctxsw; - if (failing_ch->hw_chid != ch->hw_chid) + if (failing_ch->hw_chid != ch->hw_chid) { gk20a_channel_timeout_start(ch, job); + mutex_lock(&failing_ch->timeout.lock); + failing_ch->timeout.initialized = false; + mutex_unlock(&failing_ch->timeout.lock); + } + gk20a_fifo_recover(g, BIT(engine_id), failing_ch->hw_chid, is_tsg, true, failing_ch->timeout_debug_dump);