diff options
author | Arto Merilainen <amerilainen@nvidia.com> | 2014-08-06 02:30:11 -0400 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-03-18 15:10:45 -0400 |
commit | b33020008b727d75827d670ca7a6c969769ca1a0 (patch) | |
tree | 387fd7b91d0bad4e287d939e75babba2b3abdb80 /drivers/gpu/nvgpu/gk20a/pmu_gk20a.h | |
parent | 273f754cb518c8133c1c19d23d58fab533b1cf0a (diff) |
gpu: nvgpu: Add sw shadow for load value
Reading the load value may increase CPU power consumption
temprorarily. In most cases we are ok with a value that
was read a moment earlier.
This patch introduces a software shadow for gpu load. The shadow
is updated before starting scaling and all scaling code paths use
the sw shadow.
Change-Id: I53d2ccb8e7f83147f411a14d3104d890dd9af9a3
Signed-off-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-on: http://git-master/r/453347
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/pmu_gk20a.h')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/pmu_gk20a.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.h b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.h index 292aabb0..694e0288 100644 --- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.h | |||
@@ -1079,6 +1079,7 @@ struct pmu_gk20a { | |||
1079 | bool perfmon_ready; | 1079 | bool perfmon_ready; |
1080 | 1080 | ||
1081 | u32 sample_buffer; | 1081 | u32 sample_buffer; |
1082 | u32 load_shadow; | ||
1082 | 1083 | ||
1083 | struct mutex isr_mutex; | 1084 | struct mutex isr_mutex; |
1084 | struct mutex isr_enable_lock; | 1085 | struct mutex isr_enable_lock; |
@@ -1119,6 +1120,7 @@ int pmu_mutex_acquire(struct pmu_gk20a *pmu, u32 id, u32 *token); | |||
1119 | int pmu_mutex_release(struct pmu_gk20a *pmu, u32 id, u32 *token); | 1120 | int pmu_mutex_release(struct pmu_gk20a *pmu, u32 id, u32 *token); |
1120 | int gk20a_pmu_destroy(struct gk20a *g); | 1121 | int gk20a_pmu_destroy(struct gk20a *g); |
1121 | int gk20a_pmu_load_norm(struct gk20a *g, u32 *load); | 1122 | int gk20a_pmu_load_norm(struct gk20a *g, u32 *load); |
1123 | int gk20a_pmu_load_update(struct gk20a *g); | ||
1122 | int gk20a_pmu_debugfs_init(struct platform_device *dev); | 1124 | int gk20a_pmu_debugfs_init(struct platform_device *dev); |
1123 | void gk20a_pmu_reset_load_counters(struct gk20a *g); | 1125 | void gk20a_pmu_reset_load_counters(struct gk20a *g); |
1124 | void gk20a_pmu_get_load_counters(struct gk20a *g, u32 *busy_cycles, | 1126 | void gk20a_pmu_get_load_counters(struct gk20a *g, u32 *busy_cycles, |