summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Zhao <rizhao@nvidia.com>2018-05-21 13:37:52 -0400
committerTejal Kudav <tkudav@nvidia.com>2018-06-14 09:44:07 -0400
commitc8c686f8554352fc209fda592ec3b490811532aa (patch)
treeaf0b2905f7398532a96e9873fe87352021b4deff
parent2ca8332eb7fd3a701dec04ecb6abf3587ca834e5 (diff)
gpu: nvgpu: add fbpa ecc support
- add fbpa ecc counters - add HALs for init_fbpa and fbpa_isr Jira NVGPUT-69 Jira NVGPUT-68 Change-Id: I3c8fbb664a9b08ece23d860d84881d4860706f77 Signed-off-by: Richard Zhao <rizhao@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1726307 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/gk20a/ecc_gk20a.h5
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.c8
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h2
-rw-r--r--drivers/gpu/nvgpu/gp10b/mc_gp10b.c2
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/hw/gp10b/hw_mc_gp10b.h6
5 files changed, 22 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/ecc_gk20a.h b/drivers/gpu/nvgpu/gk20a/ecc_gk20a.h
index fba8ba7d..af10f828 100644
--- a/drivers/gpu/nvgpu/gk20a/ecc_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/ecc_gk20a.h
@@ -91,6 +91,11 @@ struct ecc_gk20a {
91 struct gk20a_ecc_stat pmu_uncorrected_err_count; 91 struct gk20a_ecc_stat pmu_uncorrected_err_count;
92 } pmu; 92 } pmu;
93 93
94 struct {
95 struct gk20a_ecc_stat fbpa_sec_err_count;
96 struct gk20a_ecc_stat fbpa_ded_err_count;
97 } fbpa;
98
94}; 99};
95 100
96#endif /*__ECC_GK20A_H__*/ 101#endif /*__ECC_GK20A_H__*/
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.c b/drivers/gpu/nvgpu/gk20a/gk20a.c
index b502ef02..9c030f71 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.c
@@ -198,6 +198,14 @@ int gk20a_finalize_poweron(struct gk20a *g)
198 } 198 }
199 } 199 }
200 200
201 if (g->ops.fb.init_fbpa) {
202 err = g->ops.fb.init_fbpa(g);
203 if (err) {
204 nvgpu_err(g, "failed to init fbpa");
205 goto done;
206 }
207 }
208
201 if (g->ops.fb.mem_unlock) { 209 if (g->ops.fb.mem_unlock) {
202 err = g->ops.fb.mem_unlock(g); 210 err = g->ops.fb.mem_unlock(g);
203 if (err) { 211 if (err) {
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index 5440238f..74bb64b3 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -520,6 +520,8 @@ struct gpu_ops {
520 unsigned int intr_type); 520 unsigned int intr_type);
521 void (*disable_hub_intr)(struct gk20a *g, unsigned int index, 521 void (*disable_hub_intr)(struct gk20a *g, unsigned int index,
522 unsigned int intr_type); 522 unsigned int intr_type);
523 int (*init_fbpa)(struct gk20a *g);
524 void (*fbpa_isr)(struct gk20a *g);
523 } fb; 525 } fb;
524 struct { 526 struct {
525 void (*slcg_bus_load_gating_prod)(struct gk20a *g, bool prod); 527 void (*slcg_bus_load_gating_prod)(struct gk20a *g, bool prod);
diff --git a/drivers/gpu/nvgpu/gp10b/mc_gp10b.c b/drivers/gpu/nvgpu/gp10b/mc_gp10b.c
index 6fe4da15..8f4695ff 100644
--- a/drivers/gpu/nvgpu/gp10b/mc_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/mc_gp10b.c
@@ -131,6 +131,8 @@ void mc_gp10b_isr_stall(struct gk20a *g)
131 g->ops.mc.is_intr_nvlink_pending(g, mc_intr_0)) { 131 g->ops.mc.is_intr_nvlink_pending(g, mc_intr_0)) {
132 g->ops.nvlink.isr(g); 132 g->ops.nvlink.isr(g);
133 } 133 }
134 if (mc_intr_0 & mc_intr_pfb_pending_f() && g->ops.fb.fbpa_isr)
135 g->ops.fb.fbpa_isr(g);
134 136
135 nvgpu_log(g, gpu_dbg_intr, "stall intr done 0x%08x\n", mc_intr_0); 137 nvgpu_log(g, gpu_dbg_intr, "stall intr done 0x%08x\n", mc_intr_0);
136 138
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gp10b/hw_mc_gp10b.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gp10b/hw_mc_gp10b.h
index dbf0ce35..39c132ae 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/hw/gp10b/hw_mc_gp10b.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gp10b/hw_mc_gp10b.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2014-2017, NVIDIA CORPORATION. All rights reserved. 2 * Copyright (c) 2014-2018, NVIDIA CORPORATION. All rights reserved.
3 * 3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a 4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"), 5 * copy of this software and associated documentation files (the "Software"),
@@ -88,6 +88,10 @@ static inline u32 mc_intr_replayable_fault_pending_f(void)
88{ 88{
89 return 0x200U; 89 return 0x200U;
90} 90}
91static inline u32 mc_intr_pfb_pending_f(void)
92{
93 return 0x2000U;
94}
91static inline u32 mc_intr_pgraph_pending_f(void) 95static inline u32 mc_intr_pgraph_pending_f(void)
92{ 96{
93 return 0x1000U; 97 return 0x1000U;