summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorseshendra Gadagottu <sgadagottu@nvidia.com>2018-03-26 21:23:52 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-04-25 04:58:19 -0400
commit0e42d34d16640fac79e7217980d9bfbd5f5b2fef (patch)
tree97400884133c8258b73f956e59204a9ed7ae75d1 /drivers
parentfc1ebe57f506c658eb771c101f256b02e3f351ce (diff)
gpu: nvgpu: gv11b: chip revision check for invalidates
Only for gv11b A01 version following invalidates are disabled: -CBM alpha and beta invalidations for L2 -SCC pagepool invalidates -SWDX spill buffer invalidates Bug 2053668 Change-Id: I027f923b63b24bbbc054a7d9a377d757994a07ad Signed-off-by: seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1700981 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/nvgpu/gv11b/gr_gv11b.c44
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;