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