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