mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-25 02:52:51 +03:00
Revert "gpu: nvgpu: cache gpu clk rate"
This reverts commite9a6d179a4("gpu: nvgpu: cache gpu clk rate") - Real clock rate doesn't always equal clock rate requested by caller - call of clk_set_rate() and update of cached_rate are not atomic - Real root cause for Bug 2051688 is in bpmp and gboost design Bug 2538692 Change-Id: I9248e0c69e2271ed2d0070587db59afa6f8160f2 Signed-off-by: Peng Liu <pengliu@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/2109708 (cherry picked from commitcc70f89bb4) Reviewed-on: https://git-master.nvidia.com/r/2113647 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Aaron Tian <atian@nvidia.com> Tested-by: Aaron Tian <atian@nvidia.com> Reviewed-by: Bibek Basu <bbasu@nvidia.com> Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
This commit is contained in:
committed by
mobile promotions
parent
af95d14bb0
commit
27625718c4
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Linux clock support
|
||||
*
|
||||
* Copyright (c) 2017-2018, NVIDIA CORPORATION. All rights reserved.
|
||||
* Copyright (c) 2017-2019, NVIDIA CORPORATION. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
@@ -38,13 +38,9 @@ static unsigned long nvgpu_linux_clk_get_rate(struct gk20a *g, u32 api_domain)
|
||||
switch (api_domain) {
|
||||
case CTRL_CLK_DOMAIN_GPCCLK:
|
||||
if (g->clk.tegra_clk)
|
||||
ret = g->clk.cached_rate ?
|
||||
g->clk.cached_rate :
|
||||
clk_get_rate(g->clk.tegra_clk);
|
||||
ret = clk_get_rate(g->clk.tegra_clk);
|
||||
else
|
||||
ret = platform->cached_rate ?
|
||||
platform->cached_rate :
|
||||
clk_get_rate(platform->clk[0]);
|
||||
ret = clk_get_rate(platform->clk[0]);
|
||||
break;
|
||||
case CTRL_CLK_DOMAIN_PWRCLK:
|
||||
ret = clk_get_rate(platform->clk[1]);
|
||||
@@ -66,15 +62,10 @@ static int nvgpu_linux_clk_set_rate(struct gk20a *g,
|
||||
|
||||
switch (api_domain) {
|
||||
case CTRL_CLK_DOMAIN_GPCCLK:
|
||||
if (g->clk.tegra_clk) {
|
||||
if (g->clk.tegra_clk)
|
||||
ret = clk_set_rate(g->clk.tegra_clk, rate);
|
||||
if (!ret)
|
||||
g->clk.cached_rate = rate;
|
||||
} else {
|
||||
else
|
||||
ret = clk_set_rate(platform->clk[0], rate);
|
||||
if (!ret)
|
||||
platform->cached_rate = rate;
|
||||
}
|
||||
break;
|
||||
case CTRL_CLK_DOMAIN_PWRCLK:
|
||||
ret = clk_set_rate(platform->clk[1], rate);
|
||||
|
||||
Reference in New Issue
Block a user