summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b/platform_gv11b_tegra.c
diff options
context:
space:
mode:
authorLakshmanan M <lm@nvidia.com>2017-05-17 02:12:24 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-05-18 12:04:51 -0400
commit5a08eafbe076fba98de62883636ee6b0751cf7e9 (patch)
tree34d9406e93c5988b2dfe4a7ee7bbc042dd3a8507 /drivers/gpu/nvgpu/gv11b/platform_gv11b_tegra.c
parentd503a234440b0b5912f64314de68689b3211bbcd (diff)
gpu: nvgpu: gv11b: Add L1 DATA + iCACHE parity
This CL covers the following parity support (uncorrected error), 1) SM's L1 DATA 2) SM's L0 && L1 icache Volta Resiliency Id - Volta-634 JIRA GPUT19X-113 JIRA GPUT19X-99 Bug 1807553 Change-Id: Iacbf492028983529dadc5753007e43510b8cb786 Signed-off-by: Lakshmanan M <lm@nvidia.com> Reviewed-on: http://git-master/r/1483681 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/platform_gv11b_tegra.c')
-rw-r--r--drivers/gpu/nvgpu/gv11b/platform_gv11b_tegra.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/platform_gv11b_tegra.c b/drivers/gpu/nvgpu/gv11b/platform_gv11b_tegra.c
index d235b261..009e5716 100644
--- a/drivers/gpu/nvgpu/gv11b/platform_gv11b_tegra.c
+++ b/drivers/gpu/nvgpu/gv11b/platform_gv11b_tegra.c
@@ -127,6 +127,10 @@ static struct device_attribute *dev_attr_sm_l1_tag_ecc_corrected_err_count_array
127static struct device_attribute *dev_attr_sm_l1_tag_ecc_uncorrected_err_count_array; 127static struct device_attribute *dev_attr_sm_l1_tag_ecc_uncorrected_err_count_array;
128static struct device_attribute *dev_attr_sm_cbu_ecc_corrected_err_count_array; 128static struct device_attribute *dev_attr_sm_cbu_ecc_corrected_err_count_array;
129static struct device_attribute *dev_attr_sm_cbu_ecc_uncorrected_err_count_array; 129static struct device_attribute *dev_attr_sm_cbu_ecc_uncorrected_err_count_array;
130static struct device_attribute *dev_attr_sm_l1_data_ecc_corrected_err_count_array;
131static struct device_attribute *dev_attr_sm_l1_data_ecc_uncorrected_err_count_array;
132static struct device_attribute *dev_attr_sm_icache_ecc_corrected_err_count_array;
133static struct device_attribute *dev_attr_sm_icache_ecc_uncorrected_err_count_array;
130 134
131void gr_gv11b_create_sysfs(struct device *dev) 135void gr_gv11b_create_sysfs(struct device *dev)
132{ 136{
@@ -165,6 +169,30 @@ void gr_gv11b_create_sysfs(struct device *dev)
165 &g->gr.t19x.ecc_stats.sm_cbu_uncorrected_err_count, 169 &g->gr.t19x.ecc_stats.sm_cbu_uncorrected_err_count,
166 dev_attr_sm_cbu_ecc_uncorrected_err_count_array); 170 dev_attr_sm_cbu_ecc_uncorrected_err_count_array);
167 171
172 error |= gr_gp10b_ecc_stat_create(dev,
173 0,
174 "sm_l1_data_ecc_corrected_err_count",
175 &g->gr.t19x.ecc_stats.sm_l1_data_corrected_err_count,
176 dev_attr_sm_l1_data_ecc_corrected_err_count_array);
177
178 error |= gr_gp10b_ecc_stat_create(dev,
179 0,
180 "sm_l1_data_ecc_uncorrected_err_count",
181 &g->gr.t19x.ecc_stats.sm_l1_data_uncorrected_err_count,
182 dev_attr_sm_l1_data_ecc_uncorrected_err_count_array);
183
184 error |= gr_gp10b_ecc_stat_create(dev,
185 0,
186 "sm_icache_ecc_corrected_err_count",
187 &g->gr.t19x.ecc_stats.sm_icache_corrected_err_count,
188 dev_attr_sm_icache_ecc_corrected_err_count_array);
189
190 error |= gr_gp10b_ecc_stat_create(dev,
191 0,
192 "sm_icache_ecc_uncorrected_err_count",
193 &g->gr.t19x.ecc_stats.sm_icache_uncorrected_err_count,
194 dev_attr_sm_icache_ecc_uncorrected_err_count_array);
195
168 if (error) 196 if (error)
169 dev_err(dev, "Failed to create gv11b sysfs attributes!\n"); 197 dev_err(dev, "Failed to create gv11b sysfs attributes!\n");
170} 198}
@@ -193,4 +221,24 @@ static void gr_gv11b_remove_sysfs(struct device *dev)
193 &g->gr.t19x.ecc_stats.sm_cbu_uncorrected_err_count, 221 &g->gr.t19x.ecc_stats.sm_cbu_uncorrected_err_count,
194 dev_attr_sm_cbu_ecc_uncorrected_err_count_array); 222 dev_attr_sm_cbu_ecc_uncorrected_err_count_array);
195 223
224 gr_gp10b_ecc_stat_remove(dev,
225 0,
226 &g->gr.t19x.ecc_stats.sm_l1_data_corrected_err_count,
227 dev_attr_sm_l1_data_ecc_corrected_err_count_array);
228
229 gr_gp10b_ecc_stat_remove(dev,
230 0,
231 &g->gr.t19x.ecc_stats.sm_l1_data_uncorrected_err_count,
232 dev_attr_sm_l1_data_ecc_uncorrected_err_count_array);
233
234 gr_gp10b_ecc_stat_remove(dev,
235 0,
236 &g->gr.t19x.ecc_stats.sm_icache_corrected_err_count,
237 dev_attr_sm_icache_ecc_corrected_err_count_array);
238
239 gr_gp10b_ecc_stat_remove(dev,
240 0,
241 &g->gr.t19x.ecc_stats.sm_icache_uncorrected_err_count,
242 dev_attr_sm_icache_ecc_uncorrected_err_count_array);
243
196} 244}