summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
diff options
context:
space:
mode:
authorSeema Khowala <seemaj@nvidia.com>2017-06-22 13:37:09 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-07-06 15:04:41 -0400
commitbdf5207583a3c8f3bd4d844548d443f1454d26f5 (patch)
treec1baf1ae843813d26363df4f7bef08a42d18439e /drivers/gpu/nvgpu/gv11b/gr_gv11b.c
parentd250adf53e836ea982193ad8a3e08084411d81a2 (diff)
gpu: nvgpu: gv11b: init get_sm_no_lock_down_hww_global_esr_mask gr ops
Support SM register changes JIRA GPUT19X-75 Change-Id: I5d5e702d681398a8a8181d912e8c691c15e265d9 Signed-off-by: Seema Khowala <seemaj@nvidia.com> Reviewed-on: https://git-master/r/1514036 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.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
index 0fcbd0d7..a726d058 100644
--- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
@@ -3009,6 +3009,23 @@ static u32 gv11b_gr_get_sm_hww_global_esr(struct gk20a *g,
3009 return hww_global_esr; 3009 return hww_global_esr;
3010} 3010}
3011 3011
3012static u32 gv11b_gr_get_sm_no_lock_down_hww_global_esr_mask(struct gk20a *g)
3013{
3014 /*
3015 * These three interrupts don't require locking down the SM. They can
3016 * be handled by usermode clients as they aren't fatal. Additionally,
3017 * usermode clients may wish to allow some warps to execute while others
3018 * are at breakpoints, as opposed to fatal errors where all warps should
3019 * halt.
3020 */
3021 u32 global_esr_mask =
3022 gr_gpc0_tpc0_sm0_hww_global_esr_bpt_int_pending_f() |
3023 gr_gpc0_tpc0_sm0_hww_global_esr_bpt_pause_pending_f() |
3024 gr_gpc0_tpc0_sm0_hww_global_esr_single_step_complete_pending_f();
3025
3026 return global_esr_mask;
3027}
3028
3012void gv11b_init_gr(struct gpu_ops *gops) 3029void gv11b_init_gr(struct gpu_ops *gops)
3013{ 3030{
3014 gp10b_init_gr(gops); 3031 gp10b_init_gr(gops);
@@ -3084,4 +3101,6 @@ void gv11b_init_gr(struct gpu_ops *gops)
3084 gops->gr.resume_from_pause = gv11b_gr_resume_from_pause; 3101 gops->gr.resume_from_pause = gv11b_gr_resume_from_pause;
3085 gops->gr.get_sm_hww_warp_esr = gv11b_gr_get_sm_hww_warp_esr; 3102 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; 3103 gops->gr.get_sm_hww_global_esr = gv11b_gr_get_sm_hww_global_esr;
3104 gops->gr.get_sm_no_lock_down_hww_global_esr_mask =
3105 gv11b_gr_get_sm_no_lock_down_hww_global_esr_mask;
3087} 3106}