From e9a6d179a42e7bdd6bb4876fb14f4ff7ab0df852 Mon Sep 17 00:00:00 2001 From: Arun Kannan Date: Mon, 5 Mar 2018 14:32:08 -0800 Subject: 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 (cherry picked from commit 7f819a9ba707e6e905168b00b0f3bf6348e86188) 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 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gk20a/clk_gk20a.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'drivers/gpu/nvgpu/gk20a/clk_gk20a.h') diff --git a/drivers/gpu/nvgpu/gk20a/clk_gk20a.h b/drivers/gpu/nvgpu/gk20a/clk_gk20a.h index ec7022aa..d84e5969 100644 --- a/drivers/gpu/nvgpu/gk20a/clk_gk20a.h +++ b/drivers/gpu/nvgpu/gk20a/clk_gk20a.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011 - 2017, NVIDIA CORPORATION. All rights reserved. + * Copyright (c) 2011 - 2018, NVIDIA CORPORATION. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -96,6 +96,9 @@ struct clk_gk20a { #if defined(CONFIG_COMMON_CLK) struct clk *tegra_clk; struct clk_hw hw; + + /* scaling rate */ + unsigned long cached_rate; #endif struct pll gpc_pll; struct pll gpc_pll_last; -- cgit v1.2.2