On 02-03-16, 03:12, Rafael J. Wysocki wrote: > 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 ? > + 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 ? > + trace_cpu_frequency(freq, smp_processor_id()); > + } > +} > +EXPORT_SYMBOL_GPL(cpufreq_driver_fast_switch); -- viresh -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html