summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
diff options
context:
space:
mode:
authorSeema Khowala <seemaj@nvidia.com>2017-06-21 23:47:25 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-07-06 15:04:41 -0400
commitd250adf53e836ea982193ad8a3e08084411d81a2 (patch)
treea2e3cf10c61ec36f9a86feb08398acb06bd6de7b /drivers/gpu/nvgpu/gv11b/gr_gv11b.c
parentc9b92595b2ac50dbfc2f6e2f9998d469b5ab4fbe (diff)
gpu: nvgpu: gv11b: init gr ops get_sm_hww_global_esr
Required for multiple SM support and sm register address changes JIRA GPUT19X-75 Change-Id: I3fb62a935636f3df050ed125ebe57d8469069591 Signed-off-by: Seema Khowala <seemaj@nvidia.com> Reviewed-on: https://git-master/r/1514035 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/gr_gv11b.c')
-rw-r--r--drivers/gpu/nvgpu/gv11b/gr_gv11b.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
index 2b083203..0fcbd0d7 100644
--- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
@@ -1786,7 +1786,8 @@ static int gr_gv11b_pre_process_sm_exception(struct gk20a *g,
1786 } 1786 }
1787 1787
1788 /* reset the HWW errors after locking down */ 1788 /* reset the HWW errors after locking down */
1789 global_esr_copy = gk20a_readl(g, gr_gpc0_tpc0_sm0_hww_global_esr_r() + offset); 1789 global_esr_copy = g->ops.gr.get_sm_hww_global_esr(g,
1790 gpc, tpc, sm);
1790 gk20a_gr_clear_sm_hww(g, gpc, tpc, global_esr_copy); 1791 gk20a_gr_clear_sm_hww(g, gpc, tpc, global_esr_copy);
1791 gk20a_dbg(gpu_dbg_fn | gpu_dbg_gpu_dbg, 1792 gk20a_dbg(gpu_dbg_fn | gpu_dbg_gpu_dbg,
1792 "CILP: HWWs cleared for " 1793 "CILP: HWWs cleared for "
@@ -2995,6 +2996,19 @@ static u32 gv11b_gr_get_sm_hww_warp_esr(struct gk20a *g,
2995 return hww_warp_esr; 2996 return hww_warp_esr;
2996} 2997}
2997 2998
2999static u32 gv11b_gr_get_sm_hww_global_esr(struct gk20a *g,
3000 u32 gpc, u32 tpc, u32 sm)
3001{
3002 u32 offset = gk20a_gr_gpc_offset(g, gpc) +
3003 gk20a_gr_tpc_offset(g, tpc) +
3004 gv11b_gr_sm_offset(g, sm);
3005
3006 u32 hww_global_esr = gk20a_readl(g,
3007 gr_gpc0_tpc0_sm0_hww_global_esr_r() + offset);
3008
3009 return hww_global_esr;
3010}
3011
2998void gv11b_init_gr(struct gpu_ops *gops) 3012void gv11b_init_gr(struct gpu_ops *gops)
2999{ 3013{
3000 gp10b_init_gr(gops); 3014 gp10b_init_gr(gops);
@@ -3069,4 +3083,5 @@ void gv11b_init_gr(struct gpu_ops *gops)
3069 gops->gr.resume_all_sms = gv11b_gr_resume_all_sms; 3083 gops->gr.resume_all_sms = gv11b_gr_resume_all_sms;
3070 gops->gr.resume_from_pause = gv11b_gr_resume_from_pause; 3084 gops->gr.resume_from_pause = gv11b_gr_resume_from_pause;
3071 gops->gr.get_sm_hww_warp_esr = gv11b_gr_get_sm_hww_warp_esr; 3085 gops->gr.get_sm_hww_warp_esr = gv11b_gr_get_sm_hww_warp_esr;
3086 gops->gr.get_sm_hww_global_esr = gv11b_gr_get_sm_hww_global_esr;
3072} 3087}