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