summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b/gr_gm20b.c')
-rw-r--r--drivers/gpu/nvgpu/gm20b/gr_gm20b.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
index 333f0340..90046232 100644
--- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
+++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c
@@ -1530,6 +1530,18 @@ static void gr_gm20b_split_ltc_broadcast_addr(struct gk20a *g, u32 addr,
1530 priv_addr_table, priv_addr_table_index); 1530 priv_addr_table, priv_addr_table_index);
1531} 1531}
1532 1532
1533static void gm20b_gr_clear_sm_hww(struct gk20a *g, u32 gpc, u32 tpc, u32 sm,
1534 u32 global_esr)
1535{
1536 u32 offset = gk20a_gr_gpc_offset(g, gpc) + gk20a_gr_tpc_offset(g, tpc);
1537
1538 gk20a_writel(g, gr_gpc0_tpc0_sm_hww_global_esr_r() + offset,
1539 global_esr);
1540
1541 /* clear the warp hww */
1542 gk20a_writel(g, gr_gpc0_tpc0_sm_hww_warp_esr_r() + offset, 0);
1543}
1544
1533void gm20b_init_gr(struct gpu_ops *gops) 1545void gm20b_init_gr(struct gpu_ops *gops)
1534{ 1546{
1535 gops->gr.init_gpc_mmu = gr_gm20b_init_gpc_mmu; 1547 gops->gr.init_gpc_mmu = gr_gm20b_init_gpc_mmu;
@@ -1640,4 +1652,5 @@ void gm20b_init_gr(struct gpu_ops *gops)
1640 gk20a_gr_get_sm_no_lock_down_hww_global_esr_mask; 1652 gk20a_gr_get_sm_no_lock_down_hww_global_esr_mask;
1641 gops->gr.lock_down_sm = gk20a_gr_lock_down_sm; 1653 gops->gr.lock_down_sm = gk20a_gr_lock_down_sm;
1642 gops->gr.wait_for_sm_lock_down = gk20a_gr_wait_for_sm_lock_down; 1654 gops->gr.wait_for_sm_lock_down = gk20a_gr_wait_for_sm_lock_down;
1655 gops->gr.clear_sm_hww = gm20b_gr_clear_sm_hww;
1643} 1656}