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.c | |
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.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c index 7c441f53..06e7a4e6 100644 --- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | |||
@@ -3677,16 +3677,22 @@ int gk20a_pmu_destroy(struct gk20a *g) | |||
3677 | 3677 | ||
3678 | int gk20a_pmu_load_norm(struct gk20a *g, u32 *load) | 3678 | int gk20a_pmu_load_norm(struct gk20a *g, u32 *load) |
3679 | { | 3679 | { |
3680 | *load = g->pmu.load_shadow; | ||
3681 | return 0; | ||
3682 | } | ||
3683 | |||
3684 | int gk20a_pmu_load_update(struct gk20a *g) | ||
3685 | { | ||
3680 | struct pmu_gk20a *pmu = &g->pmu; | 3686 | struct pmu_gk20a *pmu = &g->pmu; |
3681 | u16 _load = 0; | 3687 | u16 _load = 0; |
3682 | 3688 | ||
3683 | if (!pmu->perfmon_ready) { | 3689 | if (!pmu->perfmon_ready) { |
3684 | *load = 0; | 3690 | pmu->load_shadow = 0; |
3685 | return 0; | 3691 | return 0; |
3686 | } | 3692 | } |
3687 | 3693 | ||
3688 | pmu_copy_from_dmem(pmu, pmu->sample_buffer, (u8 *)&_load, 2, 0); | 3694 | pmu_copy_from_dmem(pmu, pmu->sample_buffer, (u8 *)&_load, 2, 0); |
3689 | *load = _load / 10; | 3695 | pmu->load_shadow = _load / 10; |
3690 | 3696 | ||
3691 | return 0; | 3697 | return 0; |
3692 | } | 3698 | } |