summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2017-10-25 17:17:30 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-10-26 16:26:25 -0400
commit9eebb7831facaa16b2975f50a716d2986c67b699 (patch)
tree8c0f5ba76e76c10762a04ea7fd7b681960f8ed5b /drivers/gpu/nvgpu/gk20a
parent34ce21a588ad3e6d11a8fa6bc5b9e7282dca8f61 (diff)
gpu: nvgpu: Linux specific sm_error_state_record
Create an nvgpu internal nvgpu_gr_sm_error_state to store and propagate SM error state within driver. Use nvgpu_dbg_gpu_sm_error_state_record only in Linux code. JIRA NVGPU-259 Change-Id: I7365cdf5a1a42cbcdb418dfcef3e0020e02a960f Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1585645 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.h3
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c4
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.h10
3 files changed, 12 insertions, 5 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index 13d534c4..80d85d65 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -361,8 +361,7 @@ struct gpu_ops {
361 u32 gpc, u32 tpc); 361 u32 gpc, u32 tpc);
362 int (*update_sm_error_state)(struct gk20a *g, 362 int (*update_sm_error_state)(struct gk20a *g,
363 struct channel_gk20a *ch, u32 sm_id, 363 struct channel_gk20a *ch, u32 sm_id,
364 struct nvgpu_dbg_gpu_sm_error_state_record * 364 struct nvgpu_gr_sm_error_state *sm_error_state);
365 sm_error_state);
366 int (*clear_sm_error_state)(struct gk20a *g, 365 int (*clear_sm_error_state)(struct gk20a *g,
367 struct channel_gk20a *ch, u32 sm_id); 366 struct channel_gk20a *ch, u32 sm_id);
368 int (*suspend_contexts)(struct gk20a *g, 367 int (*suspend_contexts)(struct gk20a *g,
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index 5910c7d9..2fd6f72c 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -1543,7 +1543,7 @@ restore_fe_go_idle:
1543 * we initialize gr->no_of_sm in this function 1543 * we initialize gr->no_of_sm in this function
1544 */ 1544 */
1545 gr->sm_error_states = nvgpu_kzalloc(g, 1545 gr->sm_error_states = nvgpu_kzalloc(g,
1546 sizeof(struct nvgpu_dbg_gpu_sm_error_state_record) 1546 sizeof(struct nvgpu_gr_sm_error_state)
1547 * gr->no_of_sm); 1547 * gr->no_of_sm);
1548 if (!gr->sm_error_states) { 1548 if (!gr->sm_error_states) {
1549 err = -ENOMEM; 1549 err = -ENOMEM;
@@ -4566,7 +4566,7 @@ restore_fe_go_idle:
4566 * we initialize gr->no_of_sm in this function 4566 * we initialize gr->no_of_sm in this function
4567 */ 4567 */
4568 gr->sm_error_states = nvgpu_kzalloc(g, 4568 gr->sm_error_states = nvgpu_kzalloc(g,
4569 sizeof(struct nvgpu_dbg_gpu_sm_error_state_record) * 4569 sizeof(struct nvgpu_gr_sm_error_state) *
4570 gr->no_of_sm); 4570 gr->no_of_sm);
4571 if (!gr->sm_error_states) { 4571 if (!gr->sm_error_states) {
4572 err = -ENOMEM; 4572 err = -ENOMEM;
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.h b/drivers/gpu/nvgpu/gk20a/gr_gk20a.h
index 6b422138..22fc40d1 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.h
@@ -231,6 +231,14 @@ struct nvgpu_preemption_modes_rec {
231 u32 default_compute_preempt_mode; /* default mode */ 231 u32 default_compute_preempt_mode; /* default mode */
232}; 232};
233 233
234struct nvgpu_gr_sm_error_state {
235 u32 hww_global_esr;
236 u32 hww_warp_esr;
237 u64 hww_warp_esr_pc;
238 u32 hww_global_esr_report_mask;
239 u32 hww_warp_esr_report_mask;
240};
241
234struct gr_gk20a { 242struct gr_gk20a {
235 struct gk20a *g; 243 struct gk20a *g;
236 struct { 244 struct {
@@ -387,7 +395,7 @@ struct gr_gk20a {
387 u32 *fbp_rop_l2_en_mask; 395 u32 *fbp_rop_l2_en_mask;
388 u32 no_of_sm; 396 u32 no_of_sm;
389 struct sm_info *sm_to_cluster; 397 struct sm_info *sm_to_cluster;
390 struct nvgpu_dbg_gpu_sm_error_state_record *sm_error_states; 398 struct nvgpu_gr_sm_error_state *sm_error_states;
391#if defined(CONFIG_GK20A_CYCLE_STATS) 399#if defined(CONFIG_GK20A_CYCLE_STATS)
392 struct nvgpu_mutex cs_lock; 400 struct nvgpu_mutex cs_lock;
393 struct gk20a_cs_snapshot *cs_data; 401 struct gk20a_cs_snapshot *cs_data;