summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp10b/gr_gp10b.c
diff options
context:
space:
mode:
authorseshendra Gadagottu <sgadagottu@nvidia.com>2018-01-02 18:48:46 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2018-01-10 11:47:03 -0500
commit0ac3ba2a99b745f577c752ebf9a6b4291730a36d (patch)
treedd111702d91dd5d14369def5fc152960f90a2daf /drivers/gpu/nvgpu/gp10b/gr_gp10b.c
parent3e9aa581b61a3ecbcf01a8988b1d12a8af8e2a45 (diff)
gpu: nvgpu: gv11b: fix for gfx preemption
Used chip specific attrib_cb_gfxp_default_size and attrib_cb_gfxp_size buffer sizes during committing global callback buffer when gfx preemption is requested. These sizes are different for gv11b from gp10b. For gp10b used smaller buffer sizes than specified value in hw manuals as per sw requirement. Also used gv11b specific preemption related functions: gr_gv11b_set_ctxsw_preemption_mode gr_gv11b_update_ctxsw_preemption_mode This is required because preemption related buffer sizes are different for gv11b from gp10b. More optimization will be done as part of NVGPU-484. Another issue fixed is: gpu va for preemption buffers still needs to be 8 bit aligned, even though 49 bits available now. This done because of legacy implementation of fecs ucode. Bug 1976694 Change-Id: I2dc923340d34d0dc5fe45419200d0cf4f53cdb23 Signed-off-by: seshendra Gadagottu <sgadagottu@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1635027 GVS: Gerrit_Virtual_Submit Reviewed-by: Richard Zhao <rizhao@nvidia.com> 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/gpu/nvgpu/gp10b/gr_gp10b.c')
-rw-r--r--drivers/gpu/nvgpu/gp10b/gr_gp10b.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/drivers/gpu/nvgpu/gp10b/gr_gp10b.c b/drivers/gpu/nvgpu/gp10b/gr_gp10b.c
index b5194223..9a7f4f97 100644
--- a/drivers/gpu/nvgpu/gp10b/gr_gp10b.c
+++ b/drivers/gpu/nvgpu/gp10b/gr_gp10b.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * GP10B GPU GR 2 * GP10B GPU GR
3 * 3 *
4 * Copyright (c) 2015-2017, NVIDIA CORPORATION. All rights reserved. 4 * Copyright (c) 2015-2018, NVIDIA CORPORATION. All rights reserved.
5 * 5 *
6 * Permission is hereby granted, free of charge, to any person obtaining a 6 * Permission is hereby granted, free of charge, to any person obtaining a
7 * copy of this software and associated documentation files (the "Software"), 7 * copy of this software and associated documentation files (the "Software"),
@@ -406,12 +406,8 @@ int gr_gp10b_commit_global_cb_manager(struct gk20a *g,
406 gk20a_dbg_fn(""); 406 gk20a_dbg_fn("");
407 407
408 if (gr_ctx->graphics_preempt_mode == NVGPU_PREEMPTION_MODE_GRAPHICS_GFXP) { 408 if (gr_ctx->graphics_preempt_mode == NVGPU_PREEMPTION_MODE_GRAPHICS_GFXP) {
409 attrib_size_in_chunk = gr->attrib_cb_default_size + 409 attrib_size_in_chunk = gr->attrib_cb_gfxp_size;
410 (gr_gpc0_ppc0_cbm_beta_cb_size_v_gfxp_v() - 410 cb_attrib_cache_size_init = gr->attrib_cb_gfxp_default_size;
411 gr_gpc0_ppc0_cbm_beta_cb_size_v_default_v());
412 cb_attrib_cache_size_init = gr->attrib_cb_default_size +
413 (gr_gpc0_ppc0_cbm_beta_cb_size_v_gfxp_v() -
414 gr_gpc0_ppc0_cbm_beta_cb_size_v_default_v());
415 } else { 411 } else {
416 attrib_size_in_chunk = gr->attrib_cb_size; 412 attrib_size_in_chunk = gr->attrib_cb_size;
417 cb_attrib_cache_size_init = gr->attrib_cb_default_size; 413 cb_attrib_cache_size_init = gr->attrib_cb_default_size;
@@ -738,6 +734,14 @@ void gr_gp10b_cb_size_default(struct gk20a *g)
738 gr->attrib_cb_default_size = 0x800; 734 gr->attrib_cb_default_size = 0x800;
739 gr->alpha_cb_default_size = 735 gr->alpha_cb_default_size =
740 gr_gpc0_ppc0_cbm_alpha_cb_size_v_default_v(); 736 gr_gpc0_ppc0_cbm_alpha_cb_size_v_default_v();
737 gr->attrib_cb_gfxp_default_size =
738 gr->attrib_cb_default_size +
739 (gr_gpc0_ppc0_cbm_beta_cb_size_v_gfxp_v() -
740 gr_gpc0_ppc0_cbm_beta_cb_size_v_default_v());
741 gr->attrib_cb_gfxp_size =
742 gr->attrib_cb_default_size +
743 (gr_gpc0_ppc0_cbm_beta_cb_size_v_gfxp_v() -
744 gr_gpc0_ppc0_cbm_beta_cb_size_v_default_v());
741} 745}
742 746
743void gr_gp10b_set_alpha_circular_buffer_size(struct gk20a *g, u32 data) 747void gr_gp10b_set_alpha_circular_buffer_size(struct gk20a *g, u32 data)