aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/cpufreq/cpufreq-dt.c1
-rw-r--r--drivers/cpufreq/cpufreq.c7
-rw-r--r--drivers/cpufreq/cpufreq_governor.c3
-rw-r--r--drivers/cpufreq/intel_pstate.c8
4 files changed, 16 insertions, 3 deletions
diff --git a/drivers/cpufreq/cpufreq-dt.c b/drivers/cpufreq/cpufreq-dt.c
index fef3c2160691..d83ab94d041a 100644
--- a/drivers/cpufreq/cpufreq-dt.c
+++ b/drivers/cpufreq/cpufreq-dt.c
@@ -274,6 +274,7 @@ static int cpufreq_init(struct cpufreq_policy *policy)
274 transition_latency = CPUFREQ_ETERNAL; 274 transition_latency = CPUFREQ_ETERNAL;
275 275
276 policy->cpuinfo.transition_latency = transition_latency; 276 policy->cpuinfo.transition_latency = transition_latency;
277 policy->dvfs_possible_from_any_cpu = true;
277 278
278 return 0; 279 return 0;
279 280
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
index c7ae67d6886d..ea43b147a7fe 100644
--- a/drivers/cpufreq/cpufreq.c
+++ b/drivers/cpufreq/cpufreq.c
@@ -1843,9 +1843,10 @@ EXPORT_SYMBOL(cpufreq_unregister_notifier);
1843 * twice in parallel for the same policy and that it will never be called in 1843 * twice in parallel for the same policy and that it will never be called in
1844 * parallel with either ->target() or ->target_index() for the same policy. 1844 * parallel with either ->target() or ->target_index() for the same policy.
1845 * 1845 *
1846 * If CPUFREQ_ENTRY_INVALID is returned by the driver's ->fast_switch() 1846 * Returns the actual frequency set for the CPU.
1847 * callback to indicate an error condition, the hardware configuration must be 1847 *
1848 * preserved. 1848 * If 0 is returned by the driver's ->fast_switch() callback to indicate an
1849 * error condition, the hardware configuration must be preserved.
1849 */ 1850 */
1850unsigned int cpufreq_driver_fast_switch(struct cpufreq_policy *policy, 1851unsigned int cpufreq_driver_fast_switch(struct cpufreq_policy *policy,
1851 unsigned int target_freq) 1852 unsigned int target_freq)
diff --git a/drivers/cpufreq/cpufreq_governor.c b/drivers/cpufreq/cpufreq_governor.c
index eed069ecfd5e..58d4f4e1ad6a 100644
--- a/drivers/cpufreq/cpufreq_governor.c
+++ b/drivers/cpufreq/cpufreq_governor.c
@@ -272,6 +272,9 @@ static void dbs_update_util_handler(struct update_util_data *data, u64 time,
272 struct policy_dbs_info *policy_dbs = cdbs->policy_dbs; 272 struct policy_dbs_info *policy_dbs = cdbs->policy_dbs;
273 u64 delta_ns, lst; 273 u64 delta_ns, lst;
274 274
275 if (!cpufreq_can_do_remote_dvfs(policy_dbs->policy))
276 return;
277
275 /* 278 /*
276 * The work may not be allowed to be queued up right now. 279 * The work may not be allowed to be queued up right now.
277 * Possible reasons: 280 * Possible reasons:
diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c
index 04dd5f46803d..0c50637e6bda 100644
--- a/drivers/cpufreq/intel_pstate.c
+++ b/drivers/cpufreq/intel_pstate.c
@@ -1746,6 +1746,10 @@ static void intel_pstate_update_util_pid(struct update_util_data *data,
1746 struct cpudata *cpu = container_of(data, struct cpudata, update_util); 1746 struct cpudata *cpu = container_of(data, struct cpudata, update_util);
1747 u64 delta_ns = time - cpu->sample.time; 1747 u64 delta_ns = time - cpu->sample.time;
1748 1748
1749 /* Don't allow remote callbacks */
1750 if (smp_processor_id() != cpu->cpu)
1751 return;
1752
1749 if ((s64)delta_ns < pid_params.sample_rate_ns) 1753 if ((s64)delta_ns < pid_params.sample_rate_ns)
1750 return; 1754 return;
1751 1755
@@ -1763,6 +1767,10 @@ static void intel_pstate_update_util(struct update_util_data *data, u64 time,
1763 struct cpudata *cpu = container_of(data, struct cpudata, update_util); 1767 struct cpudata *cpu = container_of(data, struct cpudata, update_util);
1764 u64 delta_ns; 1768 u64 delta_ns;
1765 1769
1770 /* Don't allow remote callbacks */
1771 if (smp_processor_id() != cpu->cpu)
1772 return;
1773
1766 if (flags & SCHED_CPUFREQ_IOWAIT) { 1774 if (flags & SCHED_CPUFREQ_IOWAIT) {
1767 cpu->iowait_boost = int_tofp(1); 1775 cpu->iowait_boost = int_tofp(1);
1768 } else if (cpu->iowait_boost) { 1776 } else if (cpu->iowait_boost) {