summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/nvgpu/gk20a/channel_gk20a.c22
1 files changed, 15 insertions, 7 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
index 0a6a40a8..9796d7c6 100644
--- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c
@@ -1697,9 +1697,8 @@ static void gk20a_channel_timeout_handler(struct work_struct *work)
1697 /* Need global lock since multiple channels can timeout at a time */ 1697 /* Need global lock since multiple channels can timeout at a time */
1698 mutex_lock(&g->ch_wdt_lock); 1698 mutex_lock(&g->ch_wdt_lock);
1699 1699
1700 gk20a_debug_dump(g->dev); 1700 gk20a_err(dev_from_gk20a(g), "Possible job timeout on ch=%d",
1701 gk20a_gr_debug_dump(g->dev); 1701 ch->hw_chid);
1702
1703 1702
1704 /* Get timed out job and reset the timer */ 1703 /* Get timed out job and reset the timer */
1705 mutex_lock(&ch->timeout.lock); 1704 mutex_lock(&ch->timeout.lock);
@@ -1707,14 +1706,23 @@ static void gk20a_channel_timeout_handler(struct work_struct *work)
1707 ch->timeout.initialized = false; 1706 ch->timeout.initialized = false;
1708 mutex_unlock(&ch->timeout.lock); 1707 mutex_unlock(&ch->timeout.lock);
1709 1708
1710 if (gr_gk20a_disable_ctxsw(g)) 1709 if (gr_gk20a_disable_ctxsw(g)) {
1710 gk20a_err(dev_from_gk20a(g), "Unable to disable ctxsw!");
1711 goto fail_unlock; 1711 goto fail_unlock;
1712 }
1712 1713
1713 if (gk20a_fence_is_expired(job->post_fence)) 1714 if (gk20a_fence_is_expired(job->post_fence)) {
1715 gk20a_err(dev_from_gk20a(g),
1716 "Timed out fence is expired on c=%d!",
1717 ch->hw_chid);
1714 goto fail_enable_ctxsw; 1718 goto fail_enable_ctxsw;
1719 }
1720
1721 gk20a_err(dev_from_gk20a(g), "Confirmed: job on channel %d timed out",
1722 ch->hw_chid);
1715 1723
1716 gk20a_err(dev_from_gk20a(g), "Job on channel %d timed out\n", 1724 gk20a_debug_dump(g->dev);
1717 ch->hw_chid); 1725 gk20a_gr_debug_dump(g->dev);
1718 1726
1719 /* Get failing engine data */ 1727 /* Get failing engine data */
1720 engine_id = gk20a_fifo_get_failing_engine_data(g, &id, &is_tsg); 1728 engine_id = gk20a_fifo_get_failing_engine_data(g, &id, &is_tsg);