summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2016-03-07 16:10:12 -0500
committerTerje Bergstrom <tbergstrom@nvidia.com>2016-03-08 13:51:30 -0500
commitd2e5eaf359d4446dd731ab39bc851e7709571042 (patch)
tree8230e839f3093d47156ab8ec8352d78e03f60a73 /drivers/gpu/nvgpu/gk20a/gr_gk20a.c
parent9670bf59484e7c914a7476547ed20796f0484453 (diff)
gpu: nvgpu: Reset channel on SM exception
If we receive an exception without debugger attached, trigger a fault recovery. Change-Id: I8c02e37eb7fb0cba2fcb7afed7beb26b86f38d9e Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/1026003 (cherry picked from commit 526eef512eaed1c6472677eddec051541a939d63) Reviewed-on: http://git-master/r/1026002 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index f0e89f8a..7e37a965 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -5285,6 +5285,15 @@ int gr_gk20a_handle_sm_exception(struct gk20a *g, u32 gpc, u32 tpc,
5285 warp_esr = gk20a_readl(g, gr_gpc0_tpc0_sm_hww_warp_esr_r() + offset); 5285 warp_esr = gk20a_readl(g, gr_gpc0_tpc0_sm_hww_warp_esr_r() + offset);
5286 warp_esr = g->ops.gr.mask_hww_warp_esr(warp_esr); 5286 warp_esr = g->ops.gr.mask_hww_warp_esr(warp_esr);
5287 5287
5288 if (!sm_debugger_attached) {
5289 gk20a_err(dev_from_gk20a(g), "sm hww global %08x warp %08x\n",
5290 global_esr, warp_esr);
5291 return -EFAULT;
5292 }
5293
5294 gk20a_dbg(gpu_dbg_intr | gpu_dbg_gpu_dbg,
5295 "sm hww global %08x warp %08x", global_esr, warp_esr);
5296
5288 if (g->ops.gr.pre_process_sm_exception) { 5297 if (g->ops.gr.pre_process_sm_exception) {
5289 ret = g->ops.gr.pre_process_sm_exception(g, gpc, tpc, 5298 ret = g->ops.gr.pre_process_sm_exception(g, gpc, tpc,
5290 global_esr, warp_esr, 5299 global_esr, warp_esr,