summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c
diff options
context:
space:
mode:
authorSeema Khowala <seemaj@nvidia.com>2018-03-27 14:52:27 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-03-29 16:53:59 -0400
commitaa7ee8dac0cb29ee3244c7eef77eac8e7fc34dba (patch)
tree01dcb1f09ba1bd3f52a95b6a28a4a37823a334fc /drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c
parentf81d83690f9d08be0daf8a488331fb04d9d23c46 (diff)
gpu: nvgpu: enhance pbus error reporting
-Dump timeout save0 and save1 even if they could be unreliable when fecs_tgt in set in save0 . This is good to have for debug purposes. -Add priv_ring hal for decode_error_code -Decode fecs error code for supported error types Bug 1998067 Change-Id: I60cb6902d099df4a7df45fa624e44d9e0d46360f Signed-off-by: Seema Khowala <seemaj@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1683014 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c')
-rw-r--r--drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c b/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c
index 0fac76f2..12cd2a84 100644
--- a/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c
@@ -64,7 +64,7 @@ static const char *const error_type_badf5xyy[] = {
64 "pri route error" 64 "pri route error"
65}; 65};
66 66
67static void gp10b_priv_ring_decode_error_code(struct gk20a *g, 67void gp10b_priv_ring_decode_error_code(struct gk20a *g,
68 u32 error_code) 68 u32 error_code)
69{ 69{
70 u32 error_type, error_type_index; 70 u32 error_type, error_type_index;
@@ -141,7 +141,8 @@ void gp10b_priv_ring_isr(struct gk20a *g)
141 pri_ringstation_sys_priv_error_info_subid_v(error_info), 141 pri_ringstation_sys_priv_error_info_subid_v(error_info),
142 pri_ringstation_sys_priv_error_info_priv_level_v(error_info), 142 pri_ringstation_sys_priv_error_info_priv_level_v(error_info),
143 error_code); 143 error_code);
144 gp10b_priv_ring_decode_error_code(g, error_code); 144 if (g->ops.priv_ring.decode_error_code)
145 g->ops.priv_ring.decode_error_code(g, error_code);
145 } 146 }
146 147
147 if (status1) { 148 if (status1) {
@@ -166,7 +167,9 @@ void gp10b_priv_ring_isr(struct gk20a *g)
166 pri_ringstation_gpc_gpc0_priv_error_info_priv_level_v(error_info), 167 pri_ringstation_gpc_gpc0_priv_error_info_priv_level_v(error_info),
167 error_code); 168 error_code);
168 169
169 gp10b_priv_ring_decode_error_code(g, error_code); 170 if (g->ops.priv_ring.decode_error_code)
171 g->ops.priv_ring.decode_error_code(g,
172 error_code);
170 173
171 status1 = status1 & (~(BIT(gpc))); 174 status1 = status1 & (~(BIT(gpc)));
172 if (!status1) 175 if (!status1)