2 * linux/drivers/cpufreq/cpufreq.c
4 * Copyright (C) 2001 Russell King
9 * Added handling for CPU hotplug
11 * Fix handling for CPU hotplug -- affected CPUs
13 * This program is free software; you can redistribute it and/or modify
14 * it under the terms of the GNU General Public License version 2 as
15 * published by the Free Software Foundation.
18 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
20 #include <linux/cpu.h>
21 #include <linux/cpufreq.h>
22 #include <linux/delay.h>
23 #include <linux/device.h>
24 #include <linux/init.h>
25 #include <linux/kernel_stat.h>
26 #include <linux/module.h>
27 #include <linux/mutex.h>
28 #include <linux/slab.h>
29 #include <linux/suspend.h>
30 #include <linux/tick.h>
31 #include <trace/events/power.h>
34 * The "cpufreq driver" - the arch- or hardware-dependent low
35 * level driver of CPUFreq support, and its spinlock. This lock
36 * also protects the cpufreq_cpu_data array.
38 static struct cpufreq_driver *cpufreq_driver;
39 static DEFINE_PER_CPU(struct cpufreq_policy *, cpufreq_cpu_data);
40 static DEFINE_PER_CPU(struct cpufreq_policy *, cpufreq_cpu_data_fallback);
41 static DEFINE_RWLOCK(cpufreq_driver_lock);
42 DEFINE_MUTEX(cpufreq_governor_lock);
43 static LIST_HEAD(cpufreq_policy_list);
45 /* This one keeps track of the previously set governor of a removed CPU */
46 static DEFINE_PER_CPU(char[CPUFREQ_NAME_LEN], cpufreq_cpu_governor);
48 /* Flag to suspend/resume CPUFreq governors */
49 static bool cpufreq_suspended;
51 static inline bool has_target(void)
53 return cpufreq_driver->target_index || cpufreq_driver->target;
57 * rwsem to guarantee that cpufreq driver module doesn't unload during critical
60 static DECLARE_RWSEM(cpufreq_rwsem);
62 /* internal prototypes */
63 static int __cpufreq_governor(struct cpufreq_policy *policy,
65 static unsigned int __cpufreq_get(unsigned int cpu);
66 static void handle_update(struct work_struct *work);
69 * Two notifier lists: the "policy" list is involved in the
70 * validation process for a new CPU frequency policy; the
71 * "transition" list for kernel code that needs to handle
72 * changes to devices when the CPU clock speed changes.
73 * The mutex locks both lists.
75 static BLOCKING_NOTIFIER_HEAD(cpufreq_policy_notifier_list);
76 static struct srcu_notifier_head cpufreq_transition_notifier_list;
78 static bool init_cpufreq_transition_notifier_list_called;
79 static int __init init_cpufreq_transition_notifier_list(void)
81 srcu_init_notifier_head(&cpufreq_transition_notifier_list);
82 init_cpufreq_transition_notifier_list_called = true;
85 pure_initcall(init_cpufreq_transition_notifier_list);
87 static int off __read_mostly;
88 static int cpufreq_disabled(void)
92 void disable_cpufreq(void)
96 static LIST_HEAD(cpufreq_governor_list);
97 static DEFINE_MUTEX(cpufreq_governor_mutex);
99 bool have_governor_per_policy(void)
101 return !!(cpufreq_driver->flags & CPUFREQ_HAVE_GOVERNOR_PER_POLICY);
103 EXPORT_SYMBOL_GPL(have_governor_per_policy);
105 struct kobject *get_governor_parent_kobj(struct cpufreq_policy *policy)
107 if (have_governor_per_policy())
108 return &policy->kobj;
110 return cpufreq_global_kobject;
112 EXPORT_SYMBOL_GPL(get_governor_parent_kobj);
114 static inline u64 get_cpu_idle_time_jiffy(unsigned int cpu, u64 *wall)
120 cur_wall_time = jiffies64_to_cputime64(get_jiffies_64());
122 busy_time = kcpustat_cpu(cpu).cpustat[CPUTIME_USER];
123 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_SYSTEM];
124 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_IRQ];
125 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_SOFTIRQ];
126 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_STEAL];
127 busy_time += kcpustat_cpu(cpu).cpustat[CPUTIME_NICE];
129 idle_time = cur_wall_time - busy_time;
131 *wall = cputime_to_usecs(cur_wall_time);
133 return cputime_to_usecs(idle_time);
136 u64 get_cpu_idle_time(unsigned int cpu, u64 *wall, int io_busy)
138 u64 idle_time = get_cpu_idle_time_us(cpu, io_busy ? wall : NULL);
140 if (idle_time == -1ULL)
141 return get_cpu_idle_time_jiffy(cpu, wall);
143 idle_time += get_cpu_iowait_time_us(cpu, wall);
147 EXPORT_SYMBOL_GPL(get_cpu_idle_time);
150 * This is a generic cpufreq init() routine which can be used by cpufreq
151 * drivers of SMP systems. It will do following:
152 * - validate & show freq table passed
153 * - set policies transition latency
154 * - policy->cpus with all possible CPUs
156 int cpufreq_generic_init(struct cpufreq_policy *policy,
157 struct cpufreq_frequency_table *table,
158 unsigned int transition_latency)
162 ret = cpufreq_table_validate_and_show(policy, table);
164 pr_err("%s: invalid frequency table: %d\n", __func__, ret);
168 policy->cpuinfo.transition_latency = transition_latency;
171 * The driver only supports the SMP configuartion where all processors
172 * share the clock and voltage and clock.
174 cpumask_setall(policy->cpus);
178 EXPORT_SYMBOL_GPL(cpufreq_generic_init);
180 unsigned int cpufreq_generic_get(unsigned int cpu)
182 struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
184 if (!policy || IS_ERR(policy->clk)) {
185 pr_err("%s: No %s associated to cpu: %d\n",
186 __func__, policy ? "clk" : "policy", cpu);
190 return clk_get_rate(policy->clk) / 1000;
192 EXPORT_SYMBOL_GPL(cpufreq_generic_get);
194 /* Only for cpufreq core internal use */
195 struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu)
197 return per_cpu(cpufreq_cpu_data, cpu);
200 struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu)
202 struct cpufreq_policy *policy = NULL;
205 if (cpufreq_disabled() || (cpu >= nr_cpu_ids))
208 if (!down_read_trylock(&cpufreq_rwsem))
211 /* get the cpufreq driver */
212 read_lock_irqsave(&cpufreq_driver_lock, flags);
214 if (cpufreq_driver) {
216 policy = per_cpu(cpufreq_cpu_data, cpu);
218 kobject_get(&policy->kobj);
221 read_unlock_irqrestore(&cpufreq_driver_lock, flags);
224 up_read(&cpufreq_rwsem);
228 EXPORT_SYMBOL_GPL(cpufreq_cpu_get);
230 void cpufreq_cpu_put(struct cpufreq_policy *policy)
232 if (cpufreq_disabled())
235 kobject_put(&policy->kobj);
236 up_read(&cpufreq_rwsem);
238 EXPORT_SYMBOL_GPL(cpufreq_cpu_put);
240 /*********************************************************************
241 * EXTERNALLY AFFECTING FREQUENCY CHANGES *
242 *********************************************************************/
245 * adjust_jiffies - adjust the system "loops_per_jiffy"
247 * This function alters the system "loops_per_jiffy" for the clock
248 * speed change. Note that loops_per_jiffy cannot be updated on SMP
249 * systems as each CPU might be scaled differently. So, use the arch
250 * per-CPU loops_per_jiffy value wherever possible.
253 static unsigned long l_p_j_ref;
254 static unsigned int l_p_j_ref_freq;
256 static void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
258 if (ci->flags & CPUFREQ_CONST_LOOPS)
261 if (!l_p_j_ref_freq) {
262 l_p_j_ref = loops_per_jiffy;
263 l_p_j_ref_freq = ci->old;
264 pr_debug("saving %lu as reference value for loops_per_jiffy; freq is %u kHz\n",
265 l_p_j_ref, l_p_j_ref_freq);
267 if (val == CPUFREQ_POSTCHANGE && ci->old != ci->new) {
268 loops_per_jiffy = cpufreq_scale(l_p_j_ref, l_p_j_ref_freq,
270 pr_debug("scaling loops_per_jiffy to %lu for frequency %u kHz\n",
271 loops_per_jiffy, ci->new);
275 static inline void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
281 static void __cpufreq_notify_transition(struct cpufreq_policy *policy,
282 struct cpufreq_freqs *freqs, unsigned int state)
284 BUG_ON(irqs_disabled());
286 if (cpufreq_disabled())
289 freqs->flags = cpufreq_driver->flags;
290 pr_debug("notification %u of frequency transition to %u kHz\n",
295 case CPUFREQ_PRECHANGE:
296 /* detect if the driver reported a value as "old frequency"
297 * which is not equal to what the cpufreq core thinks is
300 if (!(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) {
301 if ((policy) && (policy->cpu == freqs->cpu) &&
302 (policy->cur) && (policy->cur != freqs->old)) {
303 pr_debug("Warning: CPU frequency is %u, cpufreq assumed %u kHz\n",
304 freqs->old, policy->cur);
305 freqs->old = policy->cur;
308 srcu_notifier_call_chain(&cpufreq_transition_notifier_list,
309 CPUFREQ_PRECHANGE, freqs);
310 adjust_jiffies(CPUFREQ_PRECHANGE, freqs);
313 case CPUFREQ_POSTCHANGE:
314 adjust_jiffies(CPUFREQ_POSTCHANGE, freqs);
315 pr_debug("FREQ: %lu - CPU: %lu\n",
316 (unsigned long)freqs->new, (unsigned long)freqs->cpu);
317 trace_cpu_frequency(freqs->new, freqs->cpu);
318 srcu_notifier_call_chain(&cpufreq_transition_notifier_list,
319 CPUFREQ_POSTCHANGE, freqs);
320 if (likely(policy) && likely(policy->cpu == freqs->cpu))
321 policy->cur = freqs->new;
327 * cpufreq_notify_transition - call notifier chain and adjust_jiffies
328 * on frequency transition.
330 * This function calls the transition notifiers and the "adjust_jiffies"
331 * function. It is called twice on all CPU frequency changes that have
334 static void cpufreq_notify_transition(struct cpufreq_policy *policy,
335 struct cpufreq_freqs *freqs, unsigned int state)
337 for_each_cpu(freqs->cpu, policy->cpus)
338 __cpufreq_notify_transition(policy, freqs, state);
341 /* Do post notifications when there are chances that transition has failed */
342 static void cpufreq_notify_post_transition(struct cpufreq_policy *policy,
343 struct cpufreq_freqs *freqs, int transition_failed)
345 cpufreq_notify_transition(policy, freqs, CPUFREQ_POSTCHANGE);
346 if (!transition_failed)
349 swap(freqs->old, freqs->new);
350 cpufreq_notify_transition(policy, freqs, CPUFREQ_PRECHANGE);
351 cpufreq_notify_transition(policy, freqs, CPUFREQ_POSTCHANGE);
354 void cpufreq_freq_transition_begin(struct cpufreq_policy *policy,
355 struct cpufreq_freqs *freqs)
358 wait_event(policy->transition_wait, !policy->transition_ongoing);
360 spin_lock(&policy->transition_lock);
362 if (unlikely(policy->transition_ongoing)) {
363 spin_unlock(&policy->transition_lock);
367 policy->transition_ongoing = true;
369 spin_unlock(&policy->transition_lock);
371 cpufreq_notify_transition(policy, freqs, CPUFREQ_PRECHANGE);
373 EXPORT_SYMBOL_GPL(cpufreq_freq_transition_begin);
375 void cpufreq_freq_transition_end(struct cpufreq_policy *policy,
376 struct cpufreq_freqs *freqs, int transition_failed)
378 if (unlikely(WARN_ON(!policy->transition_ongoing)))
381 cpufreq_notify_post_transition(policy, freqs, transition_failed);
383 policy->transition_ongoing = false;
385 wake_up(&policy->transition_wait);
387 EXPORT_SYMBOL_GPL(cpufreq_freq_transition_end);
390 /*********************************************************************
392 *********************************************************************/
393 static ssize_t show_boost(struct kobject *kobj,
394 struct attribute *attr, char *buf)
396 return sprintf(buf, "%d\n", cpufreq_driver->boost_enabled);
399 static ssize_t store_boost(struct kobject *kobj, struct attribute *attr,
400 const char *buf, size_t count)
404 ret = sscanf(buf, "%d", &enable);
405 if (ret != 1 || enable < 0 || enable > 1)
408 if (cpufreq_boost_trigger_state(enable)) {
409 pr_err("%s: Cannot %s BOOST!\n",
410 __func__, enable ? "enable" : "disable");
414 pr_debug("%s: cpufreq BOOST %s\n",
415 __func__, enable ? "enabled" : "disabled");
419 define_one_global_rw(boost);
421 static struct cpufreq_governor *__find_governor(const char *str_governor)
423 struct cpufreq_governor *t;
425 list_for_each_entry(t, &cpufreq_governor_list, governor_list)
426 if (!strnicmp(str_governor, t->name, CPUFREQ_NAME_LEN))
433 * cpufreq_parse_governor - parse a governor string
435 static int cpufreq_parse_governor(char *str_governor, unsigned int *policy,
436 struct cpufreq_governor **governor)
443 if (cpufreq_driver->setpolicy) {
444 if (!strnicmp(str_governor, "performance", CPUFREQ_NAME_LEN)) {
445 *policy = CPUFREQ_POLICY_PERFORMANCE;
447 } else if (!strnicmp(str_governor, "powersave",
449 *policy = CPUFREQ_POLICY_POWERSAVE;
452 } else if (has_target()) {
453 struct cpufreq_governor *t;
455 mutex_lock(&cpufreq_governor_mutex);
457 t = __find_governor(str_governor);
462 mutex_unlock(&cpufreq_governor_mutex);
463 ret = request_module("cpufreq_%s", str_governor);
464 mutex_lock(&cpufreq_governor_mutex);
467 t = __find_governor(str_governor);
475 mutex_unlock(&cpufreq_governor_mutex);
482 * cpufreq_per_cpu_attr_read() / show_##file_name() -
483 * print out cpufreq information
485 * Write out information from cpufreq_driver->policy[cpu]; object must be
489 #define show_one(file_name, object) \
490 static ssize_t show_##file_name \
491 (struct cpufreq_policy *policy, char *buf) \
493 return sprintf(buf, "%u\n", policy->object); \
496 show_one(cpuinfo_min_freq, cpuinfo.min_freq);
497 show_one(cpuinfo_max_freq, cpuinfo.max_freq);
498 show_one(cpuinfo_transition_latency, cpuinfo.transition_latency);
499 show_one(scaling_min_freq, min);
500 show_one(scaling_max_freq, max);
501 show_one(scaling_cur_freq, cur);
503 static int cpufreq_set_policy(struct cpufreq_policy *policy,
504 struct cpufreq_policy *new_policy);
507 * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access
509 #define store_one(file_name, object) \
510 static ssize_t store_##file_name \
511 (struct cpufreq_policy *policy, const char *buf, size_t count) \
514 struct cpufreq_policy new_policy; \
516 ret = cpufreq_get_policy(&new_policy, policy->cpu); \
520 ret = sscanf(buf, "%u", &new_policy.object); \
524 ret = cpufreq_set_policy(policy, &new_policy); \
525 policy->user_policy.object = policy->object; \
527 return ret ? ret : count; \
530 store_one(scaling_min_freq, min);
531 store_one(scaling_max_freq, max);
534 * show_cpuinfo_cur_freq - current CPU frequency as detected by hardware
536 static ssize_t show_cpuinfo_cur_freq(struct cpufreq_policy *policy,
539 unsigned int cur_freq = __cpufreq_get(policy->cpu);
541 return sprintf(buf, "<unknown>");
542 return sprintf(buf, "%u\n", cur_freq);
546 * show_scaling_governor - show the current policy for the specified CPU
548 static ssize_t show_scaling_governor(struct cpufreq_policy *policy, char *buf)
550 if (policy->policy == CPUFREQ_POLICY_POWERSAVE)
551 return sprintf(buf, "powersave\n");
552 else if (policy->policy == CPUFREQ_POLICY_PERFORMANCE)
553 return sprintf(buf, "performance\n");
554 else if (policy->governor)
555 return scnprintf(buf, CPUFREQ_NAME_PLEN, "%s\n",
556 policy->governor->name);
561 * store_scaling_governor - store policy for the specified CPU
563 static ssize_t store_scaling_governor(struct cpufreq_policy *policy,
564 const char *buf, size_t count)
567 char str_governor[16];
568 struct cpufreq_policy new_policy;
570 ret = cpufreq_get_policy(&new_policy, policy->cpu);
574 ret = sscanf(buf, "%15s", str_governor);
578 if (cpufreq_parse_governor(str_governor, &new_policy.policy,
579 &new_policy.governor))
582 ret = cpufreq_set_policy(policy, &new_policy);
584 policy->user_policy.policy = policy->policy;
585 policy->user_policy.governor = policy->governor;
594 * show_scaling_driver - show the cpufreq driver currently loaded
596 static ssize_t show_scaling_driver(struct cpufreq_policy *policy, char *buf)
598 return scnprintf(buf, CPUFREQ_NAME_PLEN, "%s\n", cpufreq_driver->name);
602 * show_scaling_available_governors - show the available CPUfreq governors
604 static ssize_t show_scaling_available_governors(struct cpufreq_policy *policy,
608 struct cpufreq_governor *t;
611 i += sprintf(buf, "performance powersave");
615 list_for_each_entry(t, &cpufreq_governor_list, governor_list) {
616 if (i >= (ssize_t) ((PAGE_SIZE / sizeof(char))
617 - (CPUFREQ_NAME_LEN + 2)))
619 i += scnprintf(&buf[i], CPUFREQ_NAME_PLEN, "%s ", t->name);
622 i += sprintf(&buf[i], "\n");
626 ssize_t cpufreq_show_cpus(const struct cpumask *mask, char *buf)
631 for_each_cpu(cpu, mask) {
633 i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), " ");
634 i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), "%u", cpu);
635 if (i >= (PAGE_SIZE - 5))
638 i += sprintf(&buf[i], "\n");
641 EXPORT_SYMBOL_GPL(cpufreq_show_cpus);
644 * show_related_cpus - show the CPUs affected by each transition even if
645 * hw coordination is in use
647 static ssize_t show_related_cpus(struct cpufreq_policy *policy, char *buf)
649 return cpufreq_show_cpus(policy->related_cpus, buf);
653 * show_affected_cpus - show the CPUs affected by each transition
655 static ssize_t show_affected_cpus(struct cpufreq_policy *policy, char *buf)
657 return cpufreq_show_cpus(policy->cpus, buf);
660 static ssize_t store_scaling_setspeed(struct cpufreq_policy *policy,
661 const char *buf, size_t count)
663 unsigned int freq = 0;
666 if (!policy->governor || !policy->governor->store_setspeed)
669 ret = sscanf(buf, "%u", &freq);
673 policy->governor->store_setspeed(policy, freq);
678 static ssize_t show_scaling_setspeed(struct cpufreq_policy *policy, char *buf)
680 if (!policy->governor || !policy->governor->show_setspeed)
681 return sprintf(buf, "<unsupported>\n");
683 return policy->governor->show_setspeed(policy, buf);
687 * show_bios_limit - show the current cpufreq HW/BIOS limitation
689 static ssize_t show_bios_limit(struct cpufreq_policy *policy, char *buf)
693 if (cpufreq_driver->bios_limit) {
694 ret = cpufreq_driver->bios_limit(policy->cpu, &limit);
696 return sprintf(buf, "%u\n", limit);
698 return sprintf(buf, "%u\n", policy->cpuinfo.max_freq);
701 cpufreq_freq_attr_ro_perm(cpuinfo_cur_freq, 0400);
702 cpufreq_freq_attr_ro(cpuinfo_min_freq);
703 cpufreq_freq_attr_ro(cpuinfo_max_freq);
704 cpufreq_freq_attr_ro(cpuinfo_transition_latency);
705 cpufreq_freq_attr_ro(scaling_available_governors);
706 cpufreq_freq_attr_ro(scaling_driver);
707 cpufreq_freq_attr_ro(scaling_cur_freq);
708 cpufreq_freq_attr_ro(bios_limit);
709 cpufreq_freq_attr_ro(related_cpus);
710 cpufreq_freq_attr_ro(affected_cpus);
711 cpufreq_freq_attr_rw(scaling_min_freq);
712 cpufreq_freq_attr_rw(scaling_max_freq);
713 cpufreq_freq_attr_rw(scaling_governor);
714 cpufreq_freq_attr_rw(scaling_setspeed);
716 static struct attribute *default_attrs[] = {
717 &cpuinfo_min_freq.attr,
718 &cpuinfo_max_freq.attr,
719 &cpuinfo_transition_latency.attr,
720 &scaling_min_freq.attr,
721 &scaling_max_freq.attr,
724 &scaling_governor.attr,
725 &scaling_driver.attr,
726 &scaling_available_governors.attr,
727 &scaling_setspeed.attr,
731 #define to_policy(k) container_of(k, struct cpufreq_policy, kobj)
732 #define to_attr(a) container_of(a, struct freq_attr, attr)
734 static ssize_t show(struct kobject *kobj, struct attribute *attr, char *buf)
736 struct cpufreq_policy *policy = to_policy(kobj);
737 struct freq_attr *fattr = to_attr(attr);
740 if (!down_read_trylock(&cpufreq_rwsem))
743 down_read(&policy->rwsem);
746 ret = fattr->show(policy, buf);
750 up_read(&policy->rwsem);
751 up_read(&cpufreq_rwsem);
756 static ssize_t store(struct kobject *kobj, struct attribute *attr,
757 const char *buf, size_t count)
759 struct cpufreq_policy *policy = to_policy(kobj);
760 struct freq_attr *fattr = to_attr(attr);
761 ssize_t ret = -EINVAL;
765 if (!cpu_online(policy->cpu))
768 if (!down_read_trylock(&cpufreq_rwsem))
771 down_write(&policy->rwsem);
774 ret = fattr->store(policy, buf, count);
778 up_write(&policy->rwsem);
780 up_read(&cpufreq_rwsem);
787 static void cpufreq_sysfs_release(struct kobject *kobj)
789 struct cpufreq_policy *policy = to_policy(kobj);
790 pr_debug("last reference is dropped\n");
791 complete(&policy->kobj_unregister);
794 static const struct sysfs_ops sysfs_ops = {
799 static struct kobj_type ktype_cpufreq = {
800 .sysfs_ops = &sysfs_ops,
801 .default_attrs = default_attrs,
802 .release = cpufreq_sysfs_release,
805 struct kobject *cpufreq_global_kobject;
806 EXPORT_SYMBOL(cpufreq_global_kobject);
808 static int cpufreq_global_kobject_usage;
810 int cpufreq_get_global_kobject(void)
812 if (!cpufreq_global_kobject_usage++)
813 return kobject_add(cpufreq_global_kobject,
814 &cpu_subsys.dev_root->kobj, "%s", "cpufreq");
818 EXPORT_SYMBOL(cpufreq_get_global_kobject);
820 void cpufreq_put_global_kobject(void)
822 if (!--cpufreq_global_kobject_usage)
823 kobject_del(cpufreq_global_kobject);
825 EXPORT_SYMBOL(cpufreq_put_global_kobject);
827 int cpufreq_sysfs_create_file(const struct attribute *attr)
829 int ret = cpufreq_get_global_kobject();
832 ret = sysfs_create_file(cpufreq_global_kobject, attr);
834 cpufreq_put_global_kobject();
839 EXPORT_SYMBOL(cpufreq_sysfs_create_file);
841 void cpufreq_sysfs_remove_file(const struct attribute *attr)
843 sysfs_remove_file(cpufreq_global_kobject, attr);
844 cpufreq_put_global_kobject();
846 EXPORT_SYMBOL(cpufreq_sysfs_remove_file);
848 /* symlink affected CPUs */
849 static int cpufreq_add_dev_symlink(struct cpufreq_policy *policy)
854 for_each_cpu(j, policy->cpus) {
855 struct device *cpu_dev;
857 if (j == policy->cpu)
860 pr_debug("Adding link for CPU: %u\n", j);
861 cpu_dev = get_cpu_device(j);
862 ret = sysfs_create_link(&cpu_dev->kobj, &policy->kobj,
870 static int cpufreq_add_dev_interface(struct cpufreq_policy *policy,
873 struct freq_attr **drv_attr;
876 /* prepare interface data */
877 ret = kobject_init_and_add(&policy->kobj, &ktype_cpufreq,
878 &dev->kobj, "cpufreq");
882 /* set up files for this cpu device */
883 drv_attr = cpufreq_driver->attr;
884 while ((drv_attr) && (*drv_attr)) {
885 ret = sysfs_create_file(&policy->kobj, &((*drv_attr)->attr));
887 goto err_out_kobj_put;
890 if (cpufreq_driver->get) {
891 ret = sysfs_create_file(&policy->kobj, &cpuinfo_cur_freq.attr);
893 goto err_out_kobj_put;
896 ret = sysfs_create_file(&policy->kobj, &scaling_cur_freq.attr);
898 goto err_out_kobj_put;
900 if (cpufreq_driver->bios_limit) {
901 ret = sysfs_create_file(&policy->kobj, &bios_limit.attr);
903 goto err_out_kobj_put;
906 ret = cpufreq_add_dev_symlink(policy);
908 goto err_out_kobj_put;
913 kobject_put(&policy->kobj);
914 wait_for_completion(&policy->kobj_unregister);
918 static void cpufreq_init_policy(struct cpufreq_policy *policy)
920 struct cpufreq_governor *gov = NULL;
921 struct cpufreq_policy new_policy;
924 memcpy(&new_policy, policy, sizeof(*policy));
926 /* Update governor of new_policy to the governor used before hotplug */
927 gov = __find_governor(per_cpu(cpufreq_cpu_governor, policy->cpu));
929 pr_debug("Restoring governor %s for cpu %d\n",
930 policy->governor->name, policy->cpu);
932 gov = CPUFREQ_DEFAULT_GOVERNOR;
934 new_policy.governor = gov;
936 /* Use the default policy if its valid. */
937 if (cpufreq_driver->setpolicy)
938 cpufreq_parse_governor(gov->name, &new_policy.policy, NULL);
940 /* set default policy */
941 ret = cpufreq_set_policy(policy, &new_policy);
943 pr_debug("setting policy failed\n");
944 if (cpufreq_driver->exit)
945 cpufreq_driver->exit(policy);
949 #ifdef CONFIG_HOTPLUG_CPU
950 static int cpufreq_add_policy_cpu(struct cpufreq_policy *policy,
951 unsigned int cpu, struct device *dev)
957 ret = __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
959 pr_err("%s: Failed to stop governor\n", __func__);
964 down_write(&policy->rwsem);
966 write_lock_irqsave(&cpufreq_driver_lock, flags);
968 cpumask_set_cpu(cpu, policy->cpus);
969 per_cpu(cpufreq_cpu_data, cpu) = policy;
970 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
972 up_write(&policy->rwsem);
975 ret = __cpufreq_governor(policy, CPUFREQ_GOV_START);
977 ret = __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
980 pr_err("%s: Failed to start governor\n", __func__);
985 return sysfs_create_link(&dev->kobj, &policy->kobj, "cpufreq");
989 static struct cpufreq_policy *cpufreq_policy_restore(unsigned int cpu)
991 struct cpufreq_policy *policy;
994 read_lock_irqsave(&cpufreq_driver_lock, flags);
996 policy = per_cpu(cpufreq_cpu_data_fallback, cpu);
998 read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1000 policy->governor = NULL;
1005 static struct cpufreq_policy *cpufreq_policy_alloc(void)
1007 struct cpufreq_policy *policy;
1009 policy = kzalloc(sizeof(*policy), GFP_KERNEL);
1013 if (!alloc_cpumask_var(&policy->cpus, GFP_KERNEL))
1014 goto err_free_policy;
1016 if (!zalloc_cpumask_var(&policy->related_cpus, GFP_KERNEL))
1017 goto err_free_cpumask;
1019 INIT_LIST_HEAD(&policy->policy_list);
1020 init_rwsem(&policy->rwsem);
1021 spin_lock_init(&policy->transition_lock);
1022 init_waitqueue_head(&policy->transition_wait);
1027 free_cpumask_var(policy->cpus);
1034 static void cpufreq_policy_put_kobj(struct cpufreq_policy *policy)
1036 struct kobject *kobj;
1037 struct completion *cmp;
1039 blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1040 CPUFREQ_REMOVE_POLICY, policy);
1042 down_read(&policy->rwsem);
1043 kobj = &policy->kobj;
1044 cmp = &policy->kobj_unregister;
1045 up_read(&policy->rwsem);
1049 * We need to make sure that the underlying kobj is
1050 * actually not referenced anymore by anybody before we
1051 * proceed with unloading.
1053 pr_debug("waiting for dropping of refcount\n");
1054 wait_for_completion(cmp);
1055 pr_debug("wait complete\n");
1058 static void cpufreq_policy_free(struct cpufreq_policy *policy)
1060 free_cpumask_var(policy->related_cpus);
1061 free_cpumask_var(policy->cpus);
1065 static void update_policy_cpu(struct cpufreq_policy *policy, unsigned int cpu)
1067 if (WARN_ON(cpu == policy->cpu))
1070 down_write(&policy->rwsem);
1072 policy->last_cpu = policy->cpu;
1075 up_write(&policy->rwsem);
1077 blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1078 CPUFREQ_UPDATE_POLICY_CPU, policy);
1081 static int __cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
1083 unsigned int j, cpu = dev->id;
1085 struct cpufreq_policy *policy;
1086 unsigned long flags;
1087 bool recover_policy = cpufreq_suspended;
1088 #ifdef CONFIG_HOTPLUG_CPU
1089 struct cpufreq_policy *tpolicy;
1092 if (cpu_is_offline(cpu))
1095 pr_debug("adding CPU %u\n", cpu);
1098 /* check whether a different CPU already registered this
1099 * CPU because it is in the same boat. */
1100 policy = cpufreq_cpu_get(cpu);
1101 if (unlikely(policy)) {
1102 cpufreq_cpu_put(policy);
1107 if (!down_read_trylock(&cpufreq_rwsem))
1110 #ifdef CONFIG_HOTPLUG_CPU
1111 /* Check if this cpu was hot-unplugged earlier and has siblings */
1112 read_lock_irqsave(&cpufreq_driver_lock, flags);
1113 list_for_each_entry(tpolicy, &cpufreq_policy_list, policy_list) {
1114 if (cpumask_test_cpu(cpu, tpolicy->related_cpus)) {
1115 read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1116 ret = cpufreq_add_policy_cpu(tpolicy, cpu, dev);
1117 up_read(&cpufreq_rwsem);
1121 read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1125 * Restore the saved policy when doing light-weight init and fall back
1126 * to the full init if that fails.
1128 policy = recover_policy ? cpufreq_policy_restore(cpu) : NULL;
1130 recover_policy = false;
1131 policy = cpufreq_policy_alloc();
1137 * In the resume path, since we restore a saved policy, the assignment
1138 * to policy->cpu is like an update of the existing policy, rather than
1139 * the creation of a brand new one. So we need to perform this update
1140 * by invoking update_policy_cpu().
1142 if (recover_policy && cpu != policy->cpu)
1143 update_policy_cpu(policy, cpu);
1147 cpumask_copy(policy->cpus, cpumask_of(cpu));
1149 init_completion(&policy->kobj_unregister);
1150 INIT_WORK(&policy->update, handle_update);
1152 /* call driver. From then on the cpufreq must be able
1153 * to accept all calls to ->verify and ->setpolicy for this CPU
1155 ret = cpufreq_driver->init(policy);
1157 pr_debug("initialization failed\n");
1158 goto err_set_policy_cpu;
1161 /* related cpus should atleast have policy->cpus */
1162 cpumask_or(policy->related_cpus, policy->related_cpus, policy->cpus);
1165 * affected cpus must always be the one, which are online. We aren't
1166 * managing offline cpus here.
1168 cpumask_and(policy->cpus, policy->cpus, cpu_online_mask);
1170 if (!recover_policy) {
1171 policy->user_policy.min = policy->min;
1172 policy->user_policy.max = policy->max;
1175 down_write(&policy->rwsem);
1176 write_lock_irqsave(&cpufreq_driver_lock, flags);
1177 for_each_cpu(j, policy->cpus)
1178 per_cpu(cpufreq_cpu_data, j) = policy;
1179 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1181 if (cpufreq_driver->get && !cpufreq_driver->setpolicy) {
1182 policy->cur = cpufreq_driver->get(policy->cpu);
1184 pr_err("%s: ->get() failed\n", __func__);
1190 * Sometimes boot loaders set CPU frequency to a value outside of
1191 * frequency table present with cpufreq core. In such cases CPU might be
1192 * unstable if it has to run on that frequency for long duration of time
1193 * and so its better to set it to a frequency which is specified in
1194 * freq-table. This also makes cpufreq stats inconsistent as
1195 * cpufreq-stats would fail to register because current frequency of CPU
1196 * isn't found in freq-table.
1198 * Because we don't want this change to effect boot process badly, we go
1199 * for the next freq which is >= policy->cur ('cur' must be set by now,
1200 * otherwise we will end up setting freq to lowest of the table as 'cur'
1201 * is initialized to zero).
1203 * We are passing target-freq as "policy->cur - 1" otherwise
1204 * __cpufreq_driver_target() would simply fail, as policy->cur will be
1205 * equal to target-freq.
1207 if ((cpufreq_driver->flags & CPUFREQ_NEED_INITIAL_FREQ_CHECK)
1209 /* Are we running at unknown frequency ? */
1210 ret = cpufreq_frequency_table_get_index(policy, policy->cur);
1211 if (ret == -EINVAL) {
1212 /* Warn user and fix it */
1213 pr_warn("%s: CPU%d: Running at unlisted freq: %u KHz\n",
1214 __func__, policy->cpu, policy->cur);
1215 ret = __cpufreq_driver_target(policy, policy->cur - 1,
1216 CPUFREQ_RELATION_L);
1219 * Reaching here after boot in a few seconds may not
1220 * mean that system will remain stable at "unknown"
1221 * frequency for longer duration. Hence, a BUG_ON().
1224 pr_warn("%s: CPU%d: Unlisted initial frequency changed to: %u KHz\n",
1225 __func__, policy->cpu, policy->cur);
1229 blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1230 CPUFREQ_START, policy);
1232 if (!recover_policy) {
1233 ret = cpufreq_add_dev_interface(policy, dev);
1235 goto err_out_unregister;
1236 blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1237 CPUFREQ_CREATE_POLICY, policy);
1240 write_lock_irqsave(&cpufreq_driver_lock, flags);
1241 list_add(&policy->policy_list, &cpufreq_policy_list);
1242 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1244 cpufreq_init_policy(policy);
1246 if (!recover_policy) {
1247 policy->user_policy.policy = policy->policy;
1248 policy->user_policy.governor = policy->governor;
1250 up_write(&policy->rwsem);
1252 kobject_uevent(&policy->kobj, KOBJ_ADD);
1253 up_read(&cpufreq_rwsem);
1255 pr_debug("initialization complete\n");
1261 write_lock_irqsave(&cpufreq_driver_lock, flags);
1262 for_each_cpu(j, policy->cpus)
1263 per_cpu(cpufreq_cpu_data, j) = NULL;
1264 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1266 if (cpufreq_driver->exit)
1267 cpufreq_driver->exit(policy);
1269 if (recover_policy) {
1270 /* Do not leave stale fallback data behind. */
1271 per_cpu(cpufreq_cpu_data_fallback, cpu) = NULL;
1272 cpufreq_policy_put_kobj(policy);
1274 cpufreq_policy_free(policy);
1277 up_read(&cpufreq_rwsem);
1283 * cpufreq_add_dev - add a CPU device
1285 * Adds the cpufreq interface for a CPU device.
1287 * The Oracle says: try running cpufreq registration/unregistration concurrently
1288 * with with cpu hotplugging and all hell will break loose. Tried to clean this
1289 * mess up, but more thorough testing is needed. - Mathieu
1291 static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
1293 return __cpufreq_add_dev(dev, sif);
1296 static int cpufreq_nominate_new_policy_cpu(struct cpufreq_policy *policy,
1297 unsigned int old_cpu)
1299 struct device *cpu_dev;
1302 /* first sibling now owns the new sysfs dir */
1303 cpu_dev = get_cpu_device(cpumask_any_but(policy->cpus, old_cpu));
1305 sysfs_remove_link(&cpu_dev->kobj, "cpufreq");
1306 ret = kobject_move(&policy->kobj, &cpu_dev->kobj);
1308 pr_err("%s: Failed to move kobj: %d\n", __func__, ret);
1310 down_write(&policy->rwsem);
1311 cpumask_set_cpu(old_cpu, policy->cpus);
1312 up_write(&policy->rwsem);
1314 ret = sysfs_create_link(&cpu_dev->kobj, &policy->kobj,
1323 static int __cpufreq_remove_dev_prepare(struct device *dev,
1324 struct subsys_interface *sif)
1326 unsigned int cpu = dev->id, cpus;
1328 unsigned long flags;
1329 struct cpufreq_policy *policy;
1331 pr_debug("%s: unregistering CPU %u\n", __func__, cpu);
1333 write_lock_irqsave(&cpufreq_driver_lock, flags);
1335 policy = per_cpu(cpufreq_cpu_data, cpu);
1337 /* Save the policy somewhere when doing a light-weight tear-down */
1338 if (cpufreq_suspended)
1339 per_cpu(cpufreq_cpu_data_fallback, cpu) = policy;
1341 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1344 pr_debug("%s: No cpu_data found\n", __func__);
1349 ret = __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
1351 pr_err("%s: Failed to stop governor\n", __func__);
1356 if (!cpufreq_driver->setpolicy)
1357 strncpy(per_cpu(cpufreq_cpu_governor, cpu),
1358 policy->governor->name, CPUFREQ_NAME_LEN);
1360 down_read(&policy->rwsem);
1361 cpus = cpumask_weight(policy->cpus);
1362 up_read(&policy->rwsem);
1364 if (cpu != policy->cpu) {
1365 sysfs_remove_link(&dev->kobj, "cpufreq");
1366 } else if (cpus > 1) {
1367 new_cpu = cpufreq_nominate_new_policy_cpu(policy, cpu);
1369 update_policy_cpu(policy, new_cpu);
1371 if (!cpufreq_suspended)
1372 pr_debug("%s: policy Kobject moved to cpu: %d from: %d\n",
1373 __func__, new_cpu, cpu);
1375 } else if (cpufreq_driver->stop_cpu && cpufreq_driver->setpolicy) {
1376 cpufreq_driver->stop_cpu(policy);
1382 static int __cpufreq_remove_dev_finish(struct device *dev,
1383 struct subsys_interface *sif)
1385 unsigned int cpu = dev->id, cpus;
1387 unsigned long flags;
1388 struct cpufreq_policy *policy;
1390 read_lock_irqsave(&cpufreq_driver_lock, flags);
1391 policy = per_cpu(cpufreq_cpu_data, cpu);
1392 read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1395 pr_debug("%s: No cpu_data found\n", __func__);
1399 down_write(&policy->rwsem);
1400 cpus = cpumask_weight(policy->cpus);
1403 cpumask_clear_cpu(cpu, policy->cpus);
1404 up_write(&policy->rwsem);
1406 /* If cpu is last user of policy, free policy */
1409 ret = __cpufreq_governor(policy,
1410 CPUFREQ_GOV_POLICY_EXIT);
1412 pr_err("%s: Failed to exit governor\n",
1418 if (!cpufreq_suspended)
1419 cpufreq_policy_put_kobj(policy);
1422 * Perform the ->exit() even during light-weight tear-down,
1423 * since this is a core component, and is essential for the
1424 * subsequent light-weight ->init() to succeed.
1426 if (cpufreq_driver->exit)
1427 cpufreq_driver->exit(policy);
1429 /* Remove policy from list of active policies */
1430 write_lock_irqsave(&cpufreq_driver_lock, flags);
1431 list_del(&policy->policy_list);
1432 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1434 if (!cpufreq_suspended)
1435 cpufreq_policy_free(policy);
1436 } else if (has_target()) {
1437 ret = __cpufreq_governor(policy, CPUFREQ_GOV_START);
1439 ret = __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
1442 pr_err("%s: Failed to start governor\n", __func__);
1447 per_cpu(cpufreq_cpu_data, cpu) = NULL;
1452 * cpufreq_remove_dev - remove a CPU device
1454 * Removes the cpufreq interface for a CPU device.
1456 static int cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
1458 unsigned int cpu = dev->id;
1461 if (cpu_is_offline(cpu))
1464 ret = __cpufreq_remove_dev_prepare(dev, sif);
1467 ret = __cpufreq_remove_dev_finish(dev, sif);
1472 static void handle_update(struct work_struct *work)
1474 struct cpufreq_policy *policy =
1475 container_of(work, struct cpufreq_policy, update);
1476 unsigned int cpu = policy->cpu;
1477 pr_debug("handle_update for cpu %u called\n", cpu);
1478 cpufreq_update_policy(cpu);
1482 * cpufreq_out_of_sync - If actual and saved CPU frequency differs, we're
1485 * @old_freq: CPU frequency the kernel thinks the CPU runs at
1486 * @new_freq: CPU frequency the CPU actually runs at
1488 * We adjust to current frequency first, and need to clean up later.
1489 * So either call to cpufreq_update_policy() or schedule handle_update()).
1491 static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq,
1492 unsigned int new_freq)
1494 struct cpufreq_policy *policy;
1495 struct cpufreq_freqs freqs;
1496 unsigned long flags;
1498 pr_debug("Warning: CPU frequency out of sync: cpufreq and timing core thinks of %u, is %u kHz\n",
1499 old_freq, new_freq);
1501 freqs.old = old_freq;
1502 freqs.new = new_freq;
1504 read_lock_irqsave(&cpufreq_driver_lock, flags);
1505 policy = per_cpu(cpufreq_cpu_data, cpu);
1506 read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1508 cpufreq_freq_transition_begin(policy, &freqs);
1509 cpufreq_freq_transition_end(policy, &freqs, 0);
1513 * cpufreq_quick_get - get the CPU frequency (in kHz) from policy->cur
1516 * This is the last known freq, without actually getting it from the driver.
1517 * Return value will be same as what is shown in scaling_cur_freq in sysfs.
1519 unsigned int cpufreq_quick_get(unsigned int cpu)
1521 struct cpufreq_policy *policy;
1522 unsigned int ret_freq = 0;
1524 if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get)
1525 return cpufreq_driver->get(cpu);
1527 policy = cpufreq_cpu_get(cpu);
1529 ret_freq = policy->cur;
1530 cpufreq_cpu_put(policy);
1535 EXPORT_SYMBOL(cpufreq_quick_get);
1538 * cpufreq_quick_get_max - get the max reported CPU frequency for this CPU
1541 * Just return the max possible frequency for a given CPU.
1543 unsigned int cpufreq_quick_get_max(unsigned int cpu)
1545 struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1546 unsigned int ret_freq = 0;
1549 ret_freq = policy->max;
1550 cpufreq_cpu_put(policy);
1555 EXPORT_SYMBOL(cpufreq_quick_get_max);
1557 static unsigned int __cpufreq_get(unsigned int cpu)
1559 struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
1560 unsigned int ret_freq = 0;
1562 if (!cpufreq_driver->get)
1565 ret_freq = cpufreq_driver->get(cpu);
1567 if (ret_freq && policy->cur &&
1568 !(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) {
1569 /* verify no discrepancy between actual and
1570 saved value exists */
1571 if (unlikely(ret_freq != policy->cur)) {
1572 cpufreq_out_of_sync(cpu, policy->cur, ret_freq);
1573 schedule_work(&policy->update);
1581 * cpufreq_get - get the current CPU frequency (in kHz)
1584 * Get the CPU current (static) CPU frequency
1586 unsigned int cpufreq_get(unsigned int cpu)
1588 struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1589 unsigned int ret_freq = 0;
1592 down_read(&policy->rwsem);
1593 ret_freq = __cpufreq_get(cpu);
1594 up_read(&policy->rwsem);
1596 cpufreq_cpu_put(policy);
1601 EXPORT_SYMBOL(cpufreq_get);
1603 static struct subsys_interface cpufreq_interface = {
1605 .subsys = &cpu_subsys,
1606 .add_dev = cpufreq_add_dev,
1607 .remove_dev = cpufreq_remove_dev,
1611 * In case platform wants some specific frequency to be configured
1614 int cpufreq_generic_suspend(struct cpufreq_policy *policy)
1618 if (!policy->suspend_freq) {
1619 pr_err("%s: suspend_freq can't be zero\n", __func__);
1623 pr_debug("%s: Setting suspend-freq: %u\n", __func__,
1624 policy->suspend_freq);
1626 ret = __cpufreq_driver_target(policy, policy->suspend_freq,
1627 CPUFREQ_RELATION_H);
1629 pr_err("%s: unable to set suspend-freq: %u. err: %d\n",
1630 __func__, policy->suspend_freq, ret);
1634 EXPORT_SYMBOL(cpufreq_generic_suspend);
1637 * cpufreq_suspend() - Suspend CPUFreq governors
1639 * Called during system wide Suspend/Hibernate cycles for suspending governors
1640 * as some platforms can't change frequency after this point in suspend cycle.
1641 * Because some of the devices (like: i2c, regulators, etc) they use for
1642 * changing frequency are suspended quickly after this point.
1644 void cpufreq_suspend(void)
1646 struct cpufreq_policy *policy;
1648 if (!cpufreq_driver)
1654 pr_debug("%s: Suspending Governors\n", __func__);
1656 list_for_each_entry(policy, &cpufreq_policy_list, policy_list) {
1657 if (__cpufreq_governor(policy, CPUFREQ_GOV_STOP))
1658 pr_err("%s: Failed to stop governor for policy: %p\n",
1660 else if (cpufreq_driver->suspend
1661 && cpufreq_driver->suspend(policy))
1662 pr_err("%s: Failed to suspend driver: %p\n", __func__,
1666 cpufreq_suspended = true;
1670 * cpufreq_resume() - Resume CPUFreq governors
1672 * Called during system wide Suspend/Hibernate cycle for resuming governors that
1673 * are suspended with cpufreq_suspend().
1675 void cpufreq_resume(void)
1677 struct cpufreq_policy *policy;
1679 if (!cpufreq_driver)
1685 pr_debug("%s: Resuming Governors\n", __func__);
1687 cpufreq_suspended = false;
1689 list_for_each_entry(policy, &cpufreq_policy_list, policy_list) {
1690 if (cpufreq_driver->resume && cpufreq_driver->resume(policy))
1691 pr_err("%s: Failed to resume driver: %p\n", __func__,
1693 else if (__cpufreq_governor(policy, CPUFREQ_GOV_START)
1694 || __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS))
1695 pr_err("%s: Failed to start governor for policy: %p\n",
1699 * schedule call cpufreq_update_policy() for boot CPU, i.e. last
1700 * policy in list. It will verify that the current freq is in
1701 * sync with what we believe it to be.
1703 if (list_is_last(&policy->policy_list, &cpufreq_policy_list))
1704 schedule_work(&policy->update);
1709 * cpufreq_get_current_driver - return current driver's name
1711 * Return the name string of the currently loaded cpufreq driver
1714 const char *cpufreq_get_current_driver(void)
1717 return cpufreq_driver->name;
1721 EXPORT_SYMBOL_GPL(cpufreq_get_current_driver);
1723 /*********************************************************************
1724 * NOTIFIER LISTS INTERFACE *
1725 *********************************************************************/
1728 * cpufreq_register_notifier - register a driver with cpufreq
1729 * @nb: notifier function to register
1730 * @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1732 * Add a driver to one of two lists: either a list of drivers that
1733 * are notified about clock rate changes (once before and once after
1734 * the transition), or a list of drivers that are notified about
1735 * changes in cpufreq policy.
1737 * This function may sleep, and has the same return conditions as
1738 * blocking_notifier_chain_register.
1740 int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list)
1744 if (cpufreq_disabled())
1747 WARN_ON(!init_cpufreq_transition_notifier_list_called);
1750 case CPUFREQ_TRANSITION_NOTIFIER:
1751 ret = srcu_notifier_chain_register(
1752 &cpufreq_transition_notifier_list, nb);
1754 case CPUFREQ_POLICY_NOTIFIER:
1755 ret = blocking_notifier_chain_register(
1756 &cpufreq_policy_notifier_list, nb);
1764 EXPORT_SYMBOL(cpufreq_register_notifier);
1767 * cpufreq_unregister_notifier - unregister a driver with cpufreq
1768 * @nb: notifier block to be unregistered
1769 * @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1771 * Remove a driver from the CPU frequency notifier list.
1773 * This function may sleep, and has the same return conditions as
1774 * blocking_notifier_chain_unregister.
1776 int cpufreq_unregister_notifier(struct notifier_block *nb, unsigned int list)
1780 if (cpufreq_disabled())
1784 case CPUFREQ_TRANSITION_NOTIFIER:
1785 ret = srcu_notifier_chain_unregister(
1786 &cpufreq_transition_notifier_list, nb);
1788 case CPUFREQ_POLICY_NOTIFIER:
1789 ret = blocking_notifier_chain_unregister(
1790 &cpufreq_policy_notifier_list, nb);
1798 EXPORT_SYMBOL(cpufreq_unregister_notifier);
1801 /*********************************************************************
1803 *********************************************************************/
1805 int __cpufreq_driver_target(struct cpufreq_policy *policy,
1806 unsigned int target_freq,
1807 unsigned int relation)
1809 int retval = -EINVAL;
1810 unsigned int old_target_freq = target_freq;
1812 if (cpufreq_disabled())
1815 /* Make sure that target_freq is within supported range */
1816 if (target_freq > policy->max)
1817 target_freq = policy->max;
1818 if (target_freq < policy->min)
1819 target_freq = policy->min;
1821 pr_debug("target for CPU %u: %u kHz, relation %u, requested %u kHz\n",
1822 policy->cpu, target_freq, relation, old_target_freq);
1825 * This might look like a redundant call as we are checking it again
1826 * after finding index. But it is left intentionally for cases where
1827 * exactly same freq is called again and so we can save on few function
1830 if (target_freq == policy->cur)
1833 if (cpufreq_driver->target)
1834 retval = cpufreq_driver->target(policy, target_freq, relation);
1835 else if (cpufreq_driver->target_index) {
1836 struct cpufreq_frequency_table *freq_table;
1837 struct cpufreq_freqs freqs;
1841 freq_table = cpufreq_frequency_get_table(policy->cpu);
1842 if (unlikely(!freq_table)) {
1843 pr_err("%s: Unable to find freq_table\n", __func__);
1847 retval = cpufreq_frequency_table_target(policy, freq_table,
1848 target_freq, relation, &index);
1849 if (unlikely(retval)) {
1850 pr_err("%s: Unable to find matching freq\n", __func__);
1854 if (freq_table[index].frequency == policy->cur) {
1859 notify = !(cpufreq_driver->flags & CPUFREQ_ASYNC_NOTIFICATION);
1862 freqs.old = policy->cur;
1863 freqs.new = freq_table[index].frequency;
1866 pr_debug("%s: cpu: %d, oldfreq: %u, new freq: %u\n",
1867 __func__, policy->cpu, freqs.old, freqs.new);
1869 cpufreq_freq_transition_begin(policy, &freqs);
1872 retval = cpufreq_driver->target_index(policy, index);
1874 pr_err("%s: Failed to change cpu frequency: %d\n",
1878 cpufreq_freq_transition_end(policy, &freqs, retval);
1884 EXPORT_SYMBOL_GPL(__cpufreq_driver_target);
1886 int cpufreq_driver_target(struct cpufreq_policy *policy,
1887 unsigned int target_freq,
1888 unsigned int relation)
1892 down_write(&policy->rwsem);
1894 ret = __cpufreq_driver_target(policy, target_freq, relation);
1896 up_write(&policy->rwsem);
1900 EXPORT_SYMBOL_GPL(cpufreq_driver_target);
1903 * when "event" is CPUFREQ_GOV_LIMITS
1906 static int __cpufreq_governor(struct cpufreq_policy *policy,
1911 /* Only must be defined when default governor is known to have latency
1912 restrictions, like e.g. conservative or ondemand.
1913 That this is the case is already ensured in Kconfig
1915 #ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE
1916 struct cpufreq_governor *gov = &cpufreq_gov_performance;
1918 struct cpufreq_governor *gov = NULL;
1921 /* Don't start any governor operations if we are entering suspend */
1922 if (cpufreq_suspended)
1925 if (policy->governor->max_transition_latency &&
1926 policy->cpuinfo.transition_latency >
1927 policy->governor->max_transition_latency) {
1931 pr_warn("%s governor failed, too long transition latency of HW, fallback to %s governor\n",
1932 policy->governor->name, gov->name);
1933 policy->governor = gov;
1937 if (event == CPUFREQ_GOV_POLICY_INIT)
1938 if (!try_module_get(policy->governor->owner))
1941 pr_debug("__cpufreq_governor for CPU %u, event %u\n",
1942 policy->cpu, event);
1944 mutex_lock(&cpufreq_governor_lock);
1945 if ((policy->governor_enabled && event == CPUFREQ_GOV_START)
1946 || (!policy->governor_enabled
1947 && (event == CPUFREQ_GOV_LIMITS || event == CPUFREQ_GOV_STOP))) {
1948 mutex_unlock(&cpufreq_governor_lock);
1952 if (event == CPUFREQ_GOV_STOP)
1953 policy->governor_enabled = false;
1954 else if (event == CPUFREQ_GOV_START)
1955 policy->governor_enabled = true;
1957 mutex_unlock(&cpufreq_governor_lock);
1959 ret = policy->governor->governor(policy, event);
1962 if (event == CPUFREQ_GOV_POLICY_INIT)
1963 policy->governor->initialized++;
1964 else if (event == CPUFREQ_GOV_POLICY_EXIT)
1965 policy->governor->initialized--;
1967 /* Restore original values */
1968 mutex_lock(&cpufreq_governor_lock);
1969 if (event == CPUFREQ_GOV_STOP)
1970 policy->governor_enabled = true;
1971 else if (event == CPUFREQ_GOV_START)
1972 policy->governor_enabled = false;
1973 mutex_unlock(&cpufreq_governor_lock);
1976 if (((event == CPUFREQ_GOV_POLICY_INIT) && ret) ||
1977 ((event == CPUFREQ_GOV_POLICY_EXIT) && !ret))
1978 module_put(policy->governor->owner);
1983 int cpufreq_register_governor(struct cpufreq_governor *governor)
1990 if (cpufreq_disabled())
1993 mutex_lock(&cpufreq_governor_mutex);
1995 governor->initialized = 0;
1997 if (__find_governor(governor->name) == NULL) {
1999 list_add(&governor->governor_list, &cpufreq_governor_list);
2002 mutex_unlock(&cpufreq_governor_mutex);
2005 EXPORT_SYMBOL_GPL(cpufreq_register_governor);
2007 void cpufreq_unregister_governor(struct cpufreq_governor *governor)
2014 if (cpufreq_disabled())
2017 for_each_present_cpu(cpu) {
2018 if (cpu_online(cpu))
2020 if (!strcmp(per_cpu(cpufreq_cpu_governor, cpu), governor->name))
2021 strcpy(per_cpu(cpufreq_cpu_governor, cpu), "\0");
2024 mutex_lock(&cpufreq_governor_mutex);
2025 list_del(&governor->governor_list);
2026 mutex_unlock(&cpufreq_governor_mutex);
2029 EXPORT_SYMBOL_GPL(cpufreq_unregister_governor);
2032 /*********************************************************************
2033 * POLICY INTERFACE *
2034 *********************************************************************/
2037 * cpufreq_get_policy - get the current cpufreq_policy
2038 * @policy: struct cpufreq_policy into which the current cpufreq_policy
2041 * Reads the current cpufreq policy.
2043 int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
2045 struct cpufreq_policy *cpu_policy;
2049 cpu_policy = cpufreq_cpu_get(cpu);
2053 memcpy(policy, cpu_policy, sizeof(*policy));
2055 cpufreq_cpu_put(cpu_policy);
2058 EXPORT_SYMBOL(cpufreq_get_policy);
2061 * policy : current policy.
2062 * new_policy: policy to be set.
2064 static int cpufreq_set_policy(struct cpufreq_policy *policy,
2065 struct cpufreq_policy *new_policy)
2067 struct cpufreq_governor *old_gov;
2070 pr_debug("setting new policy for CPU %u: %u - %u kHz\n",
2071 new_policy->cpu, new_policy->min, new_policy->max);
2073 memcpy(&new_policy->cpuinfo, &policy->cpuinfo, sizeof(policy->cpuinfo));
2075 if (new_policy->min > policy->max || new_policy->max < policy->min)
2078 /* verify the cpu speed can be set within this limit */
2079 ret = cpufreq_driver->verify(new_policy);
2083 /* adjust if necessary - all reasons */
2084 blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2085 CPUFREQ_ADJUST, new_policy);
2087 /* adjust if necessary - hardware incompatibility*/
2088 blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2089 CPUFREQ_INCOMPATIBLE, new_policy);
2092 * verify the cpu speed can be set within this limit, which might be
2093 * different to the first one
2095 ret = cpufreq_driver->verify(new_policy);
2099 /* notification of the new policy */
2100 blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2101 CPUFREQ_NOTIFY, new_policy);
2103 policy->min = new_policy->min;
2104 policy->max = new_policy->max;
2106 pr_debug("new min and max freqs are %u - %u kHz\n",
2107 policy->min, policy->max);
2109 if (cpufreq_driver->setpolicy) {
2110 policy->policy = new_policy->policy;
2111 pr_debug("setting range\n");
2112 return cpufreq_driver->setpolicy(new_policy);
2115 if (new_policy->governor == policy->governor)
2118 pr_debug("governor switch\n");
2120 /* save old, working values */
2121 old_gov = policy->governor;
2122 /* end old governor */
2124 __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
2125 up_write(&policy->rwsem);
2126 __cpufreq_governor(policy, CPUFREQ_GOV_POLICY_EXIT);
2127 down_write(&policy->rwsem);
2130 /* start new governor */
2131 policy->governor = new_policy->governor;
2132 if (!__cpufreq_governor(policy, CPUFREQ_GOV_POLICY_INIT)) {
2133 if (!__cpufreq_governor(policy, CPUFREQ_GOV_START))
2136 up_write(&policy->rwsem);
2137 __cpufreq_governor(policy, CPUFREQ_GOV_POLICY_EXIT);
2138 down_write(&policy->rwsem);
2141 /* new governor failed, so re-start old one */
2142 pr_debug("starting governor %s failed\n", policy->governor->name);
2144 policy->governor = old_gov;
2145 __cpufreq_governor(policy, CPUFREQ_GOV_POLICY_INIT);
2146 __cpufreq_governor(policy, CPUFREQ_GOV_START);
2152 pr_debug("governor: change or update limits\n");
2153 return __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
2157 * cpufreq_update_policy - re-evaluate an existing cpufreq policy
2158 * @cpu: CPU which shall be re-evaluated
2160 * Useful for policy notifiers which have different necessities
2161 * at different times.
2163 int cpufreq_update_policy(unsigned int cpu)
2165 struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
2166 struct cpufreq_policy new_policy;
2174 down_write(&policy->rwsem);
2176 pr_debug("updating policy for CPU %u\n", cpu);
2177 memcpy(&new_policy, policy, sizeof(*policy));
2178 new_policy.min = policy->user_policy.min;
2179 new_policy.max = policy->user_policy.max;
2180 new_policy.policy = policy->user_policy.policy;
2181 new_policy.governor = policy->user_policy.governor;
2184 * BIOS might change freq behind our back
2185 * -> ask driver for current freq and notify governors about a change
2187 if (cpufreq_driver->get && !cpufreq_driver->setpolicy) {
2188 new_policy.cur = cpufreq_driver->get(cpu);
2189 if (WARN_ON(!new_policy.cur)) {
2195 pr_debug("Driver did not initialize current freq\n");
2196 policy->cur = new_policy.cur;
2198 if (policy->cur != new_policy.cur && has_target())
2199 cpufreq_out_of_sync(cpu, policy->cur,
2204 ret = cpufreq_set_policy(policy, &new_policy);
2206 up_write(&policy->rwsem);
2208 cpufreq_cpu_put(policy);
2212 EXPORT_SYMBOL(cpufreq_update_policy);
2214 static int cpufreq_cpu_callback(struct notifier_block *nfb,
2215 unsigned long action, void *hcpu)
2217 unsigned int cpu = (unsigned long)hcpu;
2220 dev = get_cpu_device(cpu);
2222 switch (action & ~CPU_TASKS_FROZEN) {
2224 __cpufreq_add_dev(dev, NULL);
2227 case CPU_DOWN_PREPARE:
2228 __cpufreq_remove_dev_prepare(dev, NULL);
2232 __cpufreq_remove_dev_finish(dev, NULL);
2235 case CPU_DOWN_FAILED:
2236 __cpufreq_add_dev(dev, NULL);
2243 static struct notifier_block __refdata cpufreq_cpu_notifier = {
2244 .notifier_call = cpufreq_cpu_callback,
2247 /*********************************************************************
2249 *********************************************************************/
2250 static int cpufreq_boost_set_sw(int state)
2252 struct cpufreq_frequency_table *freq_table;
2253 struct cpufreq_policy *policy;
2256 list_for_each_entry(policy, &cpufreq_policy_list, policy_list) {
2257 freq_table = cpufreq_frequency_get_table(policy->cpu);
2259 ret = cpufreq_frequency_table_cpuinfo(policy,
2262 pr_err("%s: Policy frequency update failed\n",
2266 policy->user_policy.max = policy->max;
2267 __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
2274 int cpufreq_boost_trigger_state(int state)
2276 unsigned long flags;
2279 if (cpufreq_driver->boost_enabled == state)
2282 write_lock_irqsave(&cpufreq_driver_lock, flags);
2283 cpufreq_driver->boost_enabled = state;
2284 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2286 ret = cpufreq_driver->set_boost(state);
2288 write_lock_irqsave(&cpufreq_driver_lock, flags);
2289 cpufreq_driver->boost_enabled = !state;
2290 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2292 pr_err("%s: Cannot %s BOOST\n",
2293 __func__, state ? "enable" : "disable");
2299 int cpufreq_boost_supported(void)
2301 if (likely(cpufreq_driver))
2302 return cpufreq_driver->boost_supported;
2306 EXPORT_SYMBOL_GPL(cpufreq_boost_supported);
2308 int cpufreq_boost_enabled(void)
2310 return cpufreq_driver->boost_enabled;
2312 EXPORT_SYMBOL_GPL(cpufreq_boost_enabled);
2314 /*********************************************************************
2315 * REGISTER / UNREGISTER CPUFREQ DRIVER *
2316 *********************************************************************/
2319 * cpufreq_register_driver - register a CPU Frequency driver
2320 * @driver_data: A struct cpufreq_driver containing the values#
2321 * submitted by the CPU Frequency driver.
2323 * Registers a CPU Frequency driver to this core code. This code
2324 * returns zero on success, -EBUSY when another driver got here first
2325 * (and isn't unregistered in the meantime).
2328 int cpufreq_register_driver(struct cpufreq_driver *driver_data)
2330 unsigned long flags;
2333 if (cpufreq_disabled())
2336 if (!driver_data || !driver_data->verify || !driver_data->init ||
2337 !(driver_data->setpolicy || driver_data->target_index ||
2338 driver_data->target) ||
2339 (driver_data->setpolicy && (driver_data->target_index ||
2340 driver_data->target)))
2343 pr_debug("trying to register driver %s\n", driver_data->name);
2345 if (driver_data->setpolicy)
2346 driver_data->flags |= CPUFREQ_CONST_LOOPS;
2348 write_lock_irqsave(&cpufreq_driver_lock, flags);
2349 if (cpufreq_driver) {
2350 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2353 cpufreq_driver = driver_data;
2354 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2356 if (cpufreq_boost_supported()) {
2358 * Check if driver provides function to enable boost -
2359 * if not, use cpufreq_boost_set_sw as default
2361 if (!cpufreq_driver->set_boost)
2362 cpufreq_driver->set_boost = cpufreq_boost_set_sw;
2364 ret = cpufreq_sysfs_create_file(&boost.attr);
2366 pr_err("%s: cannot register global BOOST sysfs file\n",
2368 goto err_null_driver;
2372 ret = subsys_interface_register(&cpufreq_interface);
2374 goto err_boost_unreg;
2376 if (!(cpufreq_driver->flags & CPUFREQ_STICKY)) {
2380 /* check for at least one working CPU */
2381 for (i = 0; i < nr_cpu_ids; i++)
2382 if (cpu_possible(i) && per_cpu(cpufreq_cpu_data, i)) {
2387 /* if all ->init() calls failed, unregister */
2389 pr_debug("no CPU initialized for driver %s\n",
2395 register_hotcpu_notifier(&cpufreq_cpu_notifier);
2396 pr_debug("driver %s up and running\n", driver_data->name);
2400 subsys_interface_unregister(&cpufreq_interface);
2402 if (cpufreq_boost_supported())
2403 cpufreq_sysfs_remove_file(&boost.attr);
2405 write_lock_irqsave(&cpufreq_driver_lock, flags);
2406 cpufreq_driver = NULL;
2407 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2410 EXPORT_SYMBOL_GPL(cpufreq_register_driver);
2413 * cpufreq_unregister_driver - unregister the current CPUFreq driver
2415 * Unregister the current CPUFreq driver. Only call this if you have
2416 * the right to do so, i.e. if you have succeeded in initialising before!
2417 * Returns zero if successful, and -EINVAL if the cpufreq_driver is
2418 * currently not initialised.
2420 int cpufreq_unregister_driver(struct cpufreq_driver *driver)
2422 unsigned long flags;
2424 if (!cpufreq_driver || (driver != cpufreq_driver))
2427 pr_debug("unregistering driver %s\n", driver->name);
2429 subsys_interface_unregister(&cpufreq_interface);
2430 if (cpufreq_boost_supported())
2431 cpufreq_sysfs_remove_file(&boost.attr);
2433 unregister_hotcpu_notifier(&cpufreq_cpu_notifier);
2435 down_write(&cpufreq_rwsem);
2436 write_lock_irqsave(&cpufreq_driver_lock, flags);
2438 cpufreq_driver = NULL;
2440 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2441 up_write(&cpufreq_rwsem);
2445 EXPORT_SYMBOL_GPL(cpufreq_unregister_driver);
2447 static int __init cpufreq_core_init(void)
2449 if (cpufreq_disabled())
2452 cpufreq_global_kobject = kobject_create();
2453 BUG_ON(!cpufreq_global_kobject);
2457 core_initcall(cpufreq_core_init);