summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gv100
diff options
context:
space:
mode:
authorVaibhav Kachore <vkachore@nvidia.com>2018-07-06 05:40:03 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-07-10 21:13:43 -0400
commite14fdcd8f1f4125da697433b1744b1e4e4f15b09 (patch)
treef48ff794ef77e977ccba397f5abf14f5ae7b185b /drivers/gpu/nvgpu/gv100
parent4cd59404a2d4ab1c31605d96cff848dd4e93c3b4 (diff)
gpu: nvgpu: enable HWPM Mode-E context switch
- Write new pm mode to context buffer header. Ucode use this mode to enable mode-e context switch. This is Mode-B context switch of PMs with Mode-E streamout on one context. If this mode is set, Ucode makes sure that Mode-E pipe (perfmons, routers, pma) is idle before it context switches PMs. - This allows us to collect counters in a secure way (i.e. on context basis) with stream out. Bug 2106999 Change-Id: I5a7435f09d1bf053ca428e538b0a57f3a175ac37 Signed-off-by: Vaibhav Kachore <vkachore@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1760366 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gv100')
-rw-r--r--drivers/gpu/nvgpu/gv100/gr_gv100.c6
-rw-r--r--drivers/gpu/nvgpu/gv100/gr_gv100.h1
-rw-r--r--drivers/gpu/nvgpu/gv100/hal_gv100.c2
3 files changed, 9 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gv100/gr_gv100.c b/drivers/gpu/nvgpu/gv100/gr_gv100.c
index 680bcba3..b1b1cee6 100644
--- a/drivers/gpu/nvgpu/gv100/gr_gv100.c
+++ b/drivers/gpu/nvgpu/gv100/gr_gv100.c
@@ -38,6 +38,7 @@
38#include <nvgpu/hw/gv100/hw_proj_gv100.h> 38#include <nvgpu/hw/gv100/hw_proj_gv100.h>
39#include <nvgpu/hw/gv100/hw_fuse_gv100.h> 39#include <nvgpu/hw/gv100/hw_fuse_gv100.h>
40#include <nvgpu/hw/gv100/hw_top_gv100.h> 40#include <nvgpu/hw/gv100/hw_top_gv100.h>
41#include <nvgpu/hw/gv100/hw_ctxsw_prog_gv100.h>
41 42
42 43
43/* 44/*
@@ -453,3 +454,8 @@ void gr_gv100_split_fbpa_broadcast_addr(struct gk20a *g, u32 addr,
453 } 454 }
454 } 455 }
455} 456}
457
458u32 gr_gv100_get_hw_accessor_stream_out_mode()
459{
460 return ctxsw_prog_main_image_pm_mode_stream_out_ctxsw_f();
461}
diff --git a/drivers/gpu/nvgpu/gv100/gr_gv100.h b/drivers/gpu/nvgpu/gv100/gr_gv100.h
index 821659aa..457bd701 100644
--- a/drivers/gpu/nvgpu/gv100/gr_gv100.h
+++ b/drivers/gpu/nvgpu/gv100/gr_gv100.h
@@ -47,4 +47,5 @@ void gr_gv100_split_fbpa_broadcast_addr(struct gk20a *g, u32 addr,
47 u32 num_fbpas, 47 u32 num_fbpas,
48 u32 *priv_addr_table, u32 *t); 48 u32 *priv_addr_table, u32 *t);
49void gr_gv100_init_gpc_mmu(struct gk20a *g); 49void gr_gv100_init_gpc_mmu(struct gk20a *g);
50u32 gr_gv100_get_hw_accessor_stream_out_mode(void);
50#endif 51#endif
diff --git a/drivers/gpu/nvgpu/gv100/hal_gv100.c b/drivers/gpu/nvgpu/gv100/hal_gv100.c
index 07c71a04..c84778dd 100644
--- a/drivers/gpu/nvgpu/gv100/hal_gv100.c
+++ b/drivers/gpu/nvgpu/gv100/hal_gv100.c
@@ -358,6 +358,8 @@ static const struct gpu_ops gv100_ops = {
358 .enable_exceptions = gr_gv11b_enable_exceptions, 358 .enable_exceptions = gr_gv11b_enable_exceptions,
359 .get_lrf_tex_ltc_dram_override = get_ecc_override_val, 359 .get_lrf_tex_ltc_dram_override = get_ecc_override_val,
360 .update_smpc_ctxsw_mode = gr_gk20a_update_smpc_ctxsw_mode, 360 .update_smpc_ctxsw_mode = gr_gk20a_update_smpc_ctxsw_mode,
361 .get_hw_accessor_stream_out_mode =
362 gr_gv100_get_hw_accessor_stream_out_mode,
361 .update_hwpm_ctxsw_mode = gr_gk20a_update_hwpm_ctxsw_mode, 363 .update_hwpm_ctxsw_mode = gr_gk20a_update_hwpm_ctxsw_mode,
362 .record_sm_error_state = gv11b_gr_record_sm_error_state, 364 .record_sm_error_state = gv11b_gr_record_sm_error_state,
363 .update_sm_error_state = gv11b_gr_update_sm_error_state, 365 .update_sm_error_state = gv11b_gr_update_sm_error_state,