summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2016-02-02 05:27:33 -0500
committerTerje Bergstrom <tbergstrom@nvidia.com>2016-02-05 15:45:50 -0500
commit7d7033d831893f6ba6975707f7d076ad15dfdf2c (patch)
tree69bcfc89f39d3873ee112131f49e1dd9f1ed572d /drivers/gpu/nvgpu/gk20a/gr_gk20a.c
parent7b42acda56eb1fccb621f3a6cfd567d62679bdd4 (diff)
gpu: nvgpu: return error for handled intr only
In gk20a_gr_handle_fecs_error(), we always return error value and that triggers recovery in each case Return error only if we need to trigger recovery (depending on case) Otherwise, clear the interrupt and return success Bug 200156699 Change-Id: I117f3702b751e8bbc1cd3834b1b72b6533e246f9 Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1001694 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gr_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index a96bc4e1..4d3f5068 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -4885,6 +4885,7 @@ int gk20a_gr_handle_fecs_error(struct gk20a *g, struct channel_gk20a *ch,
4885 struct gr_gk20a_isr_data *isr_data) 4885 struct gr_gk20a_isr_data *isr_data)
4886{ 4886{
4887 u32 gr_fecs_intr = gk20a_readl(g, gr_fecs_host_int_status_r()); 4887 u32 gr_fecs_intr = gk20a_readl(g, gr_fecs_host_int_status_r());
4888 int ret = 0;
4888 4889
4889 gk20a_dbg_fn(""); 4890 gk20a_dbg_fn("");
4890 4891
@@ -4897,10 +4898,11 @@ int gk20a_gr_handle_fecs_error(struct gk20a *g, struct channel_gk20a *ch,
4897 "firmware method error 0x%08x for offset 0x%04x", 4898 "firmware method error 0x%08x for offset 0x%04x",
4898 gk20a_readl(g, gr_fecs_ctxsw_mailbox_r(6)), 4899 gk20a_readl(g, gr_fecs_ctxsw_mailbox_r(6)),
4899 isr_data->data_lo); 4900 isr_data->data_lo);
4901 ret = -1;
4900 } 4902 }
4901 4903
4902 gk20a_writel(g, gr_fecs_host_int_clear_r(), gr_fecs_intr); 4904 gk20a_writel(g, gr_fecs_host_int_clear_r(), gr_fecs_intr);
4903 return -EINVAL; 4905 return ret;
4904} 4906}
4905 4907
4906static int gk20a_gr_handle_class_error(struct gk20a *g, 4908static int gk20a_gr_handle_class_error(struct gk20a *g,