summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/pmu_gk20a.h
diff options
context:
space:
mode:
authorArto Merilainen <amerilainen@nvidia.com>2014-08-06 02:30:11 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:10:45 -0400
commitb33020008b727d75827d670ca7a6c969769ca1a0 (patch)
tree387fd7b91d0bad4e287d939e75babba2b3abdb80 /drivers/gpu/nvgpu/gk20a/pmu_gk20a.h
parent273f754cb518c8133c1c19d23d58fab533b1cf0a (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.h2
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);
1119int pmu_mutex_release(struct pmu_gk20a *pmu, u32 id, u32 *token); 1120int pmu_mutex_release(struct pmu_gk20a *pmu, u32 id, u32 *token);
1120int gk20a_pmu_destroy(struct gk20a *g); 1121int gk20a_pmu_destroy(struct gk20a *g);
1121int gk20a_pmu_load_norm(struct gk20a *g, u32 *load); 1122int gk20a_pmu_load_norm(struct gk20a *g, u32 *load);
1123int gk20a_pmu_load_update(struct gk20a *g);
1122int gk20a_pmu_debugfs_init(struct platform_device *dev); 1124int gk20a_pmu_debugfs_init(struct platform_device *dev);
1123void gk20a_pmu_reset_load_counters(struct gk20a *g); 1125void gk20a_pmu_reset_load_counters(struct gk20a *g);
1124void gk20a_pmu_get_load_counters(struct gk20a *g, u32 *busy_cycles, 1126void gk20a_pmu_get_load_counters(struct gk20a *g, u32 *busy_cycles,