summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShashank Singh <shashsingh@nvidia.com>2018-02-21 01:44:07 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2018-03-13 17:09:33 -0400
commit23a855b8527e07c047a7c4d3671f39142d9ea432 (patch)
tree85c07850ac269400b3af8c6479b7054d159e15c1
parent663e941eb6382f60e3f468d645e256cb33c4e055 (diff)
gpu: nvgpu: add fault_ch to record_sm_error_state
fault_ch is needed by rm-server to send the notification to guest VM. rm-server is going to use gr sources from linux Jira VQRM-2982 Change-Id: Ifb6e8a9630a471d07b89ffaa7f2ceb309220fd21 Signed-off-by: Shashank Singh <shashsingh@nvidia.com> Signed-off-by: Richard Zhao <rizhao@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1661665 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a.h4
-rw-r--r--drivers/gpu/nvgpu/gk20a/gr_gk20a.c2
-rw-r--r--drivers/gpu/nvgpu/gm20b/gr_gm20b.c3
-rw-r--r--drivers/gpu/nvgpu/gm20b/gr_gm20b.h3
-rw-r--r--drivers/gpu/nvgpu/gv11b/gr_gv11b.c3
-rw-r--r--drivers/gpu/nvgpu/gv11b/gr_gv11b.h3
6 files changed, 11 insertions, 7 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a.h b/drivers/gpu/nvgpu/gk20a/gk20a.h
index ea55c664..9a0cfd02 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a.h
@@ -365,8 +365,8 @@ struct gpu_ops {
365 void (*enable_exceptions)(struct gk20a *g); 365 void (*enable_exceptions)(struct gk20a *g);
366 void (*create_gr_sysfs)(struct gk20a *g); 366 void (*create_gr_sysfs)(struct gk20a *g);
367 u32 (*get_lrf_tex_ltc_dram_override)(struct gk20a *g); 367 u32 (*get_lrf_tex_ltc_dram_override)(struct gk20a *g);
368 int (*record_sm_error_state)(struct gk20a *g, 368 int (*record_sm_error_state)(struct gk20a *g, u32 gpc,
369 u32 gpc, u32 tpc); 369 u32 tpc, struct channel_gk20a *fault_ch);
370 int (*update_sm_error_state)(struct gk20a *g, 370 int (*update_sm_error_state)(struct gk20a *g,
371 struct channel_gk20a *ch, u32 sm_id, 371 struct channel_gk20a *ch, u32 sm_id,
372 struct nvgpu_gr_sm_error_state *sm_error_state); 372 struct nvgpu_gr_sm_error_state *sm_error_state);
diff --git a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
index 8a3f98af..a02c0e5d 100644
--- a/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/gr_gk20a.c
@@ -5605,7 +5605,7 @@ int gr_gk20a_handle_sm_exception(struct gk20a *g, u32 gpc, u32 tpc, u32 sm,
5605 "sm hww global 0x%08x warp 0x%08x", global_esr, warp_esr); 5605 "sm hww global 0x%08x warp 0x%08x", global_esr, warp_esr);
5606 5606
5607 gr_gk20a_elpg_protected_call(g, 5607 gr_gk20a_elpg_protected_call(g,
5608 g->ops.gr.record_sm_error_state(g, gpc, tpc)); 5608 g->ops.gr.record_sm_error_state(g, gpc, tpc, fault_ch));
5609 5609
5610 if (g->ops.gr.pre_process_sm_exception) { 5610 if (g->ops.gr.pre_process_sm_exception) {
5611 ret = g->ops.gr.pre_process_sm_exception(g, gpc, tpc, sm, 5611 ret = g->ops.gr.pre_process_sm_exception(g, gpc, tpc, sm,
diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
index 66bb471a..08ac20e4 100644
--- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
+++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
@@ -1271,7 +1271,8 @@ void gr_gm20b_get_access_map(struct gk20a *g,
1271 *num_entries = ARRAY_SIZE(wl_addr_gm20b); 1271 *num_entries = ARRAY_SIZE(wl_addr_gm20b);
1272} 1272}
1273 1273
1274int gm20b_gr_record_sm_error_state(struct gk20a *g, u32 gpc, u32 tpc) 1274int gm20b_gr_record_sm_error_state(struct gk20a *g, u32 gpc, u32 tpc,
1275 struct channel_gk20a *fault_ch)
1275{ 1276{
1276 int sm_id; 1277 int sm_id;
1277 struct gr_gk20a *gr = &g->gr; 1278 struct gr_gk20a *gr = &g->gr;
diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.h b/drivers/gpu/nvgpu/gm20b/gr_gm20b.h
index bddf6412..3f604028 100644
--- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.h
+++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.h
@@ -116,7 +116,8 @@ void gr_gm20b_enable_cde_in_fecs(struct gk20a *g, struct nvgpu_mem *mem);
116void gr_gm20b_bpt_reg_info(struct gk20a *g, struct nvgpu_warpstate *w_state); 116void gr_gm20b_bpt_reg_info(struct gk20a *g, struct nvgpu_warpstate *w_state);
117void gr_gm20b_get_access_map(struct gk20a *g, 117void gr_gm20b_get_access_map(struct gk20a *g,
118 u32 **whitelist, int *num_entries); 118 u32 **whitelist, int *num_entries);
119int gm20b_gr_record_sm_error_state(struct gk20a *g, u32 gpc, u32 tpc); 119int gm20b_gr_record_sm_error_state(struct gk20a *g, u32 gpc,
120 u32 tpc, struct channel_gk20a *fault_ch);
120int gm20b_gr_update_sm_error_state(struct gk20a *g, 121int gm20b_gr_update_sm_error_state(struct gk20a *g,
121 struct channel_gk20a *ch, u32 sm_id, 122 struct channel_gk20a *ch, u32 sm_id,
122 struct nvgpu_gr_sm_error_state *sm_error_state); 123 struct nvgpu_gr_sm_error_state *sm_error_state);
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
index e697b491..4f517fa7 100644
--- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
@@ -3101,7 +3101,8 @@ int gv11b_gr_set_sm_debug_mode(struct gk20a *g,
3101 return err; 3101 return err;
3102} 3102}
3103 3103
3104int gv11b_gr_record_sm_error_state(struct gk20a *g, u32 gpc, u32 tpc) 3104int gv11b_gr_record_sm_error_state(struct gk20a *g, u32 gpc, u32 tpc,
3105 struct channel_gk20a *fault_ch)
3105{ 3106{
3106 int sm_id; 3107 int sm_id;
3107 struct gr_gk20a *gr = &g->gr; 3108 struct gr_gk20a *gr = &g->gr;
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.h b/drivers/gpu/nvgpu/gv11b/gr_gv11b.h
index 4615ff55..018938f6 100644
--- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.h
+++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.h
@@ -166,7 +166,8 @@ int gv11b_gr_update_sm_error_state(struct gk20a *g,
166 struct nvgpu_gr_sm_error_state *sm_error_state); 166 struct nvgpu_gr_sm_error_state *sm_error_state);
167int gv11b_gr_set_sm_debug_mode(struct gk20a *g, 167int gv11b_gr_set_sm_debug_mode(struct gk20a *g,
168 struct channel_gk20a *ch, u64 sms, bool enable); 168 struct channel_gk20a *ch, u64 sms, bool enable);
169int gv11b_gr_record_sm_error_state(struct gk20a *g, u32 gpc, u32 tpc); 169int gv11b_gr_record_sm_error_state(struct gk20a *g, u32 gpc, u32 tpc,
170 struct channel_gk20a *fault_ch);
170void gv11b_gr_set_hww_esr_report_mask(struct gk20a *g); 171void gv11b_gr_set_hww_esr_report_mask(struct gk20a *g);
171bool gv11b_gr_sm_debugger_attached(struct gk20a *g); 172bool gv11b_gr_sm_debugger_attached(struct gk20a *g);
172void gv11b_gr_suspend_single_sm(struct gk20a *g, 173void gv11b_gr_suspend_single_sm(struct gk20a *g,