diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/gr_gv11b.c | 44 |
1 files changed, 26 insertions, 18 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c index 24366911..3ae09058 100644 --- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c | |||
@@ -2835,6 +2835,8 @@ int gr_gv11b_init_fs_state(struct gk20a *g) | |||
2835 | { | 2835 | { |
2836 | u32 data; | 2836 | u32 data; |
2837 | int err; | 2837 | int err; |
2838 | u32 ver = g->params.gpu_arch + g->params.gpu_impl; | ||
2839 | u32 rev = g->params.gpu_rev; | ||
2838 | 2840 | ||
2839 | gk20a_dbg_fn(""); | 2841 | gk20a_dbg_fn(""); |
2840 | 2842 | ||
@@ -2843,38 +2845,44 @@ int gr_gv11b_init_fs_state(struct gk20a *g) | |||
2843 | gr_gpcs_tpcs_sm_texio_control_oor_addr_check_mode_arm_63_48_match_f()); | 2845 | gr_gpcs_tpcs_sm_texio_control_oor_addr_check_mode_arm_63_48_match_f()); |
2844 | gk20a_writel(g, gr_gpcs_tpcs_sm_texio_control_r(), data); | 2846 | gk20a_writel(g, gr_gpcs_tpcs_sm_texio_control_r(), data); |
2845 | 2847 | ||
2846 | /* Disable CBM alpha and beta invalidations for l2 */ | 2848 | if (ver == NVGPU_GPUID_GV11B && rev == 0xa1) { |
2847 | data = gk20a_readl(g, gr_gpcs_ppcs_cbm_debug_r()); | 2849 | |
2848 | data = set_field(data, gr_gpcs_ppcs_cbm_debug_invalidate_alpha_m(), | 2850 | /* Disable CBM alpha and beta invalidations for l2 for gv11b A01 */ |
2851 | data = gk20a_readl(g, gr_gpcs_ppcs_cbm_debug_r()); | ||
2852 | data = set_field(data, | ||
2853 | gr_gpcs_ppcs_cbm_debug_invalidate_alpha_m(), | ||
2849 | gr_gpcs_ppcs_cbm_debug_invalidate_alpha_disable_f()); | 2854 | gr_gpcs_ppcs_cbm_debug_invalidate_alpha_disable_f()); |
2850 | data = set_field(data, gr_gpcs_ppcs_cbm_debug_invalidate_beta_m(), | 2855 | data = set_field(data, |
2856 | gr_gpcs_ppcs_cbm_debug_invalidate_beta_m(), | ||
2851 | gr_gpcs_ppcs_cbm_debug_invalidate_beta_disable_f()); | 2857 | gr_gpcs_ppcs_cbm_debug_invalidate_beta_disable_f()); |
2852 | gk20a_writel(g, gr_gpcs_ppcs_cbm_debug_r(), data); | 2858 | gk20a_writel(g, gr_gpcs_ppcs_cbm_debug_r(), data); |
2859 | |||
2860 | /* Disable SCC pagepool invalidates for gv11b A01 */ | ||
2861 | data = gk20a_readl(g, gr_scc_debug_r()); | ||
2862 | data = set_field(data, | ||
2863 | gr_scc_debug_pagepool_invalidates_m(), | ||
2864 | gr_scc_debug_pagepool_invalidates_disable_f()); | ||
2865 | gk20a_writel(g, gr_scc_debug_r(), data); | ||
2866 | |||
2867 | /* Disable SWDX spill buffer invalidates for gv11b A01 */ | ||
2868 | data = gk20a_readl(g, gr_gpcs_swdx_spill_unit_r()); | ||
2869 | data = set_field(data, | ||
2870 | gr_gpcs_swdx_spill_unit_spill_buffer_cache_mgmt_mode_m(), | ||
2871 | gr_gpcs_swdx_spill_unit_spill_buffer_cache_mgmt_mode_disabled_f()); | ||
2872 | gk20a_writel(g, gr_gpcs_swdx_spill_unit_r(), data); | ||
2873 | } | ||
2853 | 2874 | ||
2854 | data = gk20a_readl(g, gr_gpcs_tpcs_sm_disp_ctrl_r()); | 2875 | data = gk20a_readl(g, gr_gpcs_tpcs_sm_disp_ctrl_r()); |
2855 | data = set_field(data, gr_gpcs_tpcs_sm_disp_ctrl_re_suppress_m(), | 2876 | data = set_field(data, gr_gpcs_tpcs_sm_disp_ctrl_re_suppress_m(), |
2856 | gr_gpcs_tpcs_sm_disp_ctrl_re_suppress_disable_f()); | 2877 | gr_gpcs_tpcs_sm_disp_ctrl_re_suppress_disable_f()); |
2857 | gk20a_writel(g, gr_gpcs_tpcs_sm_disp_ctrl_r(), data); | 2878 | gk20a_writel(g, gr_gpcs_tpcs_sm_disp_ctrl_r(), data); |
2858 | 2879 | ||
2859 | /* Disable SCC pagepool invalidates */ | ||
2860 | data = gk20a_readl(g, gr_scc_debug_r()); | ||
2861 | data = set_field(data, gr_scc_debug_pagepool_invalidates_m(), | ||
2862 | gr_scc_debug_pagepool_invalidates_disable_f()); | ||
2863 | gk20a_writel(g, gr_scc_debug_r(), data); | ||
2864 | |||
2865 | if (g->gr.fecs_feature_override_ecc_val != 0) { | 2880 | if (g->gr.fecs_feature_override_ecc_val != 0) { |
2866 | gk20a_writel(g, | 2881 | gk20a_writel(g, |
2867 | gr_fecs_feature_override_ecc_r(), | 2882 | gr_fecs_feature_override_ecc_r(), |
2868 | g->gr.fecs_feature_override_ecc_val); | 2883 | g->gr.fecs_feature_override_ecc_val); |
2869 | } | 2884 | } |
2870 | 2885 | ||
2871 | /* Disable SWDX spill buffer invalidates */ | ||
2872 | data = gk20a_readl(g, gr_gpcs_swdx_spill_unit_r()); | ||
2873 | data = set_field( | ||
2874 | data, gr_gpcs_swdx_spill_unit_spill_buffer_cache_mgmt_mode_m(), | ||
2875 | gr_gpcs_swdx_spill_unit_spill_buffer_cache_mgmt_mode_disabled_f()); | ||
2876 | gk20a_writel(g, gr_gpcs_swdx_spill_unit_r(), data); | ||
2877 | |||
2878 | err = gr_gk20a_init_fs_state(g); | 2886 | err = gr_gk20a_init_fs_state(g); |
2879 | if (err) | 2887 | if (err) |
2880 | return err; | 2888 | return err; |