summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a
diff options
context:
space:
mode:
authorDeepak Goyal <dgoyal@nvidia.com>2017-11-15 01:10:54 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-12-14 12:03:45 -0500
commit49be5d49292c9c853f5b6ad53c32d59f866322ec (patch)
tree8e34c42aff1cad6ea0fe4e2d9885dcd9043ef1ab /drivers/gpu/nvgpu/gk20a
parent1bf9b91c05ceebf872171a536c2660ee69fa5f64 (diff)
gpu: nvgpu: gv11b: implement ecc scrubber
Check the availability of ecc units by checking relevant ecc fuse and fuse overrides. During gpu boot, initialize ecc units by scrubbing individual ecc units available. ECC initialization should be done before gr initialization. Following ecc units are scrubbed: SM LRF SM L1 DATA SM L1 TAG SM CBU SM ICACHE Bug 200339497 Change-Id: I54bf8cc1fce639a9993bf80984dafc28dca0dba3 Signed-off-by: Deepak Goyal <dgoyal@nvidia.com> Signed-off-by: seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1612734 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h1
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c5
2 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index 2ae1b758..f1dc2f03 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -436,6 +436,7 @@ struct gpu_ops {
436 void (*init_gfxp_wfi_timeout_count)(struct gk20a *g); 436 void (*init_gfxp_wfi_timeout_count)(struct gk20a *g);
437 unsigned long (*get_max_gfxp_wfi_timeout_count) 437 unsigned long (*get_max_gfxp_wfi_timeout_count)
438 (struct gk20a *g); 438 (struct gk20a *g);
439 void (*ecc_init_scrub_reg)(struct gk20a *g);
439 } gr; 440 } gr;
440 struct { 441 struct {
441 void (*init_hw)(struct gk20a *g); 442 void (*init_hw)(struct gk20a *g);
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index 99f85b57..ea4d1d24 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -4478,7 +4478,10 @@ static int gk20a_init_gr_setup_hw(struct gk20a *g)
4478 if (g->ops.gr.enable_gpc_exceptions) 4478 if (g->ops.gr.enable_gpc_exceptions)
4479 g->ops.gr.enable_gpc_exceptions(g); 4479 g->ops.gr.enable_gpc_exceptions(g);
4480 4480
4481 /* TBD: ECC for L1/SM */ 4481 /* enable ECC for L1/SM */
4482 if (g->ops.gr.ecc_init_scrub_reg)
4483 g->ops.gr.ecc_init_scrub_reg(g);
4484
4482 /* TBD: enable per BE exceptions */ 4485 /* TBD: enable per BE exceptions */
4483 4486
4484 /* reset and enable exceptions */ 4487 /* reset and enable exceptions */