summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/nvgpu/gv11b/gr_gv11b.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
index 0158d706..58bb08a6 100644
--- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
@@ -2444,6 +2444,28 @@ static void gv11b_gr_get_esr_sm_sel(struct gk20a *g, u32 gpc, u32 tpc,
2444 "esr_sm_sel bitmask: 0x%x", *esr_sm_sel); 2444 "esr_sm_sel bitmask: 0x%x", *esr_sm_sel);
2445} 2445}
2446 2446
2447static int gv11b_gr_sm_trigger_suspend(struct gk20a *g)
2448{
2449 u32 dbgr_control0;
2450
2451 /* assert stop trigger. uniformity assumption: all SMs will have
2452 * the same state in dbg_control0.
2453 */
2454 dbgr_control0 =
2455 gk20a_readl(g, gr_gpcs_tpcs_sms_dbgr_control0_r());
2456 dbgr_control0 |= gr_gpc0_tpc0_sm0_dbgr_control0_stop_trigger_enable_f();
2457
2458 /* broadcast write */
2459 gk20a_writel(g,
2460 gr_gpcs_tpcs_sms_dbgr_control0_r(), dbgr_control0);
2461
2462 gk20a_dbg(gpu_dbg_intr | gpu_dbg_gpu_dbg,
2463 "stop trigger enable: broadcast dbgr_control0: 0x%x ",
2464 dbgr_control0);
2465
2466 return 0;
2467}
2468
2447void gv11b_init_gr(struct gpu_ops *gops) 2469void gv11b_init_gr(struct gpu_ops *gops)
2448{ 2470{
2449 gp10b_init_gr(gops); 2471 gp10b_init_gr(gops);
@@ -2506,4 +2528,5 @@ void gv11b_init_gr(struct gpu_ops *gops)
2506 gops->gr.handle_gpc_gpcmmu_exception = 2528 gops->gr.handle_gpc_gpcmmu_exception =
2507 gr_gv11b_handle_gpc_gpcmmu_exception; 2529 gr_gv11b_handle_gpc_gpcmmu_exception;
2508 gops->gr.get_esr_sm_sel = gv11b_gr_get_esr_sm_sel; 2530 gops->gr.get_esr_sm_sel = gv11b_gr_get_esr_sm_sel;
2531 gops->gr.trigger_suspend = gv11b_gr_sm_trigger_suspend;
2509} 2532}