OSDN Git Service

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