Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[cascardo/linux.git] / drivers / cpufreq / cpufreq.c
1 /*
2  *  linux/drivers/cpufreq/cpufreq.c
3  *
4  *  Copyright (C) 2001 Russell King
5  *            (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
6  *            (C) 2013 Viresh Kumar <viresh.kumar@linaro.org>
7  *
8  *  Oct 2005 - Ashok Raj <ashok.raj@intel.com>
9  *      Added handling for CPU hotplug
10  *  Feb 2006 - Jacob Shin <jacob.shin@amd.com>
11  *      Fix handling for CPU hotplug -- affected CPUs
12  *
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.
16  */
17
18 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
19
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>
32
33 /**
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.
37  */
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);
44
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);
47
48 /* Flag to suspend/resume CPUFreq governors */
49 static bool cpufreq_suspended;
50
51 static inline bool has_target(void)
52 {
53         return cpufreq_driver->target_index || cpufreq_driver->target;
54 }
55
56 /*
57  * rwsem to guarantee that cpufreq driver module doesn't unload during critical
58  * sections
59  */
60 static DECLARE_RWSEM(cpufreq_rwsem);
61
62 /* internal prototypes */
63 static int __cpufreq_governor(struct cpufreq_policy *policy,
64                 unsigned int event);
65 static unsigned int __cpufreq_get(unsigned int cpu);
66 static void handle_update(struct work_struct *work);
67
68 /**
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.
74  */
75 static BLOCKING_NOTIFIER_HEAD(cpufreq_policy_notifier_list);
76 static struct srcu_notifier_head cpufreq_transition_notifier_list;
77
78 static bool init_cpufreq_transition_notifier_list_called;
79 static int __init init_cpufreq_transition_notifier_list(void)
80 {
81         srcu_init_notifier_head(&cpufreq_transition_notifier_list);
82         init_cpufreq_transition_notifier_list_called = true;
83         return 0;
84 }
85 pure_initcall(init_cpufreq_transition_notifier_list);
86
87 static int off __read_mostly;
88 static int cpufreq_disabled(void)
89 {
90         return off;
91 }
92 void disable_cpufreq(void)
93 {
94         off = 1;
95 }
96 static LIST_HEAD(cpufreq_governor_list);
97 static DEFINE_MUTEX(cpufreq_governor_mutex);
98
99 bool have_governor_per_policy(void)
100 {
101         return !!(cpufreq_driver->flags & CPUFREQ_HAVE_GOVERNOR_PER_POLICY);
102 }
103 EXPORT_SYMBOL_GPL(have_governor_per_policy);
104
105 struct kobject *get_governor_parent_kobj(struct cpufreq_policy *policy)
106 {
107         if (have_governor_per_policy())
108                 return &policy->kobj;
109         else
110                 return cpufreq_global_kobject;
111 }
112 EXPORT_SYMBOL_GPL(get_governor_parent_kobj);
113
114 static inline u64 get_cpu_idle_time_jiffy(unsigned int cpu, u64 *wall)
115 {
116         u64 idle_time;
117         u64 cur_wall_time;
118         u64 busy_time;
119
120         cur_wall_time = jiffies64_to_cputime64(get_jiffies_64());
121
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];
128
129         idle_time = cur_wall_time - busy_time;
130         if (wall)
131                 *wall = cputime_to_usecs(cur_wall_time);
132
133         return cputime_to_usecs(idle_time);
134 }
135
136 u64 get_cpu_idle_time(unsigned int cpu, u64 *wall, int io_busy)
137 {
138         u64 idle_time = get_cpu_idle_time_us(cpu, io_busy ? wall : NULL);
139
140         if (idle_time == -1ULL)
141                 return get_cpu_idle_time_jiffy(cpu, wall);
142         else if (!io_busy)
143                 idle_time += get_cpu_iowait_time_us(cpu, wall);
144
145         return idle_time;
146 }
147 EXPORT_SYMBOL_GPL(get_cpu_idle_time);
148
149 /*
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
155  */
156 int cpufreq_generic_init(struct cpufreq_policy *policy,
157                 struct cpufreq_frequency_table *table,
158                 unsigned int transition_latency)
159 {
160         int ret;
161
162         ret = cpufreq_table_validate_and_show(policy, table);
163         if (ret) {
164                 pr_err("%s: invalid frequency table: %d\n", __func__, ret);
165                 return ret;
166         }
167
168         policy->cpuinfo.transition_latency = transition_latency;
169
170         /*
171          * The driver only supports the SMP configuartion where all processors
172          * share the clock and voltage and clock.
173          */
174         cpumask_setall(policy->cpus);
175
176         return 0;
177 }
178 EXPORT_SYMBOL_GPL(cpufreq_generic_init);
179
180 unsigned int cpufreq_generic_get(unsigned int cpu)
181 {
182         struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
183
184         if (!policy || IS_ERR(policy->clk)) {
185                 pr_err("%s: No %s associated to cpu: %d\n",
186                        __func__, policy ? "clk" : "policy", cpu);
187                 return 0;
188         }
189
190         return clk_get_rate(policy->clk) / 1000;
191 }
192 EXPORT_SYMBOL_GPL(cpufreq_generic_get);
193
194 /* Only for cpufreq core internal use */
195 struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu)
196 {
197         return per_cpu(cpufreq_cpu_data, cpu);
198 }
199
200 struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu)
201 {
202         struct cpufreq_policy *policy = NULL;
203         unsigned long flags;
204
205         if (cpufreq_disabled() || (cpu >= nr_cpu_ids))
206                 return NULL;
207
208         if (!down_read_trylock(&cpufreq_rwsem))
209                 return NULL;
210
211         /* get the cpufreq driver */
212         read_lock_irqsave(&cpufreq_driver_lock, flags);
213
214         if (cpufreq_driver) {
215                 /* get the CPU */
216                 policy = per_cpu(cpufreq_cpu_data, cpu);
217                 if (policy)
218                         kobject_get(&policy->kobj);
219         }
220
221         read_unlock_irqrestore(&cpufreq_driver_lock, flags);
222
223         if (!policy)
224                 up_read(&cpufreq_rwsem);
225
226         return policy;
227 }
228 EXPORT_SYMBOL_GPL(cpufreq_cpu_get);
229
230 void cpufreq_cpu_put(struct cpufreq_policy *policy)
231 {
232         if (cpufreq_disabled())
233                 return;
234
235         kobject_put(&policy->kobj);
236         up_read(&cpufreq_rwsem);
237 }
238 EXPORT_SYMBOL_GPL(cpufreq_cpu_put);
239
240 /*********************************************************************
241  *            EXTERNALLY AFFECTING FREQUENCY CHANGES                 *
242  *********************************************************************/
243
244 /**
245  * adjust_jiffies - adjust the system "loops_per_jiffy"
246  *
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.
251  */
252 #ifndef CONFIG_SMP
253 static unsigned long l_p_j_ref;
254 static unsigned int l_p_j_ref_freq;
255
256 static void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
257 {
258         if (ci->flags & CPUFREQ_CONST_LOOPS)
259                 return;
260
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);
266         }
267         if (val == CPUFREQ_POSTCHANGE && ci->old != ci->new) {
268                 loops_per_jiffy = cpufreq_scale(l_p_j_ref, l_p_j_ref_freq,
269                                                                 ci->new);
270                 pr_debug("scaling loops_per_jiffy to %lu for frequency %u kHz\n",
271                          loops_per_jiffy, ci->new);
272         }
273 }
274 #else
275 static inline void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
276 {
277         return;
278 }
279 #endif
280
281 static void __cpufreq_notify_transition(struct cpufreq_policy *policy,
282                 struct cpufreq_freqs *freqs, unsigned int state)
283 {
284         BUG_ON(irqs_disabled());
285
286         if (cpufreq_disabled())
287                 return;
288
289         freqs->flags = cpufreq_driver->flags;
290         pr_debug("notification %u of frequency transition to %u kHz\n",
291                  state, freqs->new);
292
293         switch (state) {
294
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
298                  * "old frequency".
299                  */
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;
306                         }
307                 }
308                 srcu_notifier_call_chain(&cpufreq_transition_notifier_list,
309                                 CPUFREQ_PRECHANGE, freqs);
310                 adjust_jiffies(CPUFREQ_PRECHANGE, freqs);
311                 break;
312
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;
322                 break;
323         }
324 }
325
326 /**
327  * cpufreq_notify_transition - call notifier chain and adjust_jiffies
328  * on frequency transition.
329  *
330  * This function calls the transition notifiers and the "adjust_jiffies"
331  * function. It is called twice on all CPU frequency changes that have
332  * external effects.
333  */
334 static void cpufreq_notify_transition(struct cpufreq_policy *policy,
335                 struct cpufreq_freqs *freqs, unsigned int state)
336 {
337         for_each_cpu(freqs->cpu, policy->cpus)
338                 __cpufreq_notify_transition(policy, freqs, state);
339 }
340
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)
344 {
345         cpufreq_notify_transition(policy, freqs, CPUFREQ_POSTCHANGE);
346         if (!transition_failed)
347                 return;
348
349         swap(freqs->old, freqs->new);
350         cpufreq_notify_transition(policy, freqs, CPUFREQ_PRECHANGE);
351         cpufreq_notify_transition(policy, freqs, CPUFREQ_POSTCHANGE);
352 }
353
354 void cpufreq_freq_transition_begin(struct cpufreq_policy *policy,
355                 struct cpufreq_freqs *freqs)
356 {
357
358         /*
359          * Catch double invocations of _begin() which lead to self-deadlock.
360          * ASYNC_NOTIFICATION drivers are left out because the cpufreq core
361          * doesn't invoke _begin() on their behalf, and hence the chances of
362          * double invocations are very low. Moreover, there are scenarios
363          * where these checks can emit false-positive warnings in these
364          * drivers; so we avoid that by skipping them altogether.
365          */
366         WARN_ON(!(cpufreq_driver->flags & CPUFREQ_ASYNC_NOTIFICATION)
367                                 && current == policy->transition_task);
368
369 wait:
370         wait_event(policy->transition_wait, !policy->transition_ongoing);
371
372         spin_lock(&policy->transition_lock);
373
374         if (unlikely(policy->transition_ongoing)) {
375                 spin_unlock(&policy->transition_lock);
376                 goto wait;
377         }
378
379         policy->transition_ongoing = true;
380         policy->transition_task = current;
381
382         spin_unlock(&policy->transition_lock);
383
384         cpufreq_notify_transition(policy, freqs, CPUFREQ_PRECHANGE);
385 }
386 EXPORT_SYMBOL_GPL(cpufreq_freq_transition_begin);
387
388 void cpufreq_freq_transition_end(struct cpufreq_policy *policy,
389                 struct cpufreq_freqs *freqs, int transition_failed)
390 {
391         if (unlikely(WARN_ON(!policy->transition_ongoing)))
392                 return;
393
394         cpufreq_notify_post_transition(policy, freqs, transition_failed);
395
396         policy->transition_ongoing = false;
397         policy->transition_task = NULL;
398
399         wake_up(&policy->transition_wait);
400 }
401 EXPORT_SYMBOL_GPL(cpufreq_freq_transition_end);
402
403
404 /*********************************************************************
405  *                          SYSFS INTERFACE                          *
406  *********************************************************************/
407 static ssize_t show_boost(struct kobject *kobj,
408                                  struct attribute *attr, char *buf)
409 {
410         return sprintf(buf, "%d\n", cpufreq_driver->boost_enabled);
411 }
412
413 static ssize_t store_boost(struct kobject *kobj, struct attribute *attr,
414                                   const char *buf, size_t count)
415 {
416         int ret, enable;
417
418         ret = sscanf(buf, "%d", &enable);
419         if (ret != 1 || enable < 0 || enable > 1)
420                 return -EINVAL;
421
422         if (cpufreq_boost_trigger_state(enable)) {
423                 pr_err("%s: Cannot %s BOOST!\n",
424                        __func__, enable ? "enable" : "disable");
425                 return -EINVAL;
426         }
427
428         pr_debug("%s: cpufreq BOOST %s\n",
429                  __func__, enable ? "enabled" : "disabled");
430
431         return count;
432 }
433 define_one_global_rw(boost);
434
435 static struct cpufreq_governor *__find_governor(const char *str_governor)
436 {
437         struct cpufreq_governor *t;
438
439         list_for_each_entry(t, &cpufreq_governor_list, governor_list)
440                 if (!strncasecmp(str_governor, t->name, CPUFREQ_NAME_LEN))
441                         return t;
442
443         return NULL;
444 }
445
446 /**
447  * cpufreq_parse_governor - parse a governor string
448  */
449 static int cpufreq_parse_governor(char *str_governor, unsigned int *policy,
450                                 struct cpufreq_governor **governor)
451 {
452         int err = -EINVAL;
453
454         if (!cpufreq_driver)
455                 goto out;
456
457         if (cpufreq_driver->setpolicy) {
458                 if (!strncasecmp(str_governor, "performance", CPUFREQ_NAME_LEN)) {
459                         *policy = CPUFREQ_POLICY_PERFORMANCE;
460                         err = 0;
461                 } else if (!strncasecmp(str_governor, "powersave",
462                                                 CPUFREQ_NAME_LEN)) {
463                         *policy = CPUFREQ_POLICY_POWERSAVE;
464                         err = 0;
465                 }
466         } else if (has_target()) {
467                 struct cpufreq_governor *t;
468
469                 mutex_lock(&cpufreq_governor_mutex);
470
471                 t = __find_governor(str_governor);
472
473                 if (t == NULL) {
474                         int ret;
475
476                         mutex_unlock(&cpufreq_governor_mutex);
477                         ret = request_module("cpufreq_%s", str_governor);
478                         mutex_lock(&cpufreq_governor_mutex);
479
480                         if (ret == 0)
481                                 t = __find_governor(str_governor);
482                 }
483
484                 if (t != NULL) {
485                         *governor = t;
486                         err = 0;
487                 }
488
489                 mutex_unlock(&cpufreq_governor_mutex);
490         }
491 out:
492         return err;
493 }
494
495 /**
496  * cpufreq_per_cpu_attr_read() / show_##file_name() -
497  * print out cpufreq information
498  *
499  * Write out information from cpufreq_driver->policy[cpu]; object must be
500  * "unsigned int".
501  */
502
503 #define show_one(file_name, object)                     \
504 static ssize_t show_##file_name                         \
505 (struct cpufreq_policy *policy, char *buf)              \
506 {                                                       \
507         return sprintf(buf, "%u\n", policy->object);    \
508 }
509
510 show_one(cpuinfo_min_freq, cpuinfo.min_freq);
511 show_one(cpuinfo_max_freq, cpuinfo.max_freq);
512 show_one(cpuinfo_transition_latency, cpuinfo.transition_latency);
513 show_one(scaling_min_freq, min);
514 show_one(scaling_max_freq, max);
515
516 static ssize_t show_scaling_cur_freq(
517         struct cpufreq_policy *policy, char *buf)
518 {
519         ssize_t ret;
520
521         if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get)
522                 ret = sprintf(buf, "%u\n", cpufreq_driver->get(policy->cpu));
523         else
524                 ret = sprintf(buf, "%u\n", policy->cur);
525         return ret;
526 }
527
528 static int cpufreq_set_policy(struct cpufreq_policy *policy,
529                                 struct cpufreq_policy *new_policy);
530
531 /**
532  * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access
533  */
534 #define store_one(file_name, object)                    \
535 static ssize_t store_##file_name                                        \
536 (struct cpufreq_policy *policy, const char *buf, size_t count)          \
537 {                                                                       \
538         int ret;                                                        \
539         struct cpufreq_policy new_policy;                               \
540                                                                         \
541         ret = cpufreq_get_policy(&new_policy, policy->cpu);             \
542         if (ret)                                                        \
543                 return -EINVAL;                                         \
544                                                                         \
545         ret = sscanf(buf, "%u", &new_policy.object);                    \
546         if (ret != 1)                                                   \
547                 return -EINVAL;                                         \
548                                                                         \
549         ret = cpufreq_set_policy(policy, &new_policy);          \
550         policy->user_policy.object = policy->object;                    \
551                                                                         \
552         return ret ? ret : count;                                       \
553 }
554
555 store_one(scaling_min_freq, min);
556 store_one(scaling_max_freq, max);
557
558 /**
559  * show_cpuinfo_cur_freq - current CPU frequency as detected by hardware
560  */
561 static ssize_t show_cpuinfo_cur_freq(struct cpufreq_policy *policy,
562                                         char *buf)
563 {
564         unsigned int cur_freq = __cpufreq_get(policy->cpu);
565         if (!cur_freq)
566                 return sprintf(buf, "<unknown>");
567         return sprintf(buf, "%u\n", cur_freq);
568 }
569
570 /**
571  * show_scaling_governor - show the current policy for the specified CPU
572  */
573 static ssize_t show_scaling_governor(struct cpufreq_policy *policy, char *buf)
574 {
575         if (policy->policy == CPUFREQ_POLICY_POWERSAVE)
576                 return sprintf(buf, "powersave\n");
577         else if (policy->policy == CPUFREQ_POLICY_PERFORMANCE)
578                 return sprintf(buf, "performance\n");
579         else if (policy->governor)
580                 return scnprintf(buf, CPUFREQ_NAME_PLEN, "%s\n",
581                                 policy->governor->name);
582         return -EINVAL;
583 }
584
585 /**
586  * store_scaling_governor - store policy for the specified CPU
587  */
588 static ssize_t store_scaling_governor(struct cpufreq_policy *policy,
589                                         const char *buf, size_t count)
590 {
591         int ret;
592         char    str_governor[16];
593         struct cpufreq_policy new_policy;
594
595         ret = cpufreq_get_policy(&new_policy, policy->cpu);
596         if (ret)
597                 return ret;
598
599         ret = sscanf(buf, "%15s", str_governor);
600         if (ret != 1)
601                 return -EINVAL;
602
603         if (cpufreq_parse_governor(str_governor, &new_policy.policy,
604                                                 &new_policy.governor))
605                 return -EINVAL;
606
607         ret = cpufreq_set_policy(policy, &new_policy);
608
609         policy->user_policy.policy = policy->policy;
610         policy->user_policy.governor = policy->governor;
611
612         if (ret)
613                 return ret;
614         else
615                 return count;
616 }
617
618 /**
619  * show_scaling_driver - show the cpufreq driver currently loaded
620  */
621 static ssize_t show_scaling_driver(struct cpufreq_policy *policy, char *buf)
622 {
623         return scnprintf(buf, CPUFREQ_NAME_PLEN, "%s\n", cpufreq_driver->name);
624 }
625
626 /**
627  * show_scaling_available_governors - show the available CPUfreq governors
628  */
629 static ssize_t show_scaling_available_governors(struct cpufreq_policy *policy,
630                                                 char *buf)
631 {
632         ssize_t i = 0;
633         struct cpufreq_governor *t;
634
635         if (!has_target()) {
636                 i += sprintf(buf, "performance powersave");
637                 goto out;
638         }
639
640         list_for_each_entry(t, &cpufreq_governor_list, governor_list) {
641                 if (i >= (ssize_t) ((PAGE_SIZE / sizeof(char))
642                     - (CPUFREQ_NAME_LEN + 2)))
643                         goto out;
644                 i += scnprintf(&buf[i], CPUFREQ_NAME_PLEN, "%s ", t->name);
645         }
646 out:
647         i += sprintf(&buf[i], "\n");
648         return i;
649 }
650
651 ssize_t cpufreq_show_cpus(const struct cpumask *mask, char *buf)
652 {
653         ssize_t i = 0;
654         unsigned int cpu;
655
656         for_each_cpu(cpu, mask) {
657                 if (i)
658                         i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), " ");
659                 i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), "%u", cpu);
660                 if (i >= (PAGE_SIZE - 5))
661                         break;
662         }
663         i += sprintf(&buf[i], "\n");
664         return i;
665 }
666 EXPORT_SYMBOL_GPL(cpufreq_show_cpus);
667
668 /**
669  * show_related_cpus - show the CPUs affected by each transition even if
670  * hw coordination is in use
671  */
672 static ssize_t show_related_cpus(struct cpufreq_policy *policy, char *buf)
673 {
674         return cpufreq_show_cpus(policy->related_cpus, buf);
675 }
676
677 /**
678  * show_affected_cpus - show the CPUs affected by each transition
679  */
680 static ssize_t show_affected_cpus(struct cpufreq_policy *policy, char *buf)
681 {
682         return cpufreq_show_cpus(policy->cpus, buf);
683 }
684
685 static ssize_t store_scaling_setspeed(struct cpufreq_policy *policy,
686                                         const char *buf, size_t count)
687 {
688         unsigned int freq = 0;
689         unsigned int ret;
690
691         if (!policy->governor || !policy->governor->store_setspeed)
692                 return -EINVAL;
693
694         ret = sscanf(buf, "%u", &freq);
695         if (ret != 1)
696                 return -EINVAL;
697
698         policy->governor->store_setspeed(policy, freq);
699
700         return count;
701 }
702
703 static ssize_t show_scaling_setspeed(struct cpufreq_policy *policy, char *buf)
704 {
705         if (!policy->governor || !policy->governor->show_setspeed)
706                 return sprintf(buf, "<unsupported>\n");
707
708         return policy->governor->show_setspeed(policy, buf);
709 }
710
711 /**
712  * show_bios_limit - show the current cpufreq HW/BIOS limitation
713  */
714 static ssize_t show_bios_limit(struct cpufreq_policy *policy, char *buf)
715 {
716         unsigned int limit;
717         int ret;
718         if (cpufreq_driver->bios_limit) {
719                 ret = cpufreq_driver->bios_limit(policy->cpu, &limit);
720                 if (!ret)
721                         return sprintf(buf, "%u\n", limit);
722         }
723         return sprintf(buf, "%u\n", policy->cpuinfo.max_freq);
724 }
725
726 cpufreq_freq_attr_ro_perm(cpuinfo_cur_freq, 0400);
727 cpufreq_freq_attr_ro(cpuinfo_min_freq);
728 cpufreq_freq_attr_ro(cpuinfo_max_freq);
729 cpufreq_freq_attr_ro(cpuinfo_transition_latency);
730 cpufreq_freq_attr_ro(scaling_available_governors);
731 cpufreq_freq_attr_ro(scaling_driver);
732 cpufreq_freq_attr_ro(scaling_cur_freq);
733 cpufreq_freq_attr_ro(bios_limit);
734 cpufreq_freq_attr_ro(related_cpus);
735 cpufreq_freq_attr_ro(affected_cpus);
736 cpufreq_freq_attr_rw(scaling_min_freq);
737 cpufreq_freq_attr_rw(scaling_max_freq);
738 cpufreq_freq_attr_rw(scaling_governor);
739 cpufreq_freq_attr_rw(scaling_setspeed);
740
741 static struct attribute *default_attrs[] = {
742         &cpuinfo_min_freq.attr,
743         &cpuinfo_max_freq.attr,
744         &cpuinfo_transition_latency.attr,
745         &scaling_min_freq.attr,
746         &scaling_max_freq.attr,
747         &affected_cpus.attr,
748         &related_cpus.attr,
749         &scaling_governor.attr,
750         &scaling_driver.attr,
751         &scaling_available_governors.attr,
752         &scaling_setspeed.attr,
753         NULL
754 };
755
756 #define to_policy(k) container_of(k, struct cpufreq_policy, kobj)
757 #define to_attr(a) container_of(a, struct freq_attr, attr)
758
759 static ssize_t show(struct kobject *kobj, struct attribute *attr, char *buf)
760 {
761         struct cpufreq_policy *policy = to_policy(kobj);
762         struct freq_attr *fattr = to_attr(attr);
763         ssize_t ret;
764
765         if (!down_read_trylock(&cpufreq_rwsem))
766                 return -EINVAL;
767
768         down_read(&policy->rwsem);
769
770         if (fattr->show)
771                 ret = fattr->show(policy, buf);
772         else
773                 ret = -EIO;
774
775         up_read(&policy->rwsem);
776         up_read(&cpufreq_rwsem);
777
778         return ret;
779 }
780
781 static ssize_t store(struct kobject *kobj, struct attribute *attr,
782                      const char *buf, size_t count)
783 {
784         struct cpufreq_policy *policy = to_policy(kobj);
785         struct freq_attr *fattr = to_attr(attr);
786         ssize_t ret = -EINVAL;
787
788         get_online_cpus();
789
790         if (!cpu_online(policy->cpu))
791                 goto unlock;
792
793         if (!down_read_trylock(&cpufreq_rwsem))
794                 goto unlock;
795
796         down_write(&policy->rwsem);
797
798         if (fattr->store)
799                 ret = fattr->store(policy, buf, count);
800         else
801                 ret = -EIO;
802
803         up_write(&policy->rwsem);
804
805         up_read(&cpufreq_rwsem);
806 unlock:
807         put_online_cpus();
808
809         return ret;
810 }
811
812 static void cpufreq_sysfs_release(struct kobject *kobj)
813 {
814         struct cpufreq_policy *policy = to_policy(kobj);
815         pr_debug("last reference is dropped\n");
816         complete(&policy->kobj_unregister);
817 }
818
819 static const struct sysfs_ops sysfs_ops = {
820         .show   = show,
821         .store  = store,
822 };
823
824 static struct kobj_type ktype_cpufreq = {
825         .sysfs_ops      = &sysfs_ops,
826         .default_attrs  = default_attrs,
827         .release        = cpufreq_sysfs_release,
828 };
829
830 struct kobject *cpufreq_global_kobject;
831 EXPORT_SYMBOL(cpufreq_global_kobject);
832
833 static int cpufreq_global_kobject_usage;
834
835 int cpufreq_get_global_kobject(void)
836 {
837         if (!cpufreq_global_kobject_usage++)
838                 return kobject_add(cpufreq_global_kobject,
839                                 &cpu_subsys.dev_root->kobj, "%s", "cpufreq");
840
841         return 0;
842 }
843 EXPORT_SYMBOL(cpufreq_get_global_kobject);
844
845 void cpufreq_put_global_kobject(void)
846 {
847         if (!--cpufreq_global_kobject_usage)
848                 kobject_del(cpufreq_global_kobject);
849 }
850 EXPORT_SYMBOL(cpufreq_put_global_kobject);
851
852 int cpufreq_sysfs_create_file(const struct attribute *attr)
853 {
854         int ret = cpufreq_get_global_kobject();
855
856         if (!ret) {
857                 ret = sysfs_create_file(cpufreq_global_kobject, attr);
858                 if (ret)
859                         cpufreq_put_global_kobject();
860         }
861
862         return ret;
863 }
864 EXPORT_SYMBOL(cpufreq_sysfs_create_file);
865
866 void cpufreq_sysfs_remove_file(const struct attribute *attr)
867 {
868         sysfs_remove_file(cpufreq_global_kobject, attr);
869         cpufreq_put_global_kobject();
870 }
871 EXPORT_SYMBOL(cpufreq_sysfs_remove_file);
872
873 /* symlink affected CPUs */
874 static int cpufreq_add_dev_symlink(struct cpufreq_policy *policy)
875 {
876         unsigned int j;
877         int ret = 0;
878
879         for_each_cpu(j, policy->cpus) {
880                 struct device *cpu_dev;
881
882                 if (j == policy->cpu)
883                         continue;
884
885                 pr_debug("Adding link for CPU: %u\n", j);
886                 cpu_dev = get_cpu_device(j);
887                 ret = sysfs_create_link(&cpu_dev->kobj, &policy->kobj,
888                                         "cpufreq");
889                 if (ret)
890                         break;
891         }
892         return ret;
893 }
894
895 static int cpufreq_add_dev_interface(struct cpufreq_policy *policy,
896                                      struct device *dev)
897 {
898         struct freq_attr **drv_attr;
899         int ret = 0;
900
901         /* prepare interface data */
902         ret = kobject_init_and_add(&policy->kobj, &ktype_cpufreq,
903                                    &dev->kobj, "cpufreq");
904         if (ret)
905                 return ret;
906
907         /* set up files for this cpu device */
908         drv_attr = cpufreq_driver->attr;
909         while ((drv_attr) && (*drv_attr)) {
910                 ret = sysfs_create_file(&policy->kobj, &((*drv_attr)->attr));
911                 if (ret)
912                         goto err_out_kobj_put;
913                 drv_attr++;
914         }
915         if (cpufreq_driver->get) {
916                 ret = sysfs_create_file(&policy->kobj, &cpuinfo_cur_freq.attr);
917                 if (ret)
918                         goto err_out_kobj_put;
919         }
920
921         ret = sysfs_create_file(&policy->kobj, &scaling_cur_freq.attr);
922         if (ret)
923                 goto err_out_kobj_put;
924
925         if (cpufreq_driver->bios_limit) {
926                 ret = sysfs_create_file(&policy->kobj, &bios_limit.attr);
927                 if (ret)
928                         goto err_out_kobj_put;
929         }
930
931         ret = cpufreq_add_dev_symlink(policy);
932         if (ret)
933                 goto err_out_kobj_put;
934
935         return ret;
936
937 err_out_kobj_put:
938         kobject_put(&policy->kobj);
939         wait_for_completion(&policy->kobj_unregister);
940         return ret;
941 }
942
943 static void cpufreq_init_policy(struct cpufreq_policy *policy)
944 {
945         struct cpufreq_governor *gov = NULL;
946         struct cpufreq_policy new_policy;
947         int ret = 0;
948
949         memcpy(&new_policy, policy, sizeof(*policy));
950
951         /* Update governor of new_policy to the governor used before hotplug */
952         gov = __find_governor(per_cpu(cpufreq_cpu_governor, policy->cpu));
953         if (gov)
954                 pr_debug("Restoring governor %s for cpu %d\n",
955                                 policy->governor->name, policy->cpu);
956         else
957                 gov = CPUFREQ_DEFAULT_GOVERNOR;
958
959         new_policy.governor = gov;
960
961         /* Use the default policy if its valid. */
962         if (cpufreq_driver->setpolicy)
963                 cpufreq_parse_governor(gov->name, &new_policy.policy, NULL);
964
965         /* set default policy */
966         ret = cpufreq_set_policy(policy, &new_policy);
967         if (ret) {
968                 pr_debug("setting policy failed\n");
969                 if (cpufreq_driver->exit)
970                         cpufreq_driver->exit(policy);
971         }
972 }
973
974 #ifdef CONFIG_HOTPLUG_CPU
975 static int cpufreq_add_policy_cpu(struct cpufreq_policy *policy,
976                                   unsigned int cpu, struct device *dev)
977 {
978         int ret = 0;
979         unsigned long flags;
980
981         if (has_target()) {
982                 ret = __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
983                 if (ret) {
984                         pr_err("%s: Failed to stop governor\n", __func__);
985                         return ret;
986                 }
987         }
988
989         down_write(&policy->rwsem);
990
991         write_lock_irqsave(&cpufreq_driver_lock, flags);
992
993         cpumask_set_cpu(cpu, policy->cpus);
994         per_cpu(cpufreq_cpu_data, cpu) = policy;
995         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
996
997         up_write(&policy->rwsem);
998
999         if (has_target()) {
1000                 ret = __cpufreq_governor(policy, CPUFREQ_GOV_START);
1001                 if (!ret)
1002                         ret = __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
1003
1004                 if (ret) {
1005                         pr_err("%s: Failed to start governor\n", __func__);
1006                         return ret;
1007                 }
1008         }
1009
1010         return sysfs_create_link(&dev->kobj, &policy->kobj, "cpufreq");
1011 }
1012 #endif
1013
1014 static struct cpufreq_policy *cpufreq_policy_restore(unsigned int cpu)
1015 {
1016         struct cpufreq_policy *policy;
1017         unsigned long flags;
1018
1019         read_lock_irqsave(&cpufreq_driver_lock, flags);
1020
1021         policy = per_cpu(cpufreq_cpu_data_fallback, cpu);
1022
1023         read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1024
1025         if (policy)
1026                 policy->governor = NULL;
1027
1028         return policy;
1029 }
1030
1031 static struct cpufreq_policy *cpufreq_policy_alloc(void)
1032 {
1033         struct cpufreq_policy *policy;
1034
1035         policy = kzalloc(sizeof(*policy), GFP_KERNEL);
1036         if (!policy)
1037                 return NULL;
1038
1039         if (!alloc_cpumask_var(&policy->cpus, GFP_KERNEL))
1040                 goto err_free_policy;
1041
1042         if (!zalloc_cpumask_var(&policy->related_cpus, GFP_KERNEL))
1043                 goto err_free_cpumask;
1044
1045         INIT_LIST_HEAD(&policy->policy_list);
1046         init_rwsem(&policy->rwsem);
1047         spin_lock_init(&policy->transition_lock);
1048         init_waitqueue_head(&policy->transition_wait);
1049
1050         return policy;
1051
1052 err_free_cpumask:
1053         free_cpumask_var(policy->cpus);
1054 err_free_policy:
1055         kfree(policy);
1056
1057         return NULL;
1058 }
1059
1060 static void cpufreq_policy_put_kobj(struct cpufreq_policy *policy)
1061 {
1062         struct kobject *kobj;
1063         struct completion *cmp;
1064
1065         blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1066                         CPUFREQ_REMOVE_POLICY, policy);
1067
1068         down_read(&policy->rwsem);
1069         kobj = &policy->kobj;
1070         cmp = &policy->kobj_unregister;
1071         up_read(&policy->rwsem);
1072         kobject_put(kobj);
1073
1074         /*
1075          * We need to make sure that the underlying kobj is
1076          * actually not referenced anymore by anybody before we
1077          * proceed with unloading.
1078          */
1079         pr_debug("waiting for dropping of refcount\n");
1080         wait_for_completion(cmp);
1081         pr_debug("wait complete\n");
1082 }
1083
1084 static void cpufreq_policy_free(struct cpufreq_policy *policy)
1085 {
1086         free_cpumask_var(policy->related_cpus);
1087         free_cpumask_var(policy->cpus);
1088         kfree(policy);
1089 }
1090
1091 static int update_policy_cpu(struct cpufreq_policy *policy, unsigned int cpu,
1092                              struct device *cpu_dev)
1093 {
1094         int ret;
1095
1096         if (WARN_ON(cpu == policy->cpu))
1097                 return 0;
1098
1099         /* Move kobject to the new policy->cpu */
1100         ret = kobject_move(&policy->kobj, &cpu_dev->kobj);
1101         if (ret) {
1102                 pr_err("%s: Failed to move kobj: %d\n", __func__, ret);
1103                 return ret;
1104         }
1105
1106         down_write(&policy->rwsem);
1107
1108         policy->last_cpu = policy->cpu;
1109         policy->cpu = cpu;
1110
1111         up_write(&policy->rwsem);
1112
1113         blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1114                         CPUFREQ_UPDATE_POLICY_CPU, policy);
1115
1116         return 0;
1117 }
1118
1119 static int __cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
1120 {
1121         unsigned int j, cpu = dev->id;
1122         int ret = -ENOMEM;
1123         struct cpufreq_policy *policy;
1124         unsigned long flags;
1125         bool recover_policy = cpufreq_suspended;
1126 #ifdef CONFIG_HOTPLUG_CPU
1127         struct cpufreq_policy *tpolicy;
1128 #endif
1129
1130         if (cpu_is_offline(cpu))
1131                 return 0;
1132
1133         pr_debug("adding CPU %u\n", cpu);
1134
1135 #ifdef CONFIG_SMP
1136         /* check whether a different CPU already registered this
1137          * CPU because it is in the same boat. */
1138         policy = cpufreq_cpu_get(cpu);
1139         if (unlikely(policy)) {
1140                 cpufreq_cpu_put(policy);
1141                 return 0;
1142         }
1143 #endif
1144
1145         if (!down_read_trylock(&cpufreq_rwsem))
1146                 return 0;
1147
1148 #ifdef CONFIG_HOTPLUG_CPU
1149         /* Check if this cpu was hot-unplugged earlier and has siblings */
1150         read_lock_irqsave(&cpufreq_driver_lock, flags);
1151         list_for_each_entry(tpolicy, &cpufreq_policy_list, policy_list) {
1152                 if (cpumask_test_cpu(cpu, tpolicy->related_cpus)) {
1153                         read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1154                         ret = cpufreq_add_policy_cpu(tpolicy, cpu, dev);
1155                         up_read(&cpufreq_rwsem);
1156                         return ret;
1157                 }
1158         }
1159         read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1160 #endif
1161
1162         /*
1163          * Restore the saved policy when doing light-weight init and fall back
1164          * to the full init if that fails.
1165          */
1166         policy = recover_policy ? cpufreq_policy_restore(cpu) : NULL;
1167         if (!policy) {
1168                 recover_policy = false;
1169                 policy = cpufreq_policy_alloc();
1170                 if (!policy)
1171                         goto nomem_out;
1172         }
1173
1174         /*
1175          * In the resume path, since we restore a saved policy, the assignment
1176          * to policy->cpu is like an update of the existing policy, rather than
1177          * the creation of a brand new one. So we need to perform this update
1178          * by invoking update_policy_cpu().
1179          */
1180         if (recover_policy && cpu != policy->cpu)
1181                 WARN_ON(update_policy_cpu(policy, cpu, dev));
1182         else
1183                 policy->cpu = cpu;
1184
1185         cpumask_copy(policy->cpus, cpumask_of(cpu));
1186
1187         init_completion(&policy->kobj_unregister);
1188         INIT_WORK(&policy->update, handle_update);
1189
1190         /* call driver. From then on the cpufreq must be able
1191          * to accept all calls to ->verify and ->setpolicy for this CPU
1192          */
1193         ret = cpufreq_driver->init(policy);
1194         if (ret) {
1195                 pr_debug("initialization failed\n");
1196                 goto err_set_policy_cpu;
1197         }
1198
1199         /* related cpus should atleast have policy->cpus */
1200         cpumask_or(policy->related_cpus, policy->related_cpus, policy->cpus);
1201
1202         /*
1203          * affected cpus must always be the one, which are online. We aren't
1204          * managing offline cpus here.
1205          */
1206         cpumask_and(policy->cpus, policy->cpus, cpu_online_mask);
1207
1208         if (!recover_policy) {
1209                 policy->user_policy.min = policy->min;
1210                 policy->user_policy.max = policy->max;
1211         }
1212
1213         down_write(&policy->rwsem);
1214         write_lock_irqsave(&cpufreq_driver_lock, flags);
1215         for_each_cpu(j, policy->cpus)
1216                 per_cpu(cpufreq_cpu_data, j) = policy;
1217         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1218
1219         if (cpufreq_driver->get && !cpufreq_driver->setpolicy) {
1220                 policy->cur = cpufreq_driver->get(policy->cpu);
1221                 if (!policy->cur) {
1222                         pr_err("%s: ->get() failed\n", __func__);
1223                         goto err_get_freq;
1224                 }
1225         }
1226
1227         /*
1228          * Sometimes boot loaders set CPU frequency to a value outside of
1229          * frequency table present with cpufreq core. In such cases CPU might be
1230          * unstable if it has to run on that frequency for long duration of time
1231          * and so its better to set it to a frequency which is specified in
1232          * freq-table. This also makes cpufreq stats inconsistent as
1233          * cpufreq-stats would fail to register because current frequency of CPU
1234          * isn't found in freq-table.
1235          *
1236          * Because we don't want this change to effect boot process badly, we go
1237          * for the next freq which is >= policy->cur ('cur' must be set by now,
1238          * otherwise we will end up setting freq to lowest of the table as 'cur'
1239          * is initialized to zero).
1240          *
1241          * We are passing target-freq as "policy->cur - 1" otherwise
1242          * __cpufreq_driver_target() would simply fail, as policy->cur will be
1243          * equal to target-freq.
1244          */
1245         if ((cpufreq_driver->flags & CPUFREQ_NEED_INITIAL_FREQ_CHECK)
1246             && has_target()) {
1247                 /* Are we running at unknown frequency ? */
1248                 ret = cpufreq_frequency_table_get_index(policy, policy->cur);
1249                 if (ret == -EINVAL) {
1250                         /* Warn user and fix it */
1251                         pr_warn("%s: CPU%d: Running at unlisted freq: %u KHz\n",
1252                                 __func__, policy->cpu, policy->cur);
1253                         ret = __cpufreq_driver_target(policy, policy->cur - 1,
1254                                 CPUFREQ_RELATION_L);
1255
1256                         /*
1257                          * Reaching here after boot in a few seconds may not
1258                          * mean that system will remain stable at "unknown"
1259                          * frequency for longer duration. Hence, a BUG_ON().
1260                          */
1261                         BUG_ON(ret);
1262                         pr_warn("%s: CPU%d: Unlisted initial frequency changed to: %u KHz\n",
1263                                 __func__, policy->cpu, policy->cur);
1264                 }
1265         }
1266
1267         blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1268                                      CPUFREQ_START, policy);
1269
1270         if (!recover_policy) {
1271                 ret = cpufreq_add_dev_interface(policy, dev);
1272                 if (ret)
1273                         goto err_out_unregister;
1274                 blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1275                                 CPUFREQ_CREATE_POLICY, policy);
1276         }
1277
1278         write_lock_irqsave(&cpufreq_driver_lock, flags);
1279         list_add(&policy->policy_list, &cpufreq_policy_list);
1280         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1281
1282         cpufreq_init_policy(policy);
1283
1284         if (!recover_policy) {
1285                 policy->user_policy.policy = policy->policy;
1286                 policy->user_policy.governor = policy->governor;
1287         }
1288         up_write(&policy->rwsem);
1289
1290         kobject_uevent(&policy->kobj, KOBJ_ADD);
1291         up_read(&cpufreq_rwsem);
1292
1293         pr_debug("initialization complete\n");
1294
1295         return 0;
1296
1297 err_out_unregister:
1298 err_get_freq:
1299         write_lock_irqsave(&cpufreq_driver_lock, flags);
1300         for_each_cpu(j, policy->cpus)
1301                 per_cpu(cpufreq_cpu_data, j) = NULL;
1302         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1303
1304         up_write(&policy->rwsem);
1305
1306         if (cpufreq_driver->exit)
1307                 cpufreq_driver->exit(policy);
1308 err_set_policy_cpu:
1309         if (recover_policy) {
1310                 /* Do not leave stale fallback data behind. */
1311                 per_cpu(cpufreq_cpu_data_fallback, cpu) = NULL;
1312                 cpufreq_policy_put_kobj(policy);
1313         }
1314         cpufreq_policy_free(policy);
1315
1316 nomem_out:
1317         up_read(&cpufreq_rwsem);
1318
1319         return ret;
1320 }
1321
1322 /**
1323  * cpufreq_add_dev - add a CPU device
1324  *
1325  * Adds the cpufreq interface for a CPU device.
1326  *
1327  * The Oracle says: try running cpufreq registration/unregistration concurrently
1328  * with with cpu hotplugging and all hell will break loose. Tried to clean this
1329  * mess up, but more thorough testing is needed. - Mathieu
1330  */
1331 static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
1332 {
1333         return __cpufreq_add_dev(dev, sif);
1334 }
1335
1336 static int __cpufreq_remove_dev_prepare(struct device *dev,
1337                                         struct subsys_interface *sif)
1338 {
1339         unsigned int cpu = dev->id, cpus;
1340         int ret;
1341         unsigned long flags;
1342         struct cpufreq_policy *policy;
1343
1344         pr_debug("%s: unregistering CPU %u\n", __func__, cpu);
1345
1346         write_lock_irqsave(&cpufreq_driver_lock, flags);
1347
1348         policy = per_cpu(cpufreq_cpu_data, cpu);
1349
1350         /* Save the policy somewhere when doing a light-weight tear-down */
1351         if (cpufreq_suspended)
1352                 per_cpu(cpufreq_cpu_data_fallback, cpu) = policy;
1353
1354         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1355
1356         if (!policy) {
1357                 pr_debug("%s: No cpu_data found\n", __func__);
1358                 return -EINVAL;
1359         }
1360
1361         if (has_target()) {
1362                 ret = __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
1363                 if (ret) {
1364                         pr_err("%s: Failed to stop governor\n", __func__);
1365                         return ret;
1366                 }
1367         }
1368
1369         if (!cpufreq_driver->setpolicy)
1370                 strncpy(per_cpu(cpufreq_cpu_governor, cpu),
1371                         policy->governor->name, CPUFREQ_NAME_LEN);
1372
1373         down_read(&policy->rwsem);
1374         cpus = cpumask_weight(policy->cpus);
1375         up_read(&policy->rwsem);
1376
1377         if (cpu != policy->cpu) {
1378                 sysfs_remove_link(&dev->kobj, "cpufreq");
1379         } else if (cpus > 1) {
1380                 /* Nominate new CPU */
1381                 int new_cpu = cpumask_any_but(policy->cpus, cpu);
1382                 struct device *cpu_dev = get_cpu_device(new_cpu);
1383
1384                 sysfs_remove_link(&cpu_dev->kobj, "cpufreq");
1385                 ret = update_policy_cpu(policy, new_cpu, cpu_dev);
1386                 if (ret) {
1387                         if (sysfs_create_link(&cpu_dev->kobj, &policy->kobj,
1388                                               "cpufreq"))
1389                                 pr_err("%s: Failed to restore kobj link to cpu:%d\n",
1390                                        __func__, cpu_dev->id);
1391                         return ret;
1392                 }
1393
1394                 if (!cpufreq_suspended)
1395                         pr_debug("%s: policy Kobject moved to cpu: %d from: %d\n",
1396                                  __func__, new_cpu, cpu);
1397         } else if (cpufreq_driver->stop_cpu) {
1398                 cpufreq_driver->stop_cpu(policy);
1399         }
1400
1401         return 0;
1402 }
1403
1404 static int __cpufreq_remove_dev_finish(struct device *dev,
1405                                        struct subsys_interface *sif)
1406 {
1407         unsigned int cpu = dev->id, cpus;
1408         int ret;
1409         unsigned long flags;
1410         struct cpufreq_policy *policy;
1411
1412         read_lock_irqsave(&cpufreq_driver_lock, flags);
1413         policy = per_cpu(cpufreq_cpu_data, cpu);
1414         read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1415
1416         if (!policy) {
1417                 pr_debug("%s: No cpu_data found\n", __func__);
1418                 return -EINVAL;
1419         }
1420
1421         down_write(&policy->rwsem);
1422         cpus = cpumask_weight(policy->cpus);
1423
1424         if (cpus > 1)
1425                 cpumask_clear_cpu(cpu, policy->cpus);
1426         up_write(&policy->rwsem);
1427
1428         /* If cpu is last user of policy, free policy */
1429         if (cpus == 1) {
1430                 if (has_target()) {
1431                         ret = __cpufreq_governor(policy,
1432                                         CPUFREQ_GOV_POLICY_EXIT);
1433                         if (ret) {
1434                                 pr_err("%s: Failed to exit governor\n",
1435                                        __func__);
1436                                 return ret;
1437                         }
1438                 }
1439
1440                 if (!cpufreq_suspended)
1441                         cpufreq_policy_put_kobj(policy);
1442
1443                 /*
1444                  * Perform the ->exit() even during light-weight tear-down,
1445                  * since this is a core component, and is essential for the
1446                  * subsequent light-weight ->init() to succeed.
1447                  */
1448                 if (cpufreq_driver->exit)
1449                         cpufreq_driver->exit(policy);
1450
1451                 /* Remove policy from list of active policies */
1452                 write_lock_irqsave(&cpufreq_driver_lock, flags);
1453                 list_del(&policy->policy_list);
1454                 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1455
1456                 if (!cpufreq_suspended)
1457                         cpufreq_policy_free(policy);
1458         } else if (has_target()) {
1459                 ret = __cpufreq_governor(policy, CPUFREQ_GOV_START);
1460                 if (!ret)
1461                         ret = __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
1462
1463                 if (ret) {
1464                         pr_err("%s: Failed to start governor\n", __func__);
1465                         return ret;
1466                 }
1467         }
1468
1469         per_cpu(cpufreq_cpu_data, cpu) = NULL;
1470         return 0;
1471 }
1472
1473 /**
1474  * cpufreq_remove_dev - remove a CPU device
1475  *
1476  * Removes the cpufreq interface for a CPU device.
1477  */
1478 static int cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
1479 {
1480         unsigned int cpu = dev->id;
1481         int ret;
1482
1483         if (cpu_is_offline(cpu))
1484                 return 0;
1485
1486         ret = __cpufreq_remove_dev_prepare(dev, sif);
1487
1488         if (!ret)
1489                 ret = __cpufreq_remove_dev_finish(dev, sif);
1490
1491         return ret;
1492 }
1493
1494 static void handle_update(struct work_struct *work)
1495 {
1496         struct cpufreq_policy *policy =
1497                 container_of(work, struct cpufreq_policy, update);
1498         unsigned int cpu = policy->cpu;
1499         pr_debug("handle_update for cpu %u called\n", cpu);
1500         cpufreq_update_policy(cpu);
1501 }
1502
1503 /**
1504  *      cpufreq_out_of_sync - If actual and saved CPU frequency differs, we're
1505  *      in deep trouble.
1506  *      @cpu: cpu number
1507  *      @old_freq: CPU frequency the kernel thinks the CPU runs at
1508  *      @new_freq: CPU frequency the CPU actually runs at
1509  *
1510  *      We adjust to current frequency first, and need to clean up later.
1511  *      So either call to cpufreq_update_policy() or schedule handle_update()).
1512  */
1513 static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq,
1514                                 unsigned int new_freq)
1515 {
1516         struct cpufreq_policy *policy;
1517         struct cpufreq_freqs freqs;
1518         unsigned long flags;
1519
1520         pr_debug("Warning: CPU frequency out of sync: cpufreq and timing core thinks of %u, is %u kHz\n",
1521                  old_freq, new_freq);
1522
1523         freqs.old = old_freq;
1524         freqs.new = new_freq;
1525
1526         read_lock_irqsave(&cpufreq_driver_lock, flags);
1527         policy = per_cpu(cpufreq_cpu_data, cpu);
1528         read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1529
1530         cpufreq_freq_transition_begin(policy, &freqs);
1531         cpufreq_freq_transition_end(policy, &freqs, 0);
1532 }
1533
1534 /**
1535  * cpufreq_quick_get - get the CPU frequency (in kHz) from policy->cur
1536  * @cpu: CPU number
1537  *
1538  * This is the last known freq, without actually getting it from the driver.
1539  * Return value will be same as what is shown in scaling_cur_freq in sysfs.
1540  */
1541 unsigned int cpufreq_quick_get(unsigned int cpu)
1542 {
1543         struct cpufreq_policy *policy;
1544         unsigned int ret_freq = 0;
1545
1546         if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get)
1547                 return cpufreq_driver->get(cpu);
1548
1549         policy = cpufreq_cpu_get(cpu);
1550         if (policy) {
1551                 ret_freq = policy->cur;
1552                 cpufreq_cpu_put(policy);
1553         }
1554
1555         return ret_freq;
1556 }
1557 EXPORT_SYMBOL(cpufreq_quick_get);
1558
1559 /**
1560  * cpufreq_quick_get_max - get the max reported CPU frequency for this CPU
1561  * @cpu: CPU number
1562  *
1563  * Just return the max possible frequency for a given CPU.
1564  */
1565 unsigned int cpufreq_quick_get_max(unsigned int cpu)
1566 {
1567         struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1568         unsigned int ret_freq = 0;
1569
1570         if (policy) {
1571                 ret_freq = policy->max;
1572                 cpufreq_cpu_put(policy);
1573         }
1574
1575         return ret_freq;
1576 }
1577 EXPORT_SYMBOL(cpufreq_quick_get_max);
1578
1579 static unsigned int __cpufreq_get(unsigned int cpu)
1580 {
1581         struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
1582         unsigned int ret_freq = 0;
1583
1584         if (!cpufreq_driver->get)
1585                 return ret_freq;
1586
1587         ret_freq = cpufreq_driver->get(cpu);
1588
1589         if (ret_freq && policy->cur &&
1590                 !(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) {
1591                 /* verify no discrepancy between actual and
1592                                         saved value exists */
1593                 if (unlikely(ret_freq != policy->cur)) {
1594                         cpufreq_out_of_sync(cpu, policy->cur, ret_freq);
1595                         schedule_work(&policy->update);
1596                 }
1597         }
1598
1599         return ret_freq;
1600 }
1601
1602 /**
1603  * cpufreq_get - get the current CPU frequency (in kHz)
1604  * @cpu: CPU number
1605  *
1606  * Get the CPU current (static) CPU frequency
1607  */
1608 unsigned int cpufreq_get(unsigned int cpu)
1609 {
1610         struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1611         unsigned int ret_freq = 0;
1612
1613         if (policy) {
1614                 down_read(&policy->rwsem);
1615                 ret_freq = __cpufreq_get(cpu);
1616                 up_read(&policy->rwsem);
1617
1618                 cpufreq_cpu_put(policy);
1619         }
1620
1621         return ret_freq;
1622 }
1623 EXPORT_SYMBOL(cpufreq_get);
1624
1625 static struct subsys_interface cpufreq_interface = {
1626         .name           = "cpufreq",
1627         .subsys         = &cpu_subsys,
1628         .add_dev        = cpufreq_add_dev,
1629         .remove_dev     = cpufreq_remove_dev,
1630 };
1631
1632 /*
1633  * In case platform wants some specific frequency to be configured
1634  * during suspend..
1635  */
1636 int cpufreq_generic_suspend(struct cpufreq_policy *policy)
1637 {
1638         int ret;
1639
1640         if (!policy->suspend_freq) {
1641                 pr_err("%s: suspend_freq can't be zero\n", __func__);
1642                 return -EINVAL;
1643         }
1644
1645         pr_debug("%s: Setting suspend-freq: %u\n", __func__,
1646                         policy->suspend_freq);
1647
1648         ret = __cpufreq_driver_target(policy, policy->suspend_freq,
1649                         CPUFREQ_RELATION_H);
1650         if (ret)
1651                 pr_err("%s: unable to set suspend-freq: %u. err: %d\n",
1652                                 __func__, policy->suspend_freq, ret);
1653
1654         return ret;
1655 }
1656 EXPORT_SYMBOL(cpufreq_generic_suspend);
1657
1658 /**
1659  * cpufreq_suspend() - Suspend CPUFreq governors
1660  *
1661  * Called during system wide Suspend/Hibernate cycles for suspending governors
1662  * as some platforms can't change frequency after this point in suspend cycle.
1663  * Because some of the devices (like: i2c, regulators, etc) they use for
1664  * changing frequency are suspended quickly after this point.
1665  */
1666 void cpufreq_suspend(void)
1667 {
1668         struct cpufreq_policy *policy;
1669
1670         if (!cpufreq_driver)
1671                 return;
1672
1673         if (!has_target())
1674                 goto suspend;
1675
1676         pr_debug("%s: Suspending Governors\n", __func__);
1677
1678         list_for_each_entry(policy, &cpufreq_policy_list, policy_list) {
1679                 if (__cpufreq_governor(policy, CPUFREQ_GOV_STOP))
1680                         pr_err("%s: Failed to stop governor for policy: %p\n",
1681                                 __func__, policy);
1682                 else if (cpufreq_driver->suspend
1683                     && cpufreq_driver->suspend(policy))
1684                         pr_err("%s: Failed to suspend driver: %p\n", __func__,
1685                                 policy);
1686         }
1687
1688 suspend:
1689         cpufreq_suspended = true;
1690 }
1691
1692 /**
1693  * cpufreq_resume() - Resume CPUFreq governors
1694  *
1695  * Called during system wide Suspend/Hibernate cycle for resuming governors that
1696  * are suspended with cpufreq_suspend().
1697  */
1698 void cpufreq_resume(void)
1699 {
1700         struct cpufreq_policy *policy;
1701
1702         if (!cpufreq_driver)
1703                 return;
1704
1705         cpufreq_suspended = false;
1706
1707         if (!has_target())
1708                 return;
1709
1710         pr_debug("%s: Resuming Governors\n", __func__);
1711
1712         list_for_each_entry(policy, &cpufreq_policy_list, policy_list) {
1713                 if (cpufreq_driver->resume && cpufreq_driver->resume(policy))
1714                         pr_err("%s: Failed to resume driver: %p\n", __func__,
1715                                 policy);
1716                 else if (__cpufreq_governor(policy, CPUFREQ_GOV_START)
1717                     || __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS))
1718                         pr_err("%s: Failed to start governor for policy: %p\n",
1719                                 __func__, policy);
1720
1721                 /*
1722                  * schedule call cpufreq_update_policy() for boot CPU, i.e. last
1723                  * policy in list. It will verify that the current freq is in
1724                  * sync with what we believe it to be.
1725                  */
1726                 if (list_is_last(&policy->policy_list, &cpufreq_policy_list))
1727                         schedule_work(&policy->update);
1728         }
1729 }
1730
1731 /**
1732  *      cpufreq_get_current_driver - return current driver's name
1733  *
1734  *      Return the name string of the currently loaded cpufreq driver
1735  *      or NULL, if none.
1736  */
1737 const char *cpufreq_get_current_driver(void)
1738 {
1739         if (cpufreq_driver)
1740                 return cpufreq_driver->name;
1741
1742         return NULL;
1743 }
1744 EXPORT_SYMBOL_GPL(cpufreq_get_current_driver);
1745
1746 /**
1747  *      cpufreq_get_driver_data - return current driver data
1748  *
1749  *      Return the private data of the currently loaded cpufreq
1750  *      driver, or NULL if no cpufreq driver is loaded.
1751  */
1752 void *cpufreq_get_driver_data(void)
1753 {
1754         if (cpufreq_driver)
1755                 return cpufreq_driver->driver_data;
1756
1757         return NULL;
1758 }
1759 EXPORT_SYMBOL_GPL(cpufreq_get_driver_data);
1760
1761 /*********************************************************************
1762  *                     NOTIFIER LISTS INTERFACE                      *
1763  *********************************************************************/
1764
1765 /**
1766  *      cpufreq_register_notifier - register a driver with cpufreq
1767  *      @nb: notifier function to register
1768  *      @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1769  *
1770  *      Add a driver to one of two lists: either a list of drivers that
1771  *      are notified about clock rate changes (once before and once after
1772  *      the transition), or a list of drivers that are notified about
1773  *      changes in cpufreq policy.
1774  *
1775  *      This function may sleep, and has the same return conditions as
1776  *      blocking_notifier_chain_register.
1777  */
1778 int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list)
1779 {
1780         int ret;
1781
1782         if (cpufreq_disabled())
1783                 return -EINVAL;
1784
1785         WARN_ON(!init_cpufreq_transition_notifier_list_called);
1786
1787         switch (list) {
1788         case CPUFREQ_TRANSITION_NOTIFIER:
1789                 ret = srcu_notifier_chain_register(
1790                                 &cpufreq_transition_notifier_list, nb);
1791                 break;
1792         case CPUFREQ_POLICY_NOTIFIER:
1793                 ret = blocking_notifier_chain_register(
1794                                 &cpufreq_policy_notifier_list, nb);
1795                 break;
1796         default:
1797                 ret = -EINVAL;
1798         }
1799
1800         return ret;
1801 }
1802 EXPORT_SYMBOL(cpufreq_register_notifier);
1803
1804 /**
1805  *      cpufreq_unregister_notifier - unregister a driver with cpufreq
1806  *      @nb: notifier block to be unregistered
1807  *      @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1808  *
1809  *      Remove a driver from the CPU frequency notifier list.
1810  *
1811  *      This function may sleep, and has the same return conditions as
1812  *      blocking_notifier_chain_unregister.
1813  */
1814 int cpufreq_unregister_notifier(struct notifier_block *nb, unsigned int list)
1815 {
1816         int ret;
1817
1818         if (cpufreq_disabled())
1819                 return -EINVAL;
1820
1821         switch (list) {
1822         case CPUFREQ_TRANSITION_NOTIFIER:
1823                 ret = srcu_notifier_chain_unregister(
1824                                 &cpufreq_transition_notifier_list, nb);
1825                 break;
1826         case CPUFREQ_POLICY_NOTIFIER:
1827                 ret = blocking_notifier_chain_unregister(
1828                                 &cpufreq_policy_notifier_list, nb);
1829                 break;
1830         default:
1831                 ret = -EINVAL;
1832         }
1833
1834         return ret;
1835 }
1836 EXPORT_SYMBOL(cpufreq_unregister_notifier);
1837
1838
1839 /*********************************************************************
1840  *                              GOVERNORS                            *
1841  *********************************************************************/
1842
1843 /* Must set freqs->new to intermediate frequency */
1844 static int __target_intermediate(struct cpufreq_policy *policy,
1845                                  struct cpufreq_freqs *freqs, int index)
1846 {
1847         int ret;
1848
1849         freqs->new = cpufreq_driver->get_intermediate(policy, index);
1850
1851         /* We don't need to switch to intermediate freq */
1852         if (!freqs->new)
1853                 return 0;
1854
1855         pr_debug("%s: cpu: %d, switching to intermediate freq: oldfreq: %u, intermediate freq: %u\n",
1856                  __func__, policy->cpu, freqs->old, freqs->new);
1857
1858         cpufreq_freq_transition_begin(policy, freqs);
1859         ret = cpufreq_driver->target_intermediate(policy, index);
1860         cpufreq_freq_transition_end(policy, freqs, ret);
1861
1862         if (ret)
1863                 pr_err("%s: Failed to change to intermediate frequency: %d\n",
1864                        __func__, ret);
1865
1866         return ret;
1867 }
1868
1869 static int __target_index(struct cpufreq_policy *policy,
1870                           struct cpufreq_frequency_table *freq_table, int index)
1871 {
1872         struct cpufreq_freqs freqs = {.old = policy->cur, .flags = 0};
1873         unsigned int intermediate_freq = 0;
1874         int retval = -EINVAL;
1875         bool notify;
1876
1877         notify = !(cpufreq_driver->flags & CPUFREQ_ASYNC_NOTIFICATION);
1878         if (notify) {
1879                 /* Handle switching to intermediate frequency */
1880                 if (cpufreq_driver->get_intermediate) {
1881                         retval = __target_intermediate(policy, &freqs, index);
1882                         if (retval)
1883                                 return retval;
1884
1885                         intermediate_freq = freqs.new;
1886                         /* Set old freq to intermediate */
1887                         if (intermediate_freq)
1888                                 freqs.old = freqs.new;
1889                 }
1890
1891                 freqs.new = freq_table[index].frequency;
1892                 pr_debug("%s: cpu: %d, oldfreq: %u, new freq: %u\n",
1893                          __func__, policy->cpu, freqs.old, freqs.new);
1894
1895                 cpufreq_freq_transition_begin(policy, &freqs);
1896         }
1897
1898         retval = cpufreq_driver->target_index(policy, index);
1899         if (retval)
1900                 pr_err("%s: Failed to change cpu frequency: %d\n", __func__,
1901                        retval);
1902
1903         if (notify) {
1904                 cpufreq_freq_transition_end(policy, &freqs, retval);
1905
1906                 /*
1907                  * Failed after setting to intermediate freq? Driver should have
1908                  * reverted back to initial frequency and so should we. Check
1909                  * here for intermediate_freq instead of get_intermediate, in
1910                  * case we have't switched to intermediate freq at all.
1911                  */
1912                 if (unlikely(retval && intermediate_freq)) {
1913                         freqs.old = intermediate_freq;
1914                         freqs.new = policy->restore_freq;
1915                         cpufreq_freq_transition_begin(policy, &freqs);
1916                         cpufreq_freq_transition_end(policy, &freqs, 0);
1917                 }
1918         }
1919
1920         return retval;
1921 }
1922
1923 int __cpufreq_driver_target(struct cpufreq_policy *policy,
1924                             unsigned int target_freq,
1925                             unsigned int relation)
1926 {
1927         unsigned int old_target_freq = target_freq;
1928         int retval = -EINVAL;
1929
1930         if (cpufreq_disabled())
1931                 return -ENODEV;
1932
1933         /* Make sure that target_freq is within supported range */
1934         if (target_freq > policy->max)
1935                 target_freq = policy->max;
1936         if (target_freq < policy->min)
1937                 target_freq = policy->min;
1938
1939         pr_debug("target for CPU %u: %u kHz, relation %u, requested %u kHz\n",
1940                  policy->cpu, target_freq, relation, old_target_freq);
1941
1942         /*
1943          * This might look like a redundant call as we are checking it again
1944          * after finding index. But it is left intentionally for cases where
1945          * exactly same freq is called again and so we can save on few function
1946          * calls.
1947          */
1948         if (target_freq == policy->cur)
1949                 return 0;
1950
1951         /* Save last value to restore later on errors */
1952         policy->restore_freq = policy->cur;
1953
1954         if (cpufreq_driver->target)
1955                 retval = cpufreq_driver->target(policy, target_freq, relation);
1956         else if (cpufreq_driver->target_index) {
1957                 struct cpufreq_frequency_table *freq_table;
1958                 int index;
1959
1960                 freq_table = cpufreq_frequency_get_table(policy->cpu);
1961                 if (unlikely(!freq_table)) {
1962                         pr_err("%s: Unable to find freq_table\n", __func__);
1963                         goto out;
1964                 }
1965
1966                 retval = cpufreq_frequency_table_target(policy, freq_table,
1967                                 target_freq, relation, &index);
1968                 if (unlikely(retval)) {
1969                         pr_err("%s: Unable to find matching freq\n", __func__);
1970                         goto out;
1971                 }
1972
1973                 if (freq_table[index].frequency == policy->cur) {
1974                         retval = 0;
1975                         goto out;
1976                 }
1977
1978                 retval = __target_index(policy, freq_table, index);
1979         }
1980
1981 out:
1982         return retval;
1983 }
1984 EXPORT_SYMBOL_GPL(__cpufreq_driver_target);
1985
1986 int cpufreq_driver_target(struct cpufreq_policy *policy,
1987                           unsigned int target_freq,
1988                           unsigned int relation)
1989 {
1990         int ret = -EINVAL;
1991
1992         down_write(&policy->rwsem);
1993
1994         ret = __cpufreq_driver_target(policy, target_freq, relation);
1995
1996         up_write(&policy->rwsem);
1997
1998         return ret;
1999 }
2000 EXPORT_SYMBOL_GPL(cpufreq_driver_target);
2001
2002 /*
2003  * when "event" is CPUFREQ_GOV_LIMITS
2004  */
2005
2006 static int __cpufreq_governor(struct cpufreq_policy *policy,
2007                                         unsigned int event)
2008 {
2009         int ret;
2010
2011         /* Only must be defined when default governor is known to have latency
2012            restrictions, like e.g. conservative or ondemand.
2013            That this is the case is already ensured in Kconfig
2014         */
2015 #ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE
2016         struct cpufreq_governor *gov = &cpufreq_gov_performance;
2017 #else
2018         struct cpufreq_governor *gov = NULL;
2019 #endif
2020
2021         /* Don't start any governor operations if we are entering suspend */
2022         if (cpufreq_suspended)
2023                 return 0;
2024
2025         if (policy->governor->max_transition_latency &&
2026             policy->cpuinfo.transition_latency >
2027             policy->governor->max_transition_latency) {
2028                 if (!gov)
2029                         return -EINVAL;
2030                 else {
2031                         pr_warn("%s governor failed, too long transition latency of HW, fallback to %s governor\n",
2032                                 policy->governor->name, gov->name);
2033                         policy->governor = gov;
2034                 }
2035         }
2036
2037         if (event == CPUFREQ_GOV_POLICY_INIT)
2038                 if (!try_module_get(policy->governor->owner))
2039                         return -EINVAL;
2040
2041         pr_debug("__cpufreq_governor for CPU %u, event %u\n",
2042                  policy->cpu, event);
2043
2044         mutex_lock(&cpufreq_governor_lock);
2045         if ((policy->governor_enabled && event == CPUFREQ_GOV_START)
2046             || (!policy->governor_enabled
2047             && (event == CPUFREQ_GOV_LIMITS || event == CPUFREQ_GOV_STOP))) {
2048                 mutex_unlock(&cpufreq_governor_lock);
2049                 return -EBUSY;
2050         }
2051
2052         if (event == CPUFREQ_GOV_STOP)
2053                 policy->governor_enabled = false;
2054         else if (event == CPUFREQ_GOV_START)
2055                 policy->governor_enabled = true;
2056
2057         mutex_unlock(&cpufreq_governor_lock);
2058
2059         ret = policy->governor->governor(policy, event);
2060
2061         if (!ret) {
2062                 if (event == CPUFREQ_GOV_POLICY_INIT)
2063                         policy->governor->initialized++;
2064                 else if (event == CPUFREQ_GOV_POLICY_EXIT)
2065                         policy->governor->initialized--;
2066         } else {
2067                 /* Restore original values */
2068                 mutex_lock(&cpufreq_governor_lock);
2069                 if (event == CPUFREQ_GOV_STOP)
2070                         policy->governor_enabled = true;
2071                 else if (event == CPUFREQ_GOV_START)
2072                         policy->governor_enabled = false;
2073                 mutex_unlock(&cpufreq_governor_lock);
2074         }
2075
2076         if (((event == CPUFREQ_GOV_POLICY_INIT) && ret) ||
2077                         ((event == CPUFREQ_GOV_POLICY_EXIT) && !ret))
2078                 module_put(policy->governor->owner);
2079
2080         return ret;
2081 }
2082
2083 int cpufreq_register_governor(struct cpufreq_governor *governor)
2084 {
2085         int err;
2086
2087         if (!governor)
2088                 return -EINVAL;
2089
2090         if (cpufreq_disabled())
2091                 return -ENODEV;
2092
2093         mutex_lock(&cpufreq_governor_mutex);
2094
2095         governor->initialized = 0;
2096         err = -EBUSY;
2097         if (__find_governor(governor->name) == NULL) {
2098                 err = 0;
2099                 list_add(&governor->governor_list, &cpufreq_governor_list);
2100         }
2101
2102         mutex_unlock(&cpufreq_governor_mutex);
2103         return err;
2104 }
2105 EXPORT_SYMBOL_GPL(cpufreq_register_governor);
2106
2107 void cpufreq_unregister_governor(struct cpufreq_governor *governor)
2108 {
2109         int cpu;
2110
2111         if (!governor)
2112                 return;
2113
2114         if (cpufreq_disabled())
2115                 return;
2116
2117         for_each_present_cpu(cpu) {
2118                 if (cpu_online(cpu))
2119                         continue;
2120                 if (!strcmp(per_cpu(cpufreq_cpu_governor, cpu), governor->name))
2121                         strcpy(per_cpu(cpufreq_cpu_governor, cpu), "\0");
2122         }
2123
2124         mutex_lock(&cpufreq_governor_mutex);
2125         list_del(&governor->governor_list);
2126         mutex_unlock(&cpufreq_governor_mutex);
2127         return;
2128 }
2129 EXPORT_SYMBOL_GPL(cpufreq_unregister_governor);
2130
2131
2132 /*********************************************************************
2133  *                          POLICY INTERFACE                         *
2134  *********************************************************************/
2135
2136 /**
2137  * cpufreq_get_policy - get the current cpufreq_policy
2138  * @policy: struct cpufreq_policy into which the current cpufreq_policy
2139  *      is written
2140  *
2141  * Reads the current cpufreq policy.
2142  */
2143 int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
2144 {
2145         struct cpufreq_policy *cpu_policy;
2146         if (!policy)
2147                 return -EINVAL;
2148
2149         cpu_policy = cpufreq_cpu_get(cpu);
2150         if (!cpu_policy)
2151                 return -EINVAL;
2152
2153         memcpy(policy, cpu_policy, sizeof(*policy));
2154
2155         cpufreq_cpu_put(cpu_policy);
2156         return 0;
2157 }
2158 EXPORT_SYMBOL(cpufreq_get_policy);
2159
2160 /*
2161  * policy : current policy.
2162  * new_policy: policy to be set.
2163  */
2164 static int cpufreq_set_policy(struct cpufreq_policy *policy,
2165                                 struct cpufreq_policy *new_policy)
2166 {
2167         struct cpufreq_governor *old_gov;
2168         int ret;
2169
2170         pr_debug("setting new policy for CPU %u: %u - %u kHz\n",
2171                  new_policy->cpu, new_policy->min, new_policy->max);
2172
2173         memcpy(&new_policy->cpuinfo, &policy->cpuinfo, sizeof(policy->cpuinfo));
2174
2175         if (new_policy->min > policy->max || new_policy->max < policy->min)
2176                 return -EINVAL;
2177
2178         /* verify the cpu speed can be set within this limit */
2179         ret = cpufreq_driver->verify(new_policy);
2180         if (ret)
2181                 return ret;
2182
2183         /* adjust if necessary - all reasons */
2184         blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2185                         CPUFREQ_ADJUST, new_policy);
2186
2187         /* adjust if necessary - hardware incompatibility*/
2188         blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2189                         CPUFREQ_INCOMPATIBLE, new_policy);
2190
2191         /*
2192          * verify the cpu speed can be set within this limit, which might be
2193          * different to the first one
2194          */
2195         ret = cpufreq_driver->verify(new_policy);
2196         if (ret)
2197                 return ret;
2198
2199         /* notification of the new policy */
2200         blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2201                         CPUFREQ_NOTIFY, new_policy);
2202
2203         policy->min = new_policy->min;
2204         policy->max = new_policy->max;
2205
2206         pr_debug("new min and max freqs are %u - %u kHz\n",
2207                  policy->min, policy->max);
2208
2209         if (cpufreq_driver->setpolicy) {
2210                 policy->policy = new_policy->policy;
2211                 pr_debug("setting range\n");
2212                 return cpufreq_driver->setpolicy(new_policy);
2213         }
2214
2215         if (new_policy->governor == policy->governor)
2216                 goto out;
2217
2218         pr_debug("governor switch\n");
2219
2220         /* save old, working values */
2221         old_gov = policy->governor;
2222         /* end old governor */
2223         if (old_gov) {
2224                 __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
2225                 up_write(&policy->rwsem);
2226                 __cpufreq_governor(policy, CPUFREQ_GOV_POLICY_EXIT);
2227                 down_write(&policy->rwsem);
2228         }
2229
2230         /* start new governor */
2231         policy->governor = new_policy->governor;
2232         if (!__cpufreq_governor(policy, CPUFREQ_GOV_POLICY_INIT)) {
2233                 if (!__cpufreq_governor(policy, CPUFREQ_GOV_START))
2234                         goto out;
2235
2236                 up_write(&policy->rwsem);
2237                 __cpufreq_governor(policy, CPUFREQ_GOV_POLICY_EXIT);
2238                 down_write(&policy->rwsem);
2239         }
2240
2241         /* new governor failed, so re-start old one */
2242         pr_debug("starting governor %s failed\n", policy->governor->name);
2243         if (old_gov) {
2244                 policy->governor = old_gov;
2245                 __cpufreq_governor(policy, CPUFREQ_GOV_POLICY_INIT);
2246                 __cpufreq_governor(policy, CPUFREQ_GOV_START);
2247         }
2248
2249         return -EINVAL;
2250
2251  out:
2252         pr_debug("governor: change or update limits\n");
2253         return __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
2254 }
2255
2256 /**
2257  *      cpufreq_update_policy - re-evaluate an existing cpufreq policy
2258  *      @cpu: CPU which shall be re-evaluated
2259  *
2260  *      Useful for policy notifiers which have different necessities
2261  *      at different times.
2262  */
2263 int cpufreq_update_policy(unsigned int cpu)
2264 {
2265         struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
2266         struct cpufreq_policy new_policy;
2267         int ret;
2268
2269         if (!policy)
2270                 return -ENODEV;
2271
2272         down_write(&policy->rwsem);
2273
2274         pr_debug("updating policy for CPU %u\n", cpu);
2275         memcpy(&new_policy, policy, sizeof(*policy));
2276         new_policy.min = policy->user_policy.min;
2277         new_policy.max = policy->user_policy.max;
2278         new_policy.policy = policy->user_policy.policy;
2279         new_policy.governor = policy->user_policy.governor;
2280
2281         /*
2282          * BIOS might change freq behind our back
2283          * -> ask driver for current freq and notify governors about a change
2284          */
2285         if (cpufreq_driver->get && !cpufreq_driver->setpolicy) {
2286                 new_policy.cur = cpufreq_driver->get(cpu);
2287                 if (WARN_ON(!new_policy.cur)) {
2288                         ret = -EIO;
2289                         goto unlock;
2290                 }
2291
2292                 if (!policy->cur) {
2293                         pr_debug("Driver did not initialize current freq\n");
2294                         policy->cur = new_policy.cur;
2295                 } else {
2296                         if (policy->cur != new_policy.cur && has_target())
2297                                 cpufreq_out_of_sync(cpu, policy->cur,
2298                                                                 new_policy.cur);
2299                 }
2300         }
2301
2302         ret = cpufreq_set_policy(policy, &new_policy);
2303
2304 unlock:
2305         up_write(&policy->rwsem);
2306
2307         cpufreq_cpu_put(policy);
2308         return ret;
2309 }
2310 EXPORT_SYMBOL(cpufreq_update_policy);
2311
2312 static int cpufreq_cpu_callback(struct notifier_block *nfb,
2313                                         unsigned long action, void *hcpu)
2314 {
2315         unsigned int cpu = (unsigned long)hcpu;
2316         struct device *dev;
2317
2318         dev = get_cpu_device(cpu);
2319         if (dev) {
2320                 switch (action & ~CPU_TASKS_FROZEN) {
2321                 case CPU_ONLINE:
2322                         __cpufreq_add_dev(dev, NULL);
2323                         break;
2324
2325                 case CPU_DOWN_PREPARE:
2326                         __cpufreq_remove_dev_prepare(dev, NULL);
2327                         break;
2328
2329                 case CPU_POST_DEAD:
2330                         __cpufreq_remove_dev_finish(dev, NULL);
2331                         break;
2332
2333                 case CPU_DOWN_FAILED:
2334                         __cpufreq_add_dev(dev, NULL);
2335                         break;
2336                 }
2337         }
2338         return NOTIFY_OK;
2339 }
2340
2341 static struct notifier_block __refdata cpufreq_cpu_notifier = {
2342         .notifier_call = cpufreq_cpu_callback,
2343 };
2344
2345 /*********************************************************************
2346  *               BOOST                                               *
2347  *********************************************************************/
2348 static int cpufreq_boost_set_sw(int state)
2349 {
2350         struct cpufreq_frequency_table *freq_table;
2351         struct cpufreq_policy *policy;
2352         int ret = -EINVAL;
2353
2354         list_for_each_entry(policy, &cpufreq_policy_list, policy_list) {
2355                 freq_table = cpufreq_frequency_get_table(policy->cpu);
2356                 if (freq_table) {
2357                         ret = cpufreq_frequency_table_cpuinfo(policy,
2358                                                         freq_table);
2359                         if (ret) {
2360                                 pr_err("%s: Policy frequency update failed\n",
2361                                        __func__);
2362                                 break;
2363                         }
2364                         policy->user_policy.max = policy->max;
2365                         __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
2366                 }
2367         }
2368
2369         return ret;
2370 }
2371
2372 int cpufreq_boost_trigger_state(int state)
2373 {
2374         unsigned long flags;
2375         int ret = 0;
2376
2377         if (cpufreq_driver->boost_enabled == state)
2378                 return 0;
2379
2380         write_lock_irqsave(&cpufreq_driver_lock, flags);
2381         cpufreq_driver->boost_enabled = state;
2382         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2383
2384         ret = cpufreq_driver->set_boost(state);
2385         if (ret) {
2386                 write_lock_irqsave(&cpufreq_driver_lock, flags);
2387                 cpufreq_driver->boost_enabled = !state;
2388                 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2389
2390                 pr_err("%s: Cannot %s BOOST\n",
2391                        __func__, state ? "enable" : "disable");
2392         }
2393
2394         return ret;
2395 }
2396
2397 int cpufreq_boost_supported(void)
2398 {
2399         if (likely(cpufreq_driver))
2400                 return cpufreq_driver->boost_supported;
2401
2402         return 0;
2403 }
2404 EXPORT_SYMBOL_GPL(cpufreq_boost_supported);
2405
2406 int cpufreq_boost_enabled(void)
2407 {
2408         return cpufreq_driver->boost_enabled;
2409 }
2410 EXPORT_SYMBOL_GPL(cpufreq_boost_enabled);
2411
2412 /*********************************************************************
2413  *               REGISTER / UNREGISTER CPUFREQ DRIVER                *
2414  *********************************************************************/
2415
2416 /**
2417  * cpufreq_register_driver - register a CPU Frequency driver
2418  * @driver_data: A struct cpufreq_driver containing the values#
2419  * submitted by the CPU Frequency driver.
2420  *
2421  * Registers a CPU Frequency driver to this core code. This code
2422  * returns zero on success, -EBUSY when another driver got here first
2423  * (and isn't unregistered in the meantime).
2424  *
2425  */
2426 int cpufreq_register_driver(struct cpufreq_driver *driver_data)
2427 {
2428         unsigned long flags;
2429         int ret;
2430
2431         if (cpufreq_disabled())
2432                 return -ENODEV;
2433
2434         if (!driver_data || !driver_data->verify || !driver_data->init ||
2435             !(driver_data->setpolicy || driver_data->target_index ||
2436                     driver_data->target) ||
2437              (driver_data->setpolicy && (driver_data->target_index ||
2438                     driver_data->target)) ||
2439              (!!driver_data->get_intermediate != !!driver_data->target_intermediate))
2440                 return -EINVAL;
2441
2442         pr_debug("trying to register driver %s\n", driver_data->name);
2443
2444         if (driver_data->setpolicy)
2445                 driver_data->flags |= CPUFREQ_CONST_LOOPS;
2446
2447         write_lock_irqsave(&cpufreq_driver_lock, flags);
2448         if (cpufreq_driver) {
2449                 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2450                 return -EEXIST;
2451         }
2452         cpufreq_driver = driver_data;
2453         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2454
2455         if (cpufreq_boost_supported()) {
2456                 /*
2457                  * Check if driver provides function to enable boost -
2458                  * if not, use cpufreq_boost_set_sw as default
2459                  */
2460                 if (!cpufreq_driver->set_boost)
2461                         cpufreq_driver->set_boost = cpufreq_boost_set_sw;
2462
2463                 ret = cpufreq_sysfs_create_file(&boost.attr);
2464                 if (ret) {
2465                         pr_err("%s: cannot register global BOOST sysfs file\n",
2466                                __func__);
2467                         goto err_null_driver;
2468                 }
2469         }
2470
2471         ret = subsys_interface_register(&cpufreq_interface);
2472         if (ret)
2473                 goto err_boost_unreg;
2474
2475         if (!(cpufreq_driver->flags & CPUFREQ_STICKY)) {
2476                 int i;
2477                 ret = -ENODEV;
2478
2479                 /* check for at least one working CPU */
2480                 for (i = 0; i < nr_cpu_ids; i++)
2481                         if (cpu_possible(i) && per_cpu(cpufreq_cpu_data, i)) {
2482                                 ret = 0;
2483                                 break;
2484                         }
2485
2486                 /* if all ->init() calls failed, unregister */
2487                 if (ret) {
2488                         pr_debug("no CPU initialized for driver %s\n",
2489                                  driver_data->name);
2490                         goto err_if_unreg;
2491                 }
2492         }
2493
2494         register_hotcpu_notifier(&cpufreq_cpu_notifier);
2495         pr_debug("driver %s up and running\n", driver_data->name);
2496
2497         return 0;
2498 err_if_unreg:
2499         subsys_interface_unregister(&cpufreq_interface);
2500 err_boost_unreg:
2501         if (cpufreq_boost_supported())
2502                 cpufreq_sysfs_remove_file(&boost.attr);
2503 err_null_driver:
2504         write_lock_irqsave(&cpufreq_driver_lock, flags);
2505         cpufreq_driver = NULL;
2506         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2507         return ret;
2508 }
2509 EXPORT_SYMBOL_GPL(cpufreq_register_driver);
2510
2511 /**
2512  * cpufreq_unregister_driver - unregister the current CPUFreq driver
2513  *
2514  * Unregister the current CPUFreq driver. Only call this if you have
2515  * the right to do so, i.e. if you have succeeded in initialising before!
2516  * Returns zero if successful, and -EINVAL if the cpufreq_driver is
2517  * currently not initialised.
2518  */
2519 int cpufreq_unregister_driver(struct cpufreq_driver *driver)
2520 {
2521         unsigned long flags;
2522
2523         if (!cpufreq_driver || (driver != cpufreq_driver))
2524                 return -EINVAL;
2525
2526         pr_debug("unregistering driver %s\n", driver->name);
2527
2528         subsys_interface_unregister(&cpufreq_interface);
2529         if (cpufreq_boost_supported())
2530                 cpufreq_sysfs_remove_file(&boost.attr);
2531
2532         unregister_hotcpu_notifier(&cpufreq_cpu_notifier);
2533
2534         down_write(&cpufreq_rwsem);
2535         write_lock_irqsave(&cpufreq_driver_lock, flags);
2536
2537         cpufreq_driver = NULL;
2538
2539         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2540         up_write(&cpufreq_rwsem);
2541
2542         return 0;
2543 }
2544 EXPORT_SYMBOL_GPL(cpufreq_unregister_driver);
2545
2546 static int __init cpufreq_core_init(void)
2547 {
2548         if (cpufreq_disabled())
2549                 return -ENODEV;
2550
2551         cpufreq_global_kobject = kobject_create();
2552         BUG_ON(!cpufreq_global_kobject);
2553
2554         return 0;
2555 }
2556 core_initcall(cpufreq_core_init);