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