summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp10b
diff options
context:
space:
mode:
authorThomas Fleury <tfleury@nvidia.com>2018-03-26 14:42:42 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-03-28 16:32:18 -0400
commit8a64eea483d18ce603b049d5485e9f7a742da30b (patch)
treef2902bca25b7766fb159779721ecae6dddaf2b29 /drivers/gpu/nvgpu/gp10b
parent1557ee63edabe64c32226ce3f086dffbe2610c2a (diff)
gpu: nvgpu: fix priv error register reads
Current code does not compute priv error register offsets properly. This leads to invalid decoding of priv errors, and can also trigger additional priv errors. - add GPU_LIT_GPC_PRIV_STRIDE define - return proj_gpc_priv_stride for GPU_LIT_GPC_PRIV_STRIDE in hals - use GPU_LIT_GPC_PRIV_STRIDE instead of GPU_LIT_GPC_STRIDE in g->ops.priv_ring.isr() to compute priv error register offsets. Bug 2093058 Change-Id: Ia7c36ccba0441126784bb0e00452f2cf1196ef71 Signed-off-by: Thomas Fleury <tfleury@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1682118 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: Seema Khowala <seemaj@nvidia.com> GVS: Gerrit_Virtual_Submit Tested-by: Seema Khowala <seemaj@nvidia.com> Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp10b')
-rw-r--r--drivers/gpu/nvgpu/gp10b/hal_gp10b.c4
-rw-r--r--drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c2
2 files changed, 4 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
index 825d11e5..dd413c5a 100644
--- a/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/hal_gp10b.c
@@ -181,7 +181,9 @@ int gp10b_get_litter_value(struct gk20a *g, int value)
181 case GPU_LIT_DMA_COPY_CLASS: 181 case GPU_LIT_DMA_COPY_CLASS:
182 ret = PASCAL_DMA_COPY_A; 182 ret = PASCAL_DMA_COPY_A;
183 break; 183 break;
184 184 case GPU_LIT_GPC_PRIV_STRIDE:
185 ret = proj_gpc_priv_stride_v();
186 break;
185 default: 187 default:
186 nvgpu_err(g, "Missing definition %d", value); 188 nvgpu_err(g, "Missing definition %d", value);
187 BUG(); 189 BUG();
diff --git a/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c b/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c
index e7777871..0fac76f2 100644
--- a/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/priv_ring_gp10b.c
@@ -145,7 +145,7 @@ void gp10b_priv_ring_isr(struct gk20a *g)
145 } 145 }
146 146
147 if (status1) { 147 if (status1) {
148 gpc_stride = nvgpu_get_litter_value(g, GPU_LIT_GPC_STRIDE); 148 gpc_stride = nvgpu_get_litter_value(g, GPU_LIT_GPC_PRIV_STRIDE);
149 for (gpc = 0; gpc < g->gr.gpc_count; gpc++) { 149 for (gpc = 0; gpc < g->gr.gpc_count; gpc++) {
150 offset = gpc * gpc_stride; 150 offset = gpc * gpc_stride;
151 if (status1 & BIT(gpc)) { 151 if (status1 & BIT(gpc)) {