OSDN Git Service

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