summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_pwr_gv11b.h
diff options
context:
space:
mode:
authorPeng Liu <pengliu@nvidia.com>2018-10-30 16:45:43 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2019-04-01 18:27:17 -0400
commit3a11883f7f4399ae8dffbea00c1842e3c2095937 (patch)
tree82d36197046e73c13432250ec4ebce0da21791d5 /drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_pwr_gv11b.h
parentf1be222687a853b0218a5700a213f3d34d8ccc4f (diff)
gpu: nvgpu: using pmu counters for load estimate
PMU counters #0 and #4 are used to count total cycles and busy cycles. These counts are used by podgov to estimate GPU load. PMU idle intr status register is used to monitor overflow. Overflow rarely occurs because frequency governor reads and resets the counters at a high cadence. When overflow occurs, 100% work load is reported to frequency governor. Bug 1963732 Change-Id: I046480ebde162e6eda24577932b96cfd91b77c69 Signed-off-by: Peng Liu <pengliu@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1939547 (cherry picked from commit 34df0035194e0203f68f679acdd84e5533a48149) Reviewed-on: https://git-master.nvidia.com/r/1979495 Reviewed-by: Aaron Tian <atian@nvidia.com> Tested-by: Aaron Tian <atian@nvidia.com> Reviewed-by: Rajkumar Kasirajan <rkasirajan@nvidia.com> Tested-by: Rajkumar Kasirajan <rkasirajan@nvidia.com> Reviewed-by: Bibek Basu <bbasu@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_pwr_gv11b.h')
-rw-r--r--drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_pwr_gv11b.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_pwr_gv11b.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_pwr_gv11b.h
index c16d44f1..295c6e95 100644
--- a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_pwr_gv11b.h
+++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_pwr_gv11b.h
@@ -880,6 +880,54 @@ static inline u32 pwr_pmu_idle_ctrl_filter_disabled_f(void)
880{ 880{
881 return 0x0U; 881 return 0x0U;
882} 882}
883static inline u32 pwr_pmu_idle_threshold_r(u32 i)
884{
885 return 0x0010a8a0U + i*4U;
886}
887static inline u32 pwr_pmu_idle_threshold_value_f(u32 v)
888{
889 return (v & 0x7fffffffU) << 0U;
890}
891static inline u32 pwr_pmu_idle_intr_r(void)
892{
893 return 0x0010a9e8U;
894}
895static inline u32 pwr_pmu_idle_intr_en_f(u32 v)
896{
897 return (v & 0x1U) << 0U;
898}
899static inline u32 pwr_pmu_idle_intr_en_disabled_v(void)
900{
901 return 0x00000000U;
902}
903static inline u32 pwr_pmu_idle_intr_en_enabled_v(void)
904{
905 return 0x00000001U;
906}
907static inline u32 pwr_pmu_idle_intr_status_r(void)
908{
909 return 0x0010a9ecU;
910}
911static inline u32 pwr_pmu_idle_intr_status_intr_f(u32 v)
912{
913 return (v & 0x1U) << 0U;
914}
915static inline u32 pwr_pmu_idle_intr_status_intr_m(void)
916{
917 return U32(0x1U) << 0U;
918}
919static inline u32 pwr_pmu_idle_intr_status_intr_v(u32 r)
920{
921 return (r >> 0U) & 0x1U;
922}
923static inline u32 pwr_pmu_idle_intr_status_intr_pending_v(void)
924{
925 return 0x00000001U;
926}
927static inline u32 pwr_pmu_idle_intr_status_intr_clear_v(void)
928{
929 return 0x00000001U;
930}
883static inline u32 pwr_pmu_idle_mask_supp_r(u32 i) 931static inline u32 pwr_pmu_idle_mask_supp_r(u32 i)
884{ 932{
885 return 0x0010a9f0U + i*8U; 933 return 0x0010a9f0U + i*8U;