summaryrefslogtreecommitdiffstats
path: root/drivers/gpu
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu')
-rw-r--r--drivers/gpu/nvgpu/gv11b/gr_gv11b.c22
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h20
2 files changed, 42 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
index a703e72c..542ed1ff 100644
--- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
+++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c
@@ -285,6 +285,27 @@ static int gr_gv11b_handle_lrf_exception(struct gk20a *g, u32 gpc, u32 tpc,
285 285
286} 286}
287 287
288static void gr_gv11b_enable_hww_exceptions(struct gk20a *g)
289{
290 u32 val;
291
292 /* enable exceptions */
293 gk20a_writel(g, gr_fe_hww_esr_r(),
294 gr_fe_hww_esr_en_enable_f() |
295 gr_fe_hww_esr_reset_active_f());
296 gk20a_writel(g, gr_memfmt_hww_esr_r(),
297 gr_memfmt_hww_esr_en_enable_f() |
298 gr_memfmt_hww_esr_reset_active_f());
299 /* WAR for 200315442 */
300 val = gk20a_readl(g, gr_sked_hww_esr_en_r());
301 val = set_field(val,
302 gr_sked_hww_esr_en_skedcheck18_l1_config_too_small_m(),
303 gr_sked_hww_esr_en_skedcheck18_l1_config_too_small_disabled_f()
304 );
305 nvgpu_log_info(g, "sked_hww_esr_en = 0x%x", val);
306 gk20a_writel(g, gr_sked_hww_esr_en_r(), val);
307}
308
288static void gr_gv11b_enable_exceptions(struct gk20a *g) 309static void gr_gv11b_enable_exceptions(struct gk20a *g)
289{ 310{
290 struct gr_gk20a *gr = &g->gr; 311 struct gr_gk20a *gr = &g->gr;
@@ -2518,6 +2539,7 @@ void gv11b_init_gr(struct gpu_ops *gops)
2518 gops->gr.handle_tex_exception = gr_gv11b_handle_tex_exception; 2539 gops->gr.handle_tex_exception = gr_gv11b_handle_tex_exception;
2519 gops->gr.enable_gpc_exceptions = gr_gv11b_enable_gpc_exceptions; 2540 gops->gr.enable_gpc_exceptions = gr_gv11b_enable_gpc_exceptions;
2520 gops->gr.enable_exceptions = gr_gv11b_enable_exceptions; 2541 gops->gr.enable_exceptions = gr_gv11b_enable_exceptions;
2542 gops->gr.enable_hww_exceptions = gr_gv11b_enable_hww_exceptions;
2521 gops->gr.mask_hww_warp_esr = gv11b_mask_hww_warp_esr; 2543 gops->gr.mask_hww_warp_esr = gv11b_mask_hww_warp_esr;
2522 gops->gr.pre_process_sm_exception = 2544 gops->gr.pre_process_sm_exception =
2523 gr_gv11b_pre_process_sm_exception; 2545 gr_gv11b_pre_process_sm_exception;
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h
index 62307265..29a8b33c 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h
@@ -4634,4 +4634,24 @@ static inline u32 gr_fecs_falcon_ecc_uncorrected_err_count_unique_total_v(u32 r)
4634{ 4634{
4635 return (r >> 16) & 0xffff; 4635 return (r >> 16) & 0xffff;
4636} 4636}
4637static inline u32 gr_sked_hww_esr_en_r(void)
4638{
4639 return 0x00407024;
4640}
4641static inline u32 gr_sked_hww_esr_en_skedcheck18_l1_config_too_small_m(void)
4642{
4643 return 0x1 << 25;
4644}
4645static inline u32 gr_sked_hww_esr_en_skedcheck18_l1_config_too_small_disabled_f(void)
4646{
4647 return 0x0;
4648}
4649static inline u32 gr_sked_hww_esr_en_skedcheck18_l1_config_too_small_enabled_f(void)
4650{
4651 return 0x2000000;
4652}
4653static inline u32 gr_exception_sked_m(void)
4654{
4655 return 0x1 << 8;
4656}
4637#endif 4657#endif