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