gpu: nvgpu: cache gpu clk rate

Cache the rate used in clk_set_rate().
Return that cached rate on clk_get_rate(), don't read from hardware.
This cached rate is used to avoid duplicate requests to clk_set_rate().

Motivation is to support multiple governors for gpu clk.
Reading clock from hardware is unreliable in multi-governor situation.
Relying on hardware clock value could mislead the kernel gpu governor
in its scaling calculations.

Bug 2051688

Change-Id: I43fc056eea6f69fe0889c45640fcb892b658071c
Signed-off-by: Arun Kannan <akannan@nvidia.com>
(cherry picked from commit 7f819a9ba7)
Reviewed-on: https://git-master.nvidia.com/r/1662759
Reviewed-on: https://git-master.nvidia.com/r/1668919
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
Arun Kannan
2018-03-05 14:32:08 -08:00
committed by mobile promotions
parent 0e3181a5d7
commit e9a6d179a4
5 changed files with 28 additions and 7 deletions

View File

@@ -256,6 +256,9 @@ struct gk20a_platform {
/* stream id to use */
u32 ltc_streamid;
/* scaling rate */
unsigned long cached_rate;
};
static inline struct gk20a_platform *gk20a_get_platform(