diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-03-07 16:10:12 -0500 |
---|---|---|
committer | Terje Bergstrom <tbergstrom@nvidia.com> | 2016-03-08 13:51:30 -0500 |
commit | d2e5eaf359d4446dd731ab39bc851e7709571042 (patch) | |
tree | 8230e839f3093d47156ab8ec8352d78e03f60a73 /drivers/gpu/nvgpu | |
parent | 9670bf59484e7c914a7476547ed20796f0484453 (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')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/gr_gk20a.c | 9 |
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, |