diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/cpufreq/cpufreq-dt.c | 1 | ||||
| -rw-r--r-- | drivers/cpufreq/cpufreq.c | 7 | ||||
| -rw-r--r-- | drivers/cpufreq/cpufreq_governor.c | 3 | ||||
| -rw-r--r-- | drivers/cpufreq/intel_pstate.c | 8 |
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 | */ |
| 1850 | unsigned int cpufreq_driver_fast_switch(struct cpufreq_policy *policy, | 1851 | unsigned 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) { |
