summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/clk/clk_arb.c
diff options
context:
space:
mode:
authorVijayakumar <vsubbu@nvidia.com>2016-12-07 08:30:43 -0500
committerDeepak Nibade <dnibade@nvidia.com>2016-12-27 04:56:52 -0500
commitbe6e02a6d42b0a7092f92371474c42d41019c917 (patch)
treec533462eb6321d44daaaf61cbf876427e37e9ddd /drivers/gpu/nvgpu/clk/clk_arb.c
parent9664b8e50ab66eb3a690998c4b6541870dd677b6 (diff)
gpu: nvgpu: call set volt always during vf switch
bug 1845211 clfc is reset during vf switch. it resets delta values stored in pmu structure. if voltage has not changed, delta calculation happens on top of corrected voltage causing volt to keep on increasing in cases where voltage does not change during a vf switch. Change-Id: I9d1a58b6b7652f22c3a7304162bb8ca6f7d1da6f Signed-off-by: Vijayakumar <vsubbu@nvidia.com> Reviewed-on: http://git-master/r/1266632 (cherry picked from commit 74e2e97d4d149d3eac65b5f65b358b977fba463e) Reviewed-on: http://git-master/r/1273911 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/clk/clk_arb.c')
-rw-r--r--drivers/gpu/nvgpu/clk/clk_arb.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/drivers/gpu/nvgpu/clk/clk_arb.c b/drivers/gpu/nvgpu/clk/clk_arb.c
index 762c2466..7c22a83d 100644
--- a/drivers/gpu/nvgpu/clk/clk_arb.c
+++ b/drivers/gpu/nvgpu/clk/clk_arb.c
@@ -1401,7 +1401,7 @@ static int nvgpu_clk_arb_change_vf_point(struct gk20a *g, u16 gpc2clk_target,
1401 status = clk_set_fll_clks(g, &fllclk); 1401 status = clk_set_fll_clks(g, &fllclk);
1402 if (status < 0) 1402 if (status < 0)
1403 return status; 1403 return status;
1404 } else if (voltuv > arb->voltuv_actual) { 1404 } else {
1405 status = clk_set_fll_clks(g, &fllclk); 1405 status = clk_set_fll_clks(g, &fllclk);
1406 if (status < 0) 1406 if (status < 0)
1407 return status; 1407 return status;
@@ -1413,14 +1413,6 @@ static int nvgpu_clk_arb_change_vf_point(struct gk20a *g, u16 gpc2clk_target,
1413 status = g->clk_pmu.clk_mclk.change(g, mclk_target); 1413 status = g->clk_pmu.clk_mclk.change(g, mclk_target);
1414 if (status < 0) 1414 if (status < 0)
1415 return status; 1415 return status;
1416 } else {
1417 status = g->clk_pmu.clk_mclk.change(g, mclk_target);
1418 if (status < 0)
1419 return status;
1420
1421 status = clk_set_fll_clks(g, &fllclk);
1422 if (status < 0)
1423 return status;
1424 } 1416 }
1425 1417
1426 return 0; 1418 return 0;