diff options
author | Vaibhav Kachore <vkachore@nvidia.com> | 2018-09-11 05:47:07 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-09-26 02:04:16 -0400 |
commit | 2ab564937e5e4607e1734690101d07b66e5981d2 (patch) | |
tree | 03b51736c8d6754b62e7bf23cac83068e1b31956 /drivers/gpu/nvgpu/include | |
parent | 3f83528d769169fdaf25912f425226eaa07427f0 (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.h | 6 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_perf_gv11b.h | 28 |
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 | } |
147 | static inline u32 ctxsw_prog_main_image_pm_mode_stream_out_ctxsw_f(void) | ||
148 | { | ||
149 | return 0x2U; | ||
150 | } | ||
147 | static inline u32 ctxsw_prog_main_image_pm_smpc_mode_m(void) | 151 | static 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 | } |
63 | static inline u32 perf_pmmsys_perdomain_offset_v(void) | ||
64 | { | ||
65 | return 0x00000200U; | ||
66 | } | ||
63 | static inline u32 perf_pmmgpc_base_v(void) | 67 | static 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 | } |
239 | static inline u32 perf_pmmsys_engine_sel_r(u32 i) | ||
240 | { | ||
241 | return 0x0024006cU + i*512U; | ||
242 | } | ||
243 | static inline u32 perf_pmmsys_engine_sel__size_1_v(void) | ||
244 | { | ||
245 | return 0x00000020U; | ||
246 | } | ||
247 | static inline u32 perf_pmmfbp_engine_sel_r(u32 i) | ||
248 | { | ||
249 | return 0x0020006cU + i*512U; | ||
250 | } | ||
251 | static inline u32 perf_pmmfbp_engine_sel__size_1_v(void) | ||
252 | { | ||
253 | return 0x00000020U; | ||
254 | } | ||
255 | static inline u32 perf_pmmgpc_engine_sel_r(u32 i) | ||
256 | { | ||
257 | return 0x0018006cU + i*512U; | ||
258 | } | ||
259 | static inline u32 perf_pmmgpc_engine_sel__size_1_v(void) | ||
260 | { | ||
261 | return 0x00000020U; | ||
262 | } | ||
235 | #endif | 263 | #endif |