summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/include
diff options
context:
space:
mode:
authorVaibhav Kachore <vkachore@nvidia.com>2018-09-11 05:47:07 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2018-09-26 02:04:16 -0400
commit2ab564937e5e4607e1734690101d07b66e5981d2 (patch)
tree03b51736c8d6754b62e7bf23cac83068e1b31956 /drivers/gpu/nvgpu/include
parent3f83528d769169fdaf25912f425226eaa07427f0 (diff)
gpu: nvgpu: enable HWPM Mode-E context switch
- This patch enables HWPM Mode-E context switch for gv11b. - 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. - For Mode-E ctxsw it is required that engine_sel is set to 0xFFFFFFFF. - Default 0 is a valid signal and causes problems. Bug 2106999 Change-Id: Idc6380116a71ffd7ae348ceec68cb395b2eca5f6 Signed-off-by: Vaibhav Kachore <vkachore@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1818070 Reviewed-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-by: svc-misra-checker <svc-misra-checker@nvidia.com> Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Vijayakumar Subbu <vsubbu@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/include')
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_ctxsw_prog_gv11b.h6
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_perf_gv11b.h28
2 files changed, 33 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_ctxsw_prog_gv11b.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_ctxsw_prog_gv11b.h
index 623a8c15..aa8e6190 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_ctxsw_prog_gv11b.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_ctxsw_prog_gv11b.h
@@ -1,5 +1,5 @@
1/* 1/*
2 * Copyright (c) 2016-2017, NVIDIA CORPORATION. All rights reserved. 2 * Copyright (c) 2016-2018, NVIDIA CORPORATION. All rights reserved.
3 * 3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a 4 * Permission is hereby granted, free of charge, to any person obtaining a
5 * copy of this software and associated documentation files (the "Software"), 5 * copy of this software and associated documentation files (the "Software"),
@@ -144,6 +144,10 @@ static inline u32 ctxsw_prog_main_image_pm_mode_no_ctxsw_f(void)
144{ 144{
145 return 0x0U; 145 return 0x0U;
146} 146}
147static inline u32 ctxsw_prog_main_image_pm_mode_stream_out_ctxsw_f(void)
148{
149 return 0x2U;
150}
147static inline u32 ctxsw_prog_main_image_pm_smpc_mode_m(void) 151static inline u32 ctxsw_prog_main_image_pm_smpc_mode_m(void)
148{ 152{
149 return 0x7U << 3U; 153 return 0x7U << 3U;
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_perf_gv11b.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_perf_gv11b.h
index 1d4b2c16..a3341df7 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_perf_gv11b.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_perf_gv11b.h
@@ -60,6 +60,10 @@ static inline u32 perf_pmmgpc_perdomain_offset_v(void)
60{ 60{
61 return 0x00000200U; 61 return 0x00000200U;
62} 62}
63static inline u32 perf_pmmsys_perdomain_offset_v(void)
64{
65 return 0x00000200U;
66}
63static inline u32 perf_pmmgpc_base_v(void) 67static inline u32 perf_pmmgpc_base_v(void)
64{ 68{
65 return 0x00180000U; 69 return 0x00180000U;
@@ -232,4 +236,28 @@ static inline u32 perf_pmasys_enginestatus_rbufempty_empty_f(void)
232{ 236{
233 return 0x10U; 237 return 0x10U;
234} 238}
239static inline u32 perf_pmmsys_engine_sel_r(u32 i)
240{
241 return 0x0024006cU + i*512U;
242}
243static inline u32 perf_pmmsys_engine_sel__size_1_v(void)
244{
245 return 0x00000020U;
246}
247static inline u32 perf_pmmfbp_engine_sel_r(u32 i)
248{
249 return 0x0020006cU + i*512U;
250}
251static inline u32 perf_pmmfbp_engine_sel__size_1_v(void)
252{
253 return 0x00000020U;
254}
255static inline u32 perf_pmmgpc_engine_sel_r(u32 i)
256{
257 return 0x0018006cU + i*512U;
258}
259static inline u32 perf_pmmgpc_engine_sel__size_1_v(void)
260{
261 return 0x00000020U;
262}
235#endif 263#endif