mirror of
git://nv-tegra.nvidia.com/linux-nvgpu.git
synced 2025-12-24 02:22:34 +03:00
gpu: nvgpu: restrict devfreq during active clk_arb set requests
Restrict access to devfreq when there are active set requests in the clk_arbiter. We make the following changes in the patch. 1) Add a global counter in the struct gk20a named clk_arb_global_nr which is used to track the number of active set requests in the system. 2) Anytime a set request is successfully made by the userspace, clk_arb_global_nr is incremented by 1 and during the completion of request(releasing the corresponding file handle), clk_arb_global_nr is decremented by 1. 3) gk20a_scale_target(invoked by devfreq to set the new frequency based on load) atomically checks clk_arb_global_nr. If the value = 0, the code simply continue or else if its > 0, it quits thus making devfreq requests mutually exclusive with the clk_arbiter. Bug 2061372 Change-Id: I5d19de03e45520f4ff8fccb97b1f1589d04c8ab8 Signed-off-by: Debarshi Dutta <ddutta@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/1790002 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
519948a9c6
commit
85c323c3e8
@@ -25,6 +25,7 @@
|
||||
|
||||
#include <nvgpu/kmem.h>
|
||||
#include <nvgpu/log.h>
|
||||
#include <nvgpu/clk_arb.h>
|
||||
|
||||
#include "gk20a/gk20a.h"
|
||||
#include "platform_gk20a.h"
|
||||
@@ -154,6 +155,8 @@ static int gk20a_scale_target(struct device *dev, unsigned long *freq,
|
||||
unsigned long rounded_rate;
|
||||
unsigned long min_freq = 0, max_freq = 0;
|
||||
|
||||
if (nvgpu_clk_arb_has_active_req(g))
|
||||
return 0;
|
||||
/*
|
||||
* Calculate floor and cap frequency values
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user