Thread (155 messages) 155 messages, 12 authors, 2016-03-18

Re: [PATCH 5/6] cpufreq: Support for fast frequency switching

From: "Rafael J. Wysocki" <rafael@kernel.org>
Date: 2016-03-04 02:16:05
Also in: linux-acpi, lkml

On Thu, Mar 3, 2016 at 7:00 AM, Viresh Kumar [off-list ref] wrote:
On 02-03-16, 03:12, Rafael J. Wysocki wrote:
quoted
Index: linux-pm/drivers/cpufreq/cpufreq.c
===================================================================
--- linux-pm.orig/drivers/cpufreq/cpufreq.c
+++ linux-pm/drivers/cpufreq/cpufreq.c
@@ -1772,6 +1772,39 @@ EXPORT_SYMBOL(cpufreq_unregister_notifie
  *                              GOVERNORS                            *
  *********************************************************************/

+/**
+ * cpufreq_driver_fast_switch - Carry out a fast CPU frequency switch.
+ * @policy: cpufreq policy to switch the frequency for.
+ * @target_freq: New frequency to set (may be approximate).
+ * @relation: Relation to use for frequency selection.
+ *
+ * Carry out a fast frequency switch from interrupt context.
+ *
+ * This function must not be called if policy->fast_switch_possible is unset.
+ *
+ * Governors calling this function must guarantee that it will never be invoked
+ * twice in parallel for the same policy and that it will never be called in
+ * parallel with either ->target() or ->target_index() for the same policy.
+ *
+ * If CPUFREQ_ENTRY_INVALID is returned by the driver's ->fast_switch()
+ * callback, the hardware configuration must be preserved.
+ */
+void cpufreq_driver_fast_switch(struct cpufreq_policy *policy,
+                             unsigned int target_freq, unsigned int relation)
+{
+     unsigned int freq;
+
+     if (target_freq == policy->cur)
Maybe an unlikely() here ?
quoted
+             return;
+
+     freq = cpufreq_driver->fast_switch(policy, target_freq, relation);
+     if (freq != CPUFREQ_ENTRY_INVALID) {
+             policy->cur = freq;
Hmm.. What will happen to the code relying on the cpufreq-notifiers
now ?
It will have a problem.

For that code it's like the CPU changing the frequency and not telling
it (which is not unusual for that matter).

Thanks,
Rafael
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help