pds_core: remove CONFIG_DEBUG_FS from makefile
[linux-2.6-microblaze.git] / drivers / cpufreq / cpufreq.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /*
3  *  linux/drivers/cpufreq/cpufreq.c
4  *
5  *  Copyright (C) 2001 Russell King
6  *            (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
7  *            (C) 2013 Viresh Kumar <viresh.kumar@linaro.org>
8  *
9  *  Oct 2005 - Ashok Raj <ashok.raj@intel.com>
10  *      Added handling for CPU hotplug
11  *  Feb 2006 - Jacob Shin <jacob.shin@amd.com>
12  *      Fix handling for CPU hotplug -- affected CPUs
13  */
14
15 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
16
17 #include <linux/cpu.h>
18 #include <linux/cpufreq.h>
19 #include <linux/cpu_cooling.h>
20 #include <linux/delay.h>
21 #include <linux/device.h>
22 #include <linux/init.h>
23 #include <linux/kernel_stat.h>
24 #include <linux/module.h>
25 #include <linux/mutex.h>
26 #include <linux/pm_qos.h>
27 #include <linux/slab.h>
28 #include <linux/suspend.h>
29 #include <linux/syscore_ops.h>
30 #include <linux/tick.h>
31 #include <linux/units.h>
32 #include <trace/events/power.h>
33
34 static LIST_HEAD(cpufreq_policy_list);
35
36 /* Macros to iterate over CPU policies */
37 #define for_each_suitable_policy(__policy, __active)                     \
38         list_for_each_entry(__policy, &cpufreq_policy_list, policy_list) \
39                 if ((__active) == !policy_is_inactive(__policy))
40
41 #define for_each_active_policy(__policy)                \
42         for_each_suitable_policy(__policy, true)
43 #define for_each_inactive_policy(__policy)              \
44         for_each_suitable_policy(__policy, false)
45
46 /* Iterate over governors */
47 static LIST_HEAD(cpufreq_governor_list);
48 #define for_each_governor(__governor)                           \
49         list_for_each_entry(__governor, &cpufreq_governor_list, governor_list)
50
51 static char default_governor[CPUFREQ_NAME_LEN];
52
53 /*
54  * The "cpufreq driver" - the arch- or hardware-dependent low
55  * level driver of CPUFreq support, and its spinlock. This lock
56  * also protects the cpufreq_cpu_data array.
57  */
58 static struct cpufreq_driver *cpufreq_driver;
59 static DEFINE_PER_CPU(struct cpufreq_policy *, cpufreq_cpu_data);
60 static DEFINE_RWLOCK(cpufreq_driver_lock);
61
62 static DEFINE_STATIC_KEY_FALSE(cpufreq_freq_invariance);
63 bool cpufreq_supports_freq_invariance(void)
64 {
65         return static_branch_likely(&cpufreq_freq_invariance);
66 }
67
68 /* Flag to suspend/resume CPUFreq governors */
69 static bool cpufreq_suspended;
70
71 static inline bool has_target(void)
72 {
73         return cpufreq_driver->target_index || cpufreq_driver->target;
74 }
75
76 bool has_target_index(void)
77 {
78         return !!cpufreq_driver->target_index;
79 }
80
81 /* internal prototypes */
82 static unsigned int __cpufreq_get(struct cpufreq_policy *policy);
83 static int cpufreq_init_governor(struct cpufreq_policy *policy);
84 static void cpufreq_exit_governor(struct cpufreq_policy *policy);
85 static void cpufreq_governor_limits(struct cpufreq_policy *policy);
86 static int cpufreq_set_policy(struct cpufreq_policy *policy,
87                               struct cpufreq_governor *new_gov,
88                               unsigned int new_pol);
89
90 /*
91  * Two notifier lists: the "policy" list is involved in the
92  * validation process for a new CPU frequency policy; the
93  * "transition" list for kernel code that needs to handle
94  * changes to devices when the CPU clock speed changes.
95  * The mutex locks both lists.
96  */
97 static BLOCKING_NOTIFIER_HEAD(cpufreq_policy_notifier_list);
98 SRCU_NOTIFIER_HEAD_STATIC(cpufreq_transition_notifier_list);
99
100 static int off __read_mostly;
101 static int cpufreq_disabled(void)
102 {
103         return off;
104 }
105 void disable_cpufreq(void)
106 {
107         off = 1;
108 }
109 static DEFINE_MUTEX(cpufreq_governor_mutex);
110
111 bool have_governor_per_policy(void)
112 {
113         return !!(cpufreq_driver->flags & CPUFREQ_HAVE_GOVERNOR_PER_POLICY);
114 }
115 EXPORT_SYMBOL_GPL(have_governor_per_policy);
116
117 static struct kobject *cpufreq_global_kobject;
118
119 struct kobject *get_governor_parent_kobj(struct cpufreq_policy *policy)
120 {
121         if (have_governor_per_policy())
122                 return &policy->kobj;
123         else
124                 return cpufreq_global_kobject;
125 }
126 EXPORT_SYMBOL_GPL(get_governor_parent_kobj);
127
128 static inline u64 get_cpu_idle_time_jiffy(unsigned int cpu, u64 *wall)
129 {
130         struct kernel_cpustat kcpustat;
131         u64 cur_wall_time;
132         u64 idle_time;
133         u64 busy_time;
134
135         cur_wall_time = jiffies64_to_nsecs(get_jiffies_64());
136
137         kcpustat_cpu_fetch(&kcpustat, cpu);
138
139         busy_time = kcpustat.cpustat[CPUTIME_USER];
140         busy_time += kcpustat.cpustat[CPUTIME_SYSTEM];
141         busy_time += kcpustat.cpustat[CPUTIME_IRQ];
142         busy_time += kcpustat.cpustat[CPUTIME_SOFTIRQ];
143         busy_time += kcpustat.cpustat[CPUTIME_STEAL];
144         busy_time += kcpustat.cpustat[CPUTIME_NICE];
145
146         idle_time = cur_wall_time - busy_time;
147         if (wall)
148                 *wall = div_u64(cur_wall_time, NSEC_PER_USEC);
149
150         return div_u64(idle_time, NSEC_PER_USEC);
151 }
152
153 u64 get_cpu_idle_time(unsigned int cpu, u64 *wall, int io_busy)
154 {
155         u64 idle_time = get_cpu_idle_time_us(cpu, io_busy ? wall : NULL);
156
157         if (idle_time == -1ULL)
158                 return get_cpu_idle_time_jiffy(cpu, wall);
159         else if (!io_busy)
160                 idle_time += get_cpu_iowait_time_us(cpu, wall);
161
162         return idle_time;
163 }
164 EXPORT_SYMBOL_GPL(get_cpu_idle_time);
165
166 /*
167  * This is a generic cpufreq init() routine which can be used by cpufreq
168  * drivers of SMP systems. It will do following:
169  * - validate & show freq table passed
170  * - set policies transition latency
171  * - policy->cpus with all possible CPUs
172  */
173 void cpufreq_generic_init(struct cpufreq_policy *policy,
174                 struct cpufreq_frequency_table *table,
175                 unsigned int transition_latency)
176 {
177         policy->freq_table = table;
178         policy->cpuinfo.transition_latency = transition_latency;
179
180         /*
181          * The driver only supports the SMP configuration where all processors
182          * share the clock and voltage and clock.
183          */
184         cpumask_setall(policy->cpus);
185 }
186 EXPORT_SYMBOL_GPL(cpufreq_generic_init);
187
188 struct cpufreq_policy *cpufreq_cpu_get_raw(unsigned int cpu)
189 {
190         struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
191
192         return policy && cpumask_test_cpu(cpu, policy->cpus) ? policy : NULL;
193 }
194 EXPORT_SYMBOL_GPL(cpufreq_cpu_get_raw);
195
196 unsigned int cpufreq_generic_get(unsigned int cpu)
197 {
198         struct cpufreq_policy *policy = cpufreq_cpu_get_raw(cpu);
199
200         if (!policy || IS_ERR(policy->clk)) {
201                 pr_err("%s: No %s associated to cpu: %d\n",
202                        __func__, policy ? "clk" : "policy", cpu);
203                 return 0;
204         }
205
206         return clk_get_rate(policy->clk) / 1000;
207 }
208 EXPORT_SYMBOL_GPL(cpufreq_generic_get);
209
210 /**
211  * cpufreq_cpu_get - Return policy for a CPU and mark it as busy.
212  * @cpu: CPU to find the policy for.
213  *
214  * Call cpufreq_cpu_get_raw() to obtain a cpufreq policy for @cpu and increment
215  * the kobject reference counter of that policy.  Return a valid policy on
216  * success or NULL on failure.
217  *
218  * The policy returned by this function has to be released with the help of
219  * cpufreq_cpu_put() to balance its kobject reference counter properly.
220  */
221 struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu)
222 {
223         struct cpufreq_policy *policy = NULL;
224         unsigned long flags;
225
226         if (WARN_ON(cpu >= nr_cpu_ids))
227                 return NULL;
228
229         /* get the cpufreq driver */
230         read_lock_irqsave(&cpufreq_driver_lock, flags);
231
232         if (cpufreq_driver) {
233                 /* get the CPU */
234                 policy = cpufreq_cpu_get_raw(cpu);
235                 if (policy)
236                         kobject_get(&policy->kobj);
237         }
238
239         read_unlock_irqrestore(&cpufreq_driver_lock, flags);
240
241         return policy;
242 }
243 EXPORT_SYMBOL_GPL(cpufreq_cpu_get);
244
245 /**
246  * cpufreq_cpu_put - Decrement kobject usage counter for cpufreq policy.
247  * @policy: cpufreq policy returned by cpufreq_cpu_get().
248  */
249 void cpufreq_cpu_put(struct cpufreq_policy *policy)
250 {
251         kobject_put(&policy->kobj);
252 }
253 EXPORT_SYMBOL_GPL(cpufreq_cpu_put);
254
255 /**
256  * cpufreq_cpu_release - Unlock a policy and decrement its usage counter.
257  * @policy: cpufreq policy returned by cpufreq_cpu_acquire().
258  */
259 void cpufreq_cpu_release(struct cpufreq_policy *policy)
260 {
261         if (WARN_ON(!policy))
262                 return;
263
264         lockdep_assert_held(&policy->rwsem);
265
266         up_write(&policy->rwsem);
267
268         cpufreq_cpu_put(policy);
269 }
270
271 /**
272  * cpufreq_cpu_acquire - Find policy for a CPU, mark it as busy and lock it.
273  * @cpu: CPU to find the policy for.
274  *
275  * Call cpufreq_cpu_get() to get a reference on the cpufreq policy for @cpu and
276  * if the policy returned by it is not NULL, acquire its rwsem for writing.
277  * Return the policy if it is active or release it and return NULL otherwise.
278  *
279  * The policy returned by this function has to be released with the help of
280  * cpufreq_cpu_release() in order to release its rwsem and balance its usage
281  * counter properly.
282  */
283 struct cpufreq_policy *cpufreq_cpu_acquire(unsigned int cpu)
284 {
285         struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
286
287         if (!policy)
288                 return NULL;
289
290         down_write(&policy->rwsem);
291
292         if (policy_is_inactive(policy)) {
293                 cpufreq_cpu_release(policy);
294                 return NULL;
295         }
296
297         return policy;
298 }
299
300 /*********************************************************************
301  *            EXTERNALLY AFFECTING FREQUENCY CHANGES                 *
302  *********************************************************************/
303
304 /**
305  * adjust_jiffies - Adjust the system "loops_per_jiffy".
306  * @val: CPUFREQ_PRECHANGE or CPUFREQ_POSTCHANGE.
307  * @ci: Frequency change information.
308  *
309  * This function alters the system "loops_per_jiffy" for the clock
310  * speed change. Note that loops_per_jiffy cannot be updated on SMP
311  * systems as each CPU might be scaled differently. So, use the arch
312  * per-CPU loops_per_jiffy value wherever possible.
313  */
314 static void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
315 {
316 #ifndef CONFIG_SMP
317         static unsigned long l_p_j_ref;
318         static unsigned int l_p_j_ref_freq;
319
320         if (ci->flags & CPUFREQ_CONST_LOOPS)
321                 return;
322
323         if (!l_p_j_ref_freq) {
324                 l_p_j_ref = loops_per_jiffy;
325                 l_p_j_ref_freq = ci->old;
326                 pr_debug("saving %lu as reference value for loops_per_jiffy; freq is %u kHz\n",
327                          l_p_j_ref, l_p_j_ref_freq);
328         }
329         if (val == CPUFREQ_POSTCHANGE && ci->old != ci->new) {
330                 loops_per_jiffy = cpufreq_scale(l_p_j_ref, l_p_j_ref_freq,
331                                                                 ci->new);
332                 pr_debug("scaling loops_per_jiffy to %lu for frequency %u kHz\n",
333                          loops_per_jiffy, ci->new);
334         }
335 #endif
336 }
337
338 /**
339  * cpufreq_notify_transition - Notify frequency transition and adjust jiffies.
340  * @policy: cpufreq policy to enable fast frequency switching for.
341  * @freqs: contain details of the frequency update.
342  * @state: set to CPUFREQ_PRECHANGE or CPUFREQ_POSTCHANGE.
343  *
344  * This function calls the transition notifiers and adjust_jiffies().
345  *
346  * It is called twice on all CPU frequency changes that have external effects.
347  */
348 static void cpufreq_notify_transition(struct cpufreq_policy *policy,
349                                       struct cpufreq_freqs *freqs,
350                                       unsigned int state)
351 {
352         int cpu;
353
354         BUG_ON(irqs_disabled());
355
356         if (cpufreq_disabled())
357                 return;
358
359         freqs->policy = policy;
360         freqs->flags = cpufreq_driver->flags;
361         pr_debug("notification %u of frequency transition to %u kHz\n",
362                  state, freqs->new);
363
364         switch (state) {
365         case CPUFREQ_PRECHANGE:
366                 /*
367                  * Detect if the driver reported a value as "old frequency"
368                  * which is not equal to what the cpufreq core thinks is
369                  * "old frequency".
370                  */
371                 if (policy->cur && policy->cur != freqs->old) {
372                         pr_debug("Warning: CPU frequency is %u, cpufreq assumed %u kHz\n",
373                                  freqs->old, policy->cur);
374                         freqs->old = policy->cur;
375                 }
376
377                 srcu_notifier_call_chain(&cpufreq_transition_notifier_list,
378                                          CPUFREQ_PRECHANGE, freqs);
379
380                 adjust_jiffies(CPUFREQ_PRECHANGE, freqs);
381                 break;
382
383         case CPUFREQ_POSTCHANGE:
384                 adjust_jiffies(CPUFREQ_POSTCHANGE, freqs);
385                 pr_debug("FREQ: %u - CPUs: %*pbl\n", freqs->new,
386                          cpumask_pr_args(policy->cpus));
387
388                 for_each_cpu(cpu, policy->cpus)
389                         trace_cpu_frequency(freqs->new, cpu);
390
391                 srcu_notifier_call_chain(&cpufreq_transition_notifier_list,
392                                          CPUFREQ_POSTCHANGE, freqs);
393
394                 cpufreq_stats_record_transition(policy, freqs->new);
395                 policy->cur = freqs->new;
396         }
397 }
398
399 /* Do post notifications when there are chances that transition has failed */
400 static void cpufreq_notify_post_transition(struct cpufreq_policy *policy,
401                 struct cpufreq_freqs *freqs, int transition_failed)
402 {
403         cpufreq_notify_transition(policy, freqs, CPUFREQ_POSTCHANGE);
404         if (!transition_failed)
405                 return;
406
407         swap(freqs->old, freqs->new);
408         cpufreq_notify_transition(policy, freqs, CPUFREQ_PRECHANGE);
409         cpufreq_notify_transition(policy, freqs, CPUFREQ_POSTCHANGE);
410 }
411
412 void cpufreq_freq_transition_begin(struct cpufreq_policy *policy,
413                 struct cpufreq_freqs *freqs)
414 {
415
416         /*
417          * Catch double invocations of _begin() which lead to self-deadlock.
418          * ASYNC_NOTIFICATION drivers are left out because the cpufreq core
419          * doesn't invoke _begin() on their behalf, and hence the chances of
420          * double invocations are very low. Moreover, there are scenarios
421          * where these checks can emit false-positive warnings in these
422          * drivers; so we avoid that by skipping them altogether.
423          */
424         WARN_ON(!(cpufreq_driver->flags & CPUFREQ_ASYNC_NOTIFICATION)
425                                 && current == policy->transition_task);
426
427 wait:
428         wait_event(policy->transition_wait, !policy->transition_ongoing);
429
430         spin_lock(&policy->transition_lock);
431
432         if (unlikely(policy->transition_ongoing)) {
433                 spin_unlock(&policy->transition_lock);
434                 goto wait;
435         }
436
437         policy->transition_ongoing = true;
438         policy->transition_task = current;
439
440         spin_unlock(&policy->transition_lock);
441
442         cpufreq_notify_transition(policy, freqs, CPUFREQ_PRECHANGE);
443 }
444 EXPORT_SYMBOL_GPL(cpufreq_freq_transition_begin);
445
446 void cpufreq_freq_transition_end(struct cpufreq_policy *policy,
447                 struct cpufreq_freqs *freqs, int transition_failed)
448 {
449         if (WARN_ON(!policy->transition_ongoing))
450                 return;
451
452         cpufreq_notify_post_transition(policy, freqs, transition_failed);
453
454         arch_set_freq_scale(policy->related_cpus,
455                             policy->cur,
456                             policy->cpuinfo.max_freq);
457
458         policy->transition_ongoing = false;
459         policy->transition_task = NULL;
460
461         wake_up(&policy->transition_wait);
462 }
463 EXPORT_SYMBOL_GPL(cpufreq_freq_transition_end);
464
465 /*
466  * Fast frequency switching status count.  Positive means "enabled", negative
467  * means "disabled" and 0 means "not decided yet".
468  */
469 static int cpufreq_fast_switch_count;
470 static DEFINE_MUTEX(cpufreq_fast_switch_lock);
471
472 static void cpufreq_list_transition_notifiers(void)
473 {
474         struct notifier_block *nb;
475
476         pr_info("Registered transition notifiers:\n");
477
478         mutex_lock(&cpufreq_transition_notifier_list.mutex);
479
480         for (nb = cpufreq_transition_notifier_list.head; nb; nb = nb->next)
481                 pr_info("%pS\n", nb->notifier_call);
482
483         mutex_unlock(&cpufreq_transition_notifier_list.mutex);
484 }
485
486 /**
487  * cpufreq_enable_fast_switch - Enable fast frequency switching for policy.
488  * @policy: cpufreq policy to enable fast frequency switching for.
489  *
490  * Try to enable fast frequency switching for @policy.
491  *
492  * The attempt will fail if there is at least one transition notifier registered
493  * at this point, as fast frequency switching is quite fundamentally at odds
494  * with transition notifiers.  Thus if successful, it will make registration of
495  * transition notifiers fail going forward.
496  */
497 void cpufreq_enable_fast_switch(struct cpufreq_policy *policy)
498 {
499         lockdep_assert_held(&policy->rwsem);
500
501         if (!policy->fast_switch_possible)
502                 return;
503
504         mutex_lock(&cpufreq_fast_switch_lock);
505         if (cpufreq_fast_switch_count >= 0) {
506                 cpufreq_fast_switch_count++;
507                 policy->fast_switch_enabled = true;
508         } else {
509                 pr_warn("CPU%u: Fast frequency switching not enabled\n",
510                         policy->cpu);
511                 cpufreq_list_transition_notifiers();
512         }
513         mutex_unlock(&cpufreq_fast_switch_lock);
514 }
515 EXPORT_SYMBOL_GPL(cpufreq_enable_fast_switch);
516
517 /**
518  * cpufreq_disable_fast_switch - Disable fast frequency switching for policy.
519  * @policy: cpufreq policy to disable fast frequency switching for.
520  */
521 void cpufreq_disable_fast_switch(struct cpufreq_policy *policy)
522 {
523         mutex_lock(&cpufreq_fast_switch_lock);
524         if (policy->fast_switch_enabled) {
525                 policy->fast_switch_enabled = false;
526                 if (!WARN_ON(cpufreq_fast_switch_count <= 0))
527                         cpufreq_fast_switch_count--;
528         }
529         mutex_unlock(&cpufreq_fast_switch_lock);
530 }
531 EXPORT_SYMBOL_GPL(cpufreq_disable_fast_switch);
532
533 static unsigned int __resolve_freq(struct cpufreq_policy *policy,
534                 unsigned int target_freq, unsigned int relation)
535 {
536         unsigned int idx;
537
538         target_freq = clamp_val(target_freq, policy->min, policy->max);
539
540         if (!policy->freq_table)
541                 return target_freq;
542
543         idx = cpufreq_frequency_table_target(policy, target_freq, relation);
544         policy->cached_resolved_idx = idx;
545         policy->cached_target_freq = target_freq;
546         return policy->freq_table[idx].frequency;
547 }
548
549 /**
550  * cpufreq_driver_resolve_freq - Map a target frequency to a driver-supported
551  * one.
552  * @policy: associated policy to interrogate
553  * @target_freq: target frequency to resolve.
554  *
555  * The target to driver frequency mapping is cached in the policy.
556  *
557  * Return: Lowest driver-supported frequency greater than or equal to the
558  * given target_freq, subject to policy (min/max) and driver limitations.
559  */
560 unsigned int cpufreq_driver_resolve_freq(struct cpufreq_policy *policy,
561                                          unsigned int target_freq)
562 {
563         return __resolve_freq(policy, target_freq, CPUFREQ_RELATION_LE);
564 }
565 EXPORT_SYMBOL_GPL(cpufreq_driver_resolve_freq);
566
567 unsigned int cpufreq_policy_transition_delay_us(struct cpufreq_policy *policy)
568 {
569         unsigned int latency;
570
571         if (policy->transition_delay_us)
572                 return policy->transition_delay_us;
573
574         latency = policy->cpuinfo.transition_latency / NSEC_PER_USEC;
575         if (latency) {
576                 /*
577                  * For platforms that can change the frequency very fast (< 10
578                  * us), the above formula gives a decent transition delay. But
579                  * for platforms where transition_latency is in milliseconds, it
580                  * ends up giving unrealistic values.
581                  *
582                  * Cap the default transition delay to 10 ms, which seems to be
583                  * a reasonable amount of time after which we should reevaluate
584                  * the frequency.
585                  */
586                 return min(latency * LATENCY_MULTIPLIER, (unsigned int)10000);
587         }
588
589         return LATENCY_MULTIPLIER;
590 }
591 EXPORT_SYMBOL_GPL(cpufreq_policy_transition_delay_us);
592
593 /*********************************************************************
594  *                          SYSFS INTERFACE                          *
595  *********************************************************************/
596 static ssize_t show_boost(struct kobject *kobj,
597                           struct kobj_attribute *attr, char *buf)
598 {
599         return sprintf(buf, "%d\n", cpufreq_driver->boost_enabled);
600 }
601
602 static ssize_t store_boost(struct kobject *kobj, struct kobj_attribute *attr,
603                            const char *buf, size_t count)
604 {
605         int ret, enable;
606
607         ret = sscanf(buf, "%d", &enable);
608         if (ret != 1 || enable < 0 || enable > 1)
609                 return -EINVAL;
610
611         if (cpufreq_boost_trigger_state(enable)) {
612                 pr_err("%s: Cannot %s BOOST!\n",
613                        __func__, enable ? "enable" : "disable");
614                 return -EINVAL;
615         }
616
617         pr_debug("%s: cpufreq BOOST %s\n",
618                  __func__, enable ? "enabled" : "disabled");
619
620         return count;
621 }
622 define_one_global_rw(boost);
623
624 static struct cpufreq_governor *find_governor(const char *str_governor)
625 {
626         struct cpufreq_governor *t;
627
628         for_each_governor(t)
629                 if (!strncasecmp(str_governor, t->name, CPUFREQ_NAME_LEN))
630                         return t;
631
632         return NULL;
633 }
634
635 static struct cpufreq_governor *get_governor(const char *str_governor)
636 {
637         struct cpufreq_governor *t;
638
639         mutex_lock(&cpufreq_governor_mutex);
640         t = find_governor(str_governor);
641         if (!t)
642                 goto unlock;
643
644         if (!try_module_get(t->owner))
645                 t = NULL;
646
647 unlock:
648         mutex_unlock(&cpufreq_governor_mutex);
649
650         return t;
651 }
652
653 static unsigned int cpufreq_parse_policy(char *str_governor)
654 {
655         if (!strncasecmp(str_governor, "performance", CPUFREQ_NAME_LEN))
656                 return CPUFREQ_POLICY_PERFORMANCE;
657
658         if (!strncasecmp(str_governor, "powersave", CPUFREQ_NAME_LEN))
659                 return CPUFREQ_POLICY_POWERSAVE;
660
661         return CPUFREQ_POLICY_UNKNOWN;
662 }
663
664 /**
665  * cpufreq_parse_governor - parse a governor string only for has_target()
666  * @str_governor: Governor name.
667  */
668 static struct cpufreq_governor *cpufreq_parse_governor(char *str_governor)
669 {
670         struct cpufreq_governor *t;
671
672         t = get_governor(str_governor);
673         if (t)
674                 return t;
675
676         if (request_module("cpufreq_%s", str_governor))
677                 return NULL;
678
679         return get_governor(str_governor);
680 }
681
682 /*
683  * cpufreq_per_cpu_attr_read() / show_##file_name() -
684  * print out cpufreq information
685  *
686  * Write out information from cpufreq_driver->policy[cpu]; object must be
687  * "unsigned int".
688  */
689
690 #define show_one(file_name, object)                     \
691 static ssize_t show_##file_name                         \
692 (struct cpufreq_policy *policy, char *buf)              \
693 {                                                       \
694         return sprintf(buf, "%u\n", policy->object);    \
695 }
696
697 show_one(cpuinfo_min_freq, cpuinfo.min_freq);
698 show_one(cpuinfo_max_freq, cpuinfo.max_freq);
699 show_one(cpuinfo_transition_latency, cpuinfo.transition_latency);
700 show_one(scaling_min_freq, min);
701 show_one(scaling_max_freq, max);
702
703 __weak unsigned int arch_freq_get_on_cpu(int cpu)
704 {
705         return 0;
706 }
707
708 static ssize_t show_scaling_cur_freq(struct cpufreq_policy *policy, char *buf)
709 {
710         ssize_t ret;
711         unsigned int freq;
712
713         freq = arch_freq_get_on_cpu(policy->cpu);
714         if (freq)
715                 ret = sprintf(buf, "%u\n", freq);
716         else if (cpufreq_driver->setpolicy && cpufreq_driver->get)
717                 ret = sprintf(buf, "%u\n", cpufreq_driver->get(policy->cpu));
718         else
719                 ret = sprintf(buf, "%u\n", policy->cur);
720         return ret;
721 }
722
723 /*
724  * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access
725  */
726 #define store_one(file_name, object)                    \
727 static ssize_t store_##file_name                                        \
728 (struct cpufreq_policy *policy, const char *buf, size_t count)          \
729 {                                                                       \
730         unsigned long val;                                              \
731         int ret;                                                        \
732                                                                         \
733         ret = kstrtoul(buf, 0, &val);                                   \
734         if (ret)                                                        \
735                 return ret;                                             \
736                                                                         \
737         ret = freq_qos_update_request(policy->object##_freq_req, val);\
738         return ret >= 0 ? count : ret;                                  \
739 }
740
741 store_one(scaling_min_freq, min);
742 store_one(scaling_max_freq, max);
743
744 /*
745  * show_cpuinfo_cur_freq - current CPU frequency as detected by hardware
746  */
747 static ssize_t show_cpuinfo_cur_freq(struct cpufreq_policy *policy,
748                                         char *buf)
749 {
750         unsigned int cur_freq = __cpufreq_get(policy);
751
752         if (cur_freq)
753                 return sprintf(buf, "%u\n", cur_freq);
754
755         return sprintf(buf, "<unknown>\n");
756 }
757
758 /*
759  * show_scaling_governor - show the current policy for the specified CPU
760  */
761 static ssize_t show_scaling_governor(struct cpufreq_policy *policy, char *buf)
762 {
763         if (policy->policy == CPUFREQ_POLICY_POWERSAVE)
764                 return sprintf(buf, "powersave\n");
765         else if (policy->policy == CPUFREQ_POLICY_PERFORMANCE)
766                 return sprintf(buf, "performance\n");
767         else if (policy->governor)
768                 return scnprintf(buf, CPUFREQ_NAME_PLEN, "%s\n",
769                                 policy->governor->name);
770         return -EINVAL;
771 }
772
773 /*
774  * store_scaling_governor - store policy for the specified CPU
775  */
776 static ssize_t store_scaling_governor(struct cpufreq_policy *policy,
777                                         const char *buf, size_t count)
778 {
779         char str_governor[16];
780         int ret;
781
782         ret = sscanf(buf, "%15s", str_governor);
783         if (ret != 1)
784                 return -EINVAL;
785
786         if (cpufreq_driver->setpolicy) {
787                 unsigned int new_pol;
788
789                 new_pol = cpufreq_parse_policy(str_governor);
790                 if (!new_pol)
791                         return -EINVAL;
792
793                 ret = cpufreq_set_policy(policy, NULL, new_pol);
794         } else {
795                 struct cpufreq_governor *new_gov;
796
797                 new_gov = cpufreq_parse_governor(str_governor);
798                 if (!new_gov)
799                         return -EINVAL;
800
801                 ret = cpufreq_set_policy(policy, new_gov,
802                                          CPUFREQ_POLICY_UNKNOWN);
803
804                 module_put(new_gov->owner);
805         }
806
807         return ret ? ret : count;
808 }
809
810 /*
811  * show_scaling_driver - show the cpufreq driver currently loaded
812  */
813 static ssize_t show_scaling_driver(struct cpufreq_policy *policy, char *buf)
814 {
815         return scnprintf(buf, CPUFREQ_NAME_PLEN, "%s\n", cpufreq_driver->name);
816 }
817
818 /*
819  * show_scaling_available_governors - show the available CPUfreq governors
820  */
821 static ssize_t show_scaling_available_governors(struct cpufreq_policy *policy,
822                                                 char *buf)
823 {
824         ssize_t i = 0;
825         struct cpufreq_governor *t;
826
827         if (!has_target()) {
828                 i += sprintf(buf, "performance powersave");
829                 goto out;
830         }
831
832         mutex_lock(&cpufreq_governor_mutex);
833         for_each_governor(t) {
834                 if (i >= (ssize_t) ((PAGE_SIZE / sizeof(char))
835                     - (CPUFREQ_NAME_LEN + 2)))
836                         break;
837                 i += scnprintf(&buf[i], CPUFREQ_NAME_PLEN, "%s ", t->name);
838         }
839         mutex_unlock(&cpufreq_governor_mutex);
840 out:
841         i += sprintf(&buf[i], "\n");
842         return i;
843 }
844
845 ssize_t cpufreq_show_cpus(const struct cpumask *mask, char *buf)
846 {
847         ssize_t i = 0;
848         unsigned int cpu;
849
850         for_each_cpu(cpu, mask) {
851                 i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), "%u ", cpu);
852                 if (i >= (PAGE_SIZE - 5))
853                         break;
854         }
855
856         /* Remove the extra space at the end */
857         i--;
858
859         i += sprintf(&buf[i], "\n");
860         return i;
861 }
862 EXPORT_SYMBOL_GPL(cpufreq_show_cpus);
863
864 /*
865  * show_related_cpus - show the CPUs affected by each transition even if
866  * hw coordination is in use
867  */
868 static ssize_t show_related_cpus(struct cpufreq_policy *policy, char *buf)
869 {
870         return cpufreq_show_cpus(policy->related_cpus, buf);
871 }
872
873 /*
874  * show_affected_cpus - show the CPUs affected by each transition
875  */
876 static ssize_t show_affected_cpus(struct cpufreq_policy *policy, char *buf)
877 {
878         return cpufreq_show_cpus(policy->cpus, buf);
879 }
880
881 static ssize_t store_scaling_setspeed(struct cpufreq_policy *policy,
882                                         const char *buf, size_t count)
883 {
884         unsigned int freq = 0;
885         unsigned int ret;
886
887         if (!policy->governor || !policy->governor->store_setspeed)
888                 return -EINVAL;
889
890         ret = sscanf(buf, "%u", &freq);
891         if (ret != 1)
892                 return -EINVAL;
893
894         policy->governor->store_setspeed(policy, freq);
895
896         return count;
897 }
898
899 static ssize_t show_scaling_setspeed(struct cpufreq_policy *policy, char *buf)
900 {
901         if (!policy->governor || !policy->governor->show_setspeed)
902                 return sprintf(buf, "<unsupported>\n");
903
904         return policy->governor->show_setspeed(policy, buf);
905 }
906
907 /*
908  * show_bios_limit - show the current cpufreq HW/BIOS limitation
909  */
910 static ssize_t show_bios_limit(struct cpufreq_policy *policy, char *buf)
911 {
912         unsigned int limit;
913         int ret;
914         ret = cpufreq_driver->bios_limit(policy->cpu, &limit);
915         if (!ret)
916                 return sprintf(buf, "%u\n", limit);
917         return sprintf(buf, "%u\n", policy->cpuinfo.max_freq);
918 }
919
920 cpufreq_freq_attr_ro_perm(cpuinfo_cur_freq, 0400);
921 cpufreq_freq_attr_ro(cpuinfo_min_freq);
922 cpufreq_freq_attr_ro(cpuinfo_max_freq);
923 cpufreq_freq_attr_ro(cpuinfo_transition_latency);
924 cpufreq_freq_attr_ro(scaling_available_governors);
925 cpufreq_freq_attr_ro(scaling_driver);
926 cpufreq_freq_attr_ro(scaling_cur_freq);
927 cpufreq_freq_attr_ro(bios_limit);
928 cpufreq_freq_attr_ro(related_cpus);
929 cpufreq_freq_attr_ro(affected_cpus);
930 cpufreq_freq_attr_rw(scaling_min_freq);
931 cpufreq_freq_attr_rw(scaling_max_freq);
932 cpufreq_freq_attr_rw(scaling_governor);
933 cpufreq_freq_attr_rw(scaling_setspeed);
934
935 static struct attribute *cpufreq_attrs[] = {
936         &cpuinfo_min_freq.attr,
937         &cpuinfo_max_freq.attr,
938         &cpuinfo_transition_latency.attr,
939         &scaling_min_freq.attr,
940         &scaling_max_freq.attr,
941         &affected_cpus.attr,
942         &related_cpus.attr,
943         &scaling_governor.attr,
944         &scaling_driver.attr,
945         &scaling_available_governors.attr,
946         &scaling_setspeed.attr,
947         NULL
948 };
949 ATTRIBUTE_GROUPS(cpufreq);
950
951 #define to_policy(k) container_of(k, struct cpufreq_policy, kobj)
952 #define to_attr(a) container_of(a, struct freq_attr, attr)
953
954 static ssize_t show(struct kobject *kobj, struct attribute *attr, char *buf)
955 {
956         struct cpufreq_policy *policy = to_policy(kobj);
957         struct freq_attr *fattr = to_attr(attr);
958         ssize_t ret = -EBUSY;
959
960         if (!fattr->show)
961                 return -EIO;
962
963         down_read(&policy->rwsem);
964         if (likely(!policy_is_inactive(policy)))
965                 ret = fattr->show(policy, buf);
966         up_read(&policy->rwsem);
967
968         return ret;
969 }
970
971 static ssize_t store(struct kobject *kobj, struct attribute *attr,
972                      const char *buf, size_t count)
973 {
974         struct cpufreq_policy *policy = to_policy(kobj);
975         struct freq_attr *fattr = to_attr(attr);
976         ssize_t ret = -EBUSY;
977
978         if (!fattr->store)
979                 return -EIO;
980
981         down_write(&policy->rwsem);
982         if (likely(!policy_is_inactive(policy)))
983                 ret = fattr->store(policy, buf, count);
984         up_write(&policy->rwsem);
985
986         return ret;
987 }
988
989 static void cpufreq_sysfs_release(struct kobject *kobj)
990 {
991         struct cpufreq_policy *policy = to_policy(kobj);
992         pr_debug("last reference is dropped\n");
993         complete(&policy->kobj_unregister);
994 }
995
996 static const struct sysfs_ops sysfs_ops = {
997         .show   = show,
998         .store  = store,
999 };
1000
1001 static const struct kobj_type ktype_cpufreq = {
1002         .sysfs_ops      = &sysfs_ops,
1003         .default_groups = cpufreq_groups,
1004         .release        = cpufreq_sysfs_release,
1005 };
1006
1007 static void add_cpu_dev_symlink(struct cpufreq_policy *policy, unsigned int cpu,
1008                                 struct device *dev)
1009 {
1010         if (unlikely(!dev))
1011                 return;
1012
1013         if (cpumask_test_and_set_cpu(cpu, policy->real_cpus))
1014                 return;
1015
1016         dev_dbg(dev, "%s: Adding symlink\n", __func__);
1017         if (sysfs_create_link(&dev->kobj, &policy->kobj, "cpufreq"))
1018                 dev_err(dev, "cpufreq symlink creation failed\n");
1019 }
1020
1021 static void remove_cpu_dev_symlink(struct cpufreq_policy *policy, int cpu,
1022                                    struct device *dev)
1023 {
1024         dev_dbg(dev, "%s: Removing symlink\n", __func__);
1025         sysfs_remove_link(&dev->kobj, "cpufreq");
1026         cpumask_clear_cpu(cpu, policy->real_cpus);
1027 }
1028
1029 static int cpufreq_add_dev_interface(struct cpufreq_policy *policy)
1030 {
1031         struct freq_attr **drv_attr;
1032         int ret = 0;
1033
1034         /* set up files for this cpu device */
1035         drv_attr = cpufreq_driver->attr;
1036         while (drv_attr && *drv_attr) {
1037                 ret = sysfs_create_file(&policy->kobj, &((*drv_attr)->attr));
1038                 if (ret)
1039                         return ret;
1040                 drv_attr++;
1041         }
1042         if (cpufreq_driver->get) {
1043                 ret = sysfs_create_file(&policy->kobj, &cpuinfo_cur_freq.attr);
1044                 if (ret)
1045                         return ret;
1046         }
1047
1048         ret = sysfs_create_file(&policy->kobj, &scaling_cur_freq.attr);
1049         if (ret)
1050                 return ret;
1051
1052         if (cpufreq_driver->bios_limit) {
1053                 ret = sysfs_create_file(&policy->kobj, &bios_limit.attr);
1054                 if (ret)
1055                         return ret;
1056         }
1057
1058         return 0;
1059 }
1060
1061 static int cpufreq_init_policy(struct cpufreq_policy *policy)
1062 {
1063         struct cpufreq_governor *gov = NULL;
1064         unsigned int pol = CPUFREQ_POLICY_UNKNOWN;
1065         int ret;
1066
1067         if (has_target()) {
1068                 /* Update policy governor to the one used before hotplug. */
1069                 gov = get_governor(policy->last_governor);
1070                 if (gov) {
1071                         pr_debug("Restoring governor %s for cpu %d\n",
1072                                  gov->name, policy->cpu);
1073                 } else {
1074                         gov = get_governor(default_governor);
1075                 }
1076
1077                 if (!gov) {
1078                         gov = cpufreq_default_governor();
1079                         __module_get(gov->owner);
1080                 }
1081
1082         } else {
1083
1084                 /* Use the default policy if there is no last_policy. */
1085                 if (policy->last_policy) {
1086                         pol = policy->last_policy;
1087                 } else {
1088                         pol = cpufreq_parse_policy(default_governor);
1089                         /*
1090                          * In case the default governor is neither "performance"
1091                          * nor "powersave", fall back to the initial policy
1092                          * value set by the driver.
1093                          */
1094                         if (pol == CPUFREQ_POLICY_UNKNOWN)
1095                                 pol = policy->policy;
1096                 }
1097                 if (pol != CPUFREQ_POLICY_PERFORMANCE &&
1098                     pol != CPUFREQ_POLICY_POWERSAVE)
1099                         return -ENODATA;
1100         }
1101
1102         ret = cpufreq_set_policy(policy, gov, pol);
1103         if (gov)
1104                 module_put(gov->owner);
1105
1106         return ret;
1107 }
1108
1109 static int cpufreq_add_policy_cpu(struct cpufreq_policy *policy, unsigned int cpu)
1110 {
1111         int ret = 0;
1112
1113         /* Has this CPU been taken care of already? */
1114         if (cpumask_test_cpu(cpu, policy->cpus))
1115                 return 0;
1116
1117         down_write(&policy->rwsem);
1118         if (has_target())
1119                 cpufreq_stop_governor(policy);
1120
1121         cpumask_set_cpu(cpu, policy->cpus);
1122
1123         if (has_target()) {
1124                 ret = cpufreq_start_governor(policy);
1125                 if (ret)
1126                         pr_err("%s: Failed to start governor\n", __func__);
1127         }
1128         up_write(&policy->rwsem);
1129         return ret;
1130 }
1131
1132 void refresh_frequency_limits(struct cpufreq_policy *policy)
1133 {
1134         if (!policy_is_inactive(policy)) {
1135                 pr_debug("updating policy for CPU %u\n", policy->cpu);
1136
1137                 cpufreq_set_policy(policy, policy->governor, policy->policy);
1138         }
1139 }
1140 EXPORT_SYMBOL(refresh_frequency_limits);
1141
1142 static void handle_update(struct work_struct *work)
1143 {
1144         struct cpufreq_policy *policy =
1145                 container_of(work, struct cpufreq_policy, update);
1146
1147         pr_debug("handle_update for cpu %u called\n", policy->cpu);
1148         down_write(&policy->rwsem);
1149         refresh_frequency_limits(policy);
1150         up_write(&policy->rwsem);
1151 }
1152
1153 static int cpufreq_notifier_min(struct notifier_block *nb, unsigned long freq,
1154                                 void *data)
1155 {
1156         struct cpufreq_policy *policy = container_of(nb, struct cpufreq_policy, nb_min);
1157
1158         schedule_work(&policy->update);
1159         return 0;
1160 }
1161
1162 static int cpufreq_notifier_max(struct notifier_block *nb, unsigned long freq,
1163                                 void *data)
1164 {
1165         struct cpufreq_policy *policy = container_of(nb, struct cpufreq_policy, nb_max);
1166
1167         schedule_work(&policy->update);
1168         return 0;
1169 }
1170
1171 static void cpufreq_policy_put_kobj(struct cpufreq_policy *policy)
1172 {
1173         struct kobject *kobj;
1174         struct completion *cmp;
1175
1176         down_write(&policy->rwsem);
1177         cpufreq_stats_free_table(policy);
1178         kobj = &policy->kobj;
1179         cmp = &policy->kobj_unregister;
1180         up_write(&policy->rwsem);
1181         kobject_put(kobj);
1182
1183         /*
1184          * We need to make sure that the underlying kobj is
1185          * actually not referenced anymore by anybody before we
1186          * proceed with unloading.
1187          */
1188         pr_debug("waiting for dropping of refcount\n");
1189         wait_for_completion(cmp);
1190         pr_debug("wait complete\n");
1191 }
1192
1193 static struct cpufreq_policy *cpufreq_policy_alloc(unsigned int cpu)
1194 {
1195         struct cpufreq_policy *policy;
1196         struct device *dev = get_cpu_device(cpu);
1197         int ret;
1198
1199         if (!dev)
1200                 return NULL;
1201
1202         policy = kzalloc(sizeof(*policy), GFP_KERNEL);
1203         if (!policy)
1204                 return NULL;
1205
1206         if (!alloc_cpumask_var(&policy->cpus, GFP_KERNEL))
1207                 goto err_free_policy;
1208
1209         if (!zalloc_cpumask_var(&policy->related_cpus, GFP_KERNEL))
1210                 goto err_free_cpumask;
1211
1212         if (!zalloc_cpumask_var(&policy->real_cpus, GFP_KERNEL))
1213                 goto err_free_rcpumask;
1214
1215         init_completion(&policy->kobj_unregister);
1216         ret = kobject_init_and_add(&policy->kobj, &ktype_cpufreq,
1217                                    cpufreq_global_kobject, "policy%u", cpu);
1218         if (ret) {
1219                 dev_err(dev, "%s: failed to init policy->kobj: %d\n", __func__, ret);
1220                 /*
1221                  * The entire policy object will be freed below, but the extra
1222                  * memory allocated for the kobject name needs to be freed by
1223                  * releasing the kobject.
1224                  */
1225                 kobject_put(&policy->kobj);
1226                 goto err_free_real_cpus;
1227         }
1228
1229         freq_constraints_init(&policy->constraints);
1230
1231         policy->nb_min.notifier_call = cpufreq_notifier_min;
1232         policy->nb_max.notifier_call = cpufreq_notifier_max;
1233
1234         ret = freq_qos_add_notifier(&policy->constraints, FREQ_QOS_MIN,
1235                                     &policy->nb_min);
1236         if (ret) {
1237                 dev_err(dev, "Failed to register MIN QoS notifier: %d (%*pbl)\n",
1238                         ret, cpumask_pr_args(policy->cpus));
1239                 goto err_kobj_remove;
1240         }
1241
1242         ret = freq_qos_add_notifier(&policy->constraints, FREQ_QOS_MAX,
1243                                     &policy->nb_max);
1244         if (ret) {
1245                 dev_err(dev, "Failed to register MAX QoS notifier: %d (%*pbl)\n",
1246                         ret, cpumask_pr_args(policy->cpus));
1247                 goto err_min_qos_notifier;
1248         }
1249
1250         INIT_LIST_HEAD(&policy->policy_list);
1251         init_rwsem(&policy->rwsem);
1252         spin_lock_init(&policy->transition_lock);
1253         init_waitqueue_head(&policy->transition_wait);
1254         INIT_WORK(&policy->update, handle_update);
1255
1256         policy->cpu = cpu;
1257         return policy;
1258
1259 err_min_qos_notifier:
1260         freq_qos_remove_notifier(&policy->constraints, FREQ_QOS_MIN,
1261                                  &policy->nb_min);
1262 err_kobj_remove:
1263         cpufreq_policy_put_kobj(policy);
1264 err_free_real_cpus:
1265         free_cpumask_var(policy->real_cpus);
1266 err_free_rcpumask:
1267         free_cpumask_var(policy->related_cpus);
1268 err_free_cpumask:
1269         free_cpumask_var(policy->cpus);
1270 err_free_policy:
1271         kfree(policy);
1272
1273         return NULL;
1274 }
1275
1276 static void cpufreq_policy_free(struct cpufreq_policy *policy)
1277 {
1278         unsigned long flags;
1279         int cpu;
1280
1281         /*
1282          * The callers must ensure the policy is inactive by now, to avoid any
1283          * races with show()/store() callbacks.
1284          */
1285         if (unlikely(!policy_is_inactive(policy)))
1286                 pr_warn("%s: Freeing active policy\n", __func__);
1287
1288         /* Remove policy from list */
1289         write_lock_irqsave(&cpufreq_driver_lock, flags);
1290         list_del(&policy->policy_list);
1291
1292         for_each_cpu(cpu, policy->related_cpus)
1293                 per_cpu(cpufreq_cpu_data, cpu) = NULL;
1294         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1295
1296         freq_qos_remove_notifier(&policy->constraints, FREQ_QOS_MAX,
1297                                  &policy->nb_max);
1298         freq_qos_remove_notifier(&policy->constraints, FREQ_QOS_MIN,
1299                                  &policy->nb_min);
1300
1301         /* Cancel any pending policy->update work before freeing the policy. */
1302         cancel_work_sync(&policy->update);
1303
1304         if (policy->max_freq_req) {
1305                 /*
1306                  * Remove max_freq_req after sending CPUFREQ_REMOVE_POLICY
1307                  * notification, since CPUFREQ_CREATE_POLICY notification was
1308                  * sent after adding max_freq_req earlier.
1309                  */
1310                 blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1311                                              CPUFREQ_REMOVE_POLICY, policy);
1312                 freq_qos_remove_request(policy->max_freq_req);
1313         }
1314
1315         freq_qos_remove_request(policy->min_freq_req);
1316         kfree(policy->min_freq_req);
1317
1318         cpufreq_policy_put_kobj(policy);
1319         free_cpumask_var(policy->real_cpus);
1320         free_cpumask_var(policy->related_cpus);
1321         free_cpumask_var(policy->cpus);
1322         kfree(policy);
1323 }
1324
1325 static int cpufreq_online(unsigned int cpu)
1326 {
1327         struct cpufreq_policy *policy;
1328         bool new_policy;
1329         unsigned long flags;
1330         unsigned int j;
1331         int ret;
1332
1333         pr_debug("%s: bringing CPU%u online\n", __func__, cpu);
1334
1335         /* Check if this CPU already has a policy to manage it */
1336         policy = per_cpu(cpufreq_cpu_data, cpu);
1337         if (policy) {
1338                 WARN_ON(!cpumask_test_cpu(cpu, policy->related_cpus));
1339                 if (!policy_is_inactive(policy))
1340                         return cpufreq_add_policy_cpu(policy, cpu);
1341
1342                 /* This is the only online CPU for the policy.  Start over. */
1343                 new_policy = false;
1344                 down_write(&policy->rwsem);
1345                 policy->cpu = cpu;
1346                 policy->governor = NULL;
1347         } else {
1348                 new_policy = true;
1349                 policy = cpufreq_policy_alloc(cpu);
1350                 if (!policy)
1351                         return -ENOMEM;
1352                 down_write(&policy->rwsem);
1353         }
1354
1355         if (!new_policy && cpufreq_driver->online) {
1356                 /* Recover policy->cpus using related_cpus */
1357                 cpumask_copy(policy->cpus, policy->related_cpus);
1358
1359                 ret = cpufreq_driver->online(policy);
1360                 if (ret) {
1361                         pr_debug("%s: %d: initialization failed\n", __func__,
1362                                  __LINE__);
1363                         goto out_exit_policy;
1364                 }
1365         } else {
1366                 cpumask_copy(policy->cpus, cpumask_of(cpu));
1367
1368                 /*
1369                  * Call driver. From then on the cpufreq must be able
1370                  * to accept all calls to ->verify and ->setpolicy for this CPU.
1371                  */
1372                 ret = cpufreq_driver->init(policy);
1373                 if (ret) {
1374                         pr_debug("%s: %d: initialization failed\n", __func__,
1375                                  __LINE__);
1376                         goto out_free_policy;
1377                 }
1378
1379                 /*
1380                  * The initialization has succeeded and the policy is online.
1381                  * If there is a problem with its frequency table, take it
1382                  * offline and drop it.
1383                  */
1384                 ret = cpufreq_table_validate_and_sort(policy);
1385                 if (ret)
1386                         goto out_offline_policy;
1387
1388                 /* related_cpus should at least include policy->cpus. */
1389                 cpumask_copy(policy->related_cpus, policy->cpus);
1390         }
1391
1392         /*
1393          * affected cpus must always be the one, which are online. We aren't
1394          * managing offline cpus here.
1395          */
1396         cpumask_and(policy->cpus, policy->cpus, cpu_online_mask);
1397
1398         if (new_policy) {
1399                 for_each_cpu(j, policy->related_cpus) {
1400                         per_cpu(cpufreq_cpu_data, j) = policy;
1401                         add_cpu_dev_symlink(policy, j, get_cpu_device(j));
1402                 }
1403
1404                 policy->min_freq_req = kzalloc(2 * sizeof(*policy->min_freq_req),
1405                                                GFP_KERNEL);
1406                 if (!policy->min_freq_req) {
1407                         ret = -ENOMEM;
1408                         goto out_destroy_policy;
1409                 }
1410
1411                 ret = freq_qos_add_request(&policy->constraints,
1412                                            policy->min_freq_req, FREQ_QOS_MIN,
1413                                            FREQ_QOS_MIN_DEFAULT_VALUE);
1414                 if (ret < 0) {
1415                         /*
1416                          * So we don't call freq_qos_remove_request() for an
1417                          * uninitialized request.
1418                          */
1419                         kfree(policy->min_freq_req);
1420                         policy->min_freq_req = NULL;
1421                         goto out_destroy_policy;
1422                 }
1423
1424                 /*
1425                  * This must be initialized right here to avoid calling
1426                  * freq_qos_remove_request() on uninitialized request in case
1427                  * of errors.
1428                  */
1429                 policy->max_freq_req = policy->min_freq_req + 1;
1430
1431                 ret = freq_qos_add_request(&policy->constraints,
1432                                            policy->max_freq_req, FREQ_QOS_MAX,
1433                                            FREQ_QOS_MAX_DEFAULT_VALUE);
1434                 if (ret < 0) {
1435                         policy->max_freq_req = NULL;
1436                         goto out_destroy_policy;
1437                 }
1438
1439                 blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1440                                 CPUFREQ_CREATE_POLICY, policy);
1441         }
1442
1443         if (cpufreq_driver->get && has_target()) {
1444                 policy->cur = cpufreq_driver->get(policy->cpu);
1445                 if (!policy->cur) {
1446                         ret = -EIO;
1447                         pr_err("%s: ->get() failed\n", __func__);
1448                         goto out_destroy_policy;
1449                 }
1450         }
1451
1452         /*
1453          * Sometimes boot loaders set CPU frequency to a value outside of
1454          * frequency table present with cpufreq core. In such cases CPU might be
1455          * unstable if it has to run on that frequency for long duration of time
1456          * and so its better to set it to a frequency which is specified in
1457          * freq-table. This also makes cpufreq stats inconsistent as
1458          * cpufreq-stats would fail to register because current frequency of CPU
1459          * isn't found in freq-table.
1460          *
1461          * Because we don't want this change to effect boot process badly, we go
1462          * for the next freq which is >= policy->cur ('cur' must be set by now,
1463          * otherwise we will end up setting freq to lowest of the table as 'cur'
1464          * is initialized to zero).
1465          *
1466          * We are passing target-freq as "policy->cur - 1" otherwise
1467          * __cpufreq_driver_target() would simply fail, as policy->cur will be
1468          * equal to target-freq.
1469          */
1470         if ((cpufreq_driver->flags & CPUFREQ_NEED_INITIAL_FREQ_CHECK)
1471             && has_target()) {
1472                 unsigned int old_freq = policy->cur;
1473
1474                 /* Are we running at unknown frequency ? */
1475                 ret = cpufreq_frequency_table_get_index(policy, old_freq);
1476                 if (ret == -EINVAL) {
1477                         ret = __cpufreq_driver_target(policy, old_freq - 1,
1478                                                       CPUFREQ_RELATION_L);
1479
1480                         /*
1481                          * Reaching here after boot in a few seconds may not
1482                          * mean that system will remain stable at "unknown"
1483                          * frequency for longer duration. Hence, a BUG_ON().
1484                          */
1485                         BUG_ON(ret);
1486                         pr_info("%s: CPU%d: Running at unlisted initial frequency: %u KHz, changing to: %u KHz\n",
1487                                 __func__, policy->cpu, old_freq, policy->cur);
1488                 }
1489         }
1490
1491         if (new_policy) {
1492                 ret = cpufreq_add_dev_interface(policy);
1493                 if (ret)
1494                         goto out_destroy_policy;
1495
1496                 cpufreq_stats_create_table(policy);
1497
1498                 write_lock_irqsave(&cpufreq_driver_lock, flags);
1499                 list_add(&policy->policy_list, &cpufreq_policy_list);
1500                 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1501
1502                 /*
1503                  * Register with the energy model before
1504                  * sched_cpufreq_governor_change() is called, which will result
1505                  * in rebuilding of the sched domains, which should only be done
1506                  * once the energy model is properly initialized for the policy
1507                  * first.
1508                  *
1509                  * Also, this should be called before the policy is registered
1510                  * with cooling framework.
1511                  */
1512                 if (cpufreq_driver->register_em)
1513                         cpufreq_driver->register_em(policy);
1514         }
1515
1516         ret = cpufreq_init_policy(policy);
1517         if (ret) {
1518                 pr_err("%s: Failed to initialize policy for cpu: %d (%d)\n",
1519                        __func__, cpu, ret);
1520                 goto out_destroy_policy;
1521         }
1522
1523         up_write(&policy->rwsem);
1524
1525         kobject_uevent(&policy->kobj, KOBJ_ADD);
1526
1527         /* Callback for handling stuff after policy is ready */
1528         if (cpufreq_driver->ready)
1529                 cpufreq_driver->ready(policy);
1530
1531         if (cpufreq_thermal_control_enabled(cpufreq_driver))
1532                 policy->cdev = of_cpufreq_cooling_register(policy);
1533
1534         pr_debug("initialization complete\n");
1535
1536         return 0;
1537
1538 out_destroy_policy:
1539         for_each_cpu(j, policy->real_cpus)
1540                 remove_cpu_dev_symlink(policy, j, get_cpu_device(j));
1541
1542 out_offline_policy:
1543         if (cpufreq_driver->offline)
1544                 cpufreq_driver->offline(policy);
1545
1546 out_exit_policy:
1547         if (cpufreq_driver->exit)
1548                 cpufreq_driver->exit(policy);
1549
1550 out_free_policy:
1551         cpumask_clear(policy->cpus);
1552         up_write(&policy->rwsem);
1553
1554         cpufreq_policy_free(policy);
1555         return ret;
1556 }
1557
1558 /**
1559  * cpufreq_add_dev - the cpufreq interface for a CPU device.
1560  * @dev: CPU device.
1561  * @sif: Subsystem interface structure pointer (not used)
1562  */
1563 static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
1564 {
1565         struct cpufreq_policy *policy;
1566         unsigned cpu = dev->id;
1567         int ret;
1568
1569         dev_dbg(dev, "%s: adding CPU%u\n", __func__, cpu);
1570
1571         if (cpu_online(cpu)) {
1572                 ret = cpufreq_online(cpu);
1573                 if (ret)
1574                         return ret;
1575         }
1576
1577         /* Create sysfs link on CPU registration */
1578         policy = per_cpu(cpufreq_cpu_data, cpu);
1579         if (policy)
1580                 add_cpu_dev_symlink(policy, cpu, dev);
1581
1582         return 0;
1583 }
1584
1585 static void __cpufreq_offline(unsigned int cpu, struct cpufreq_policy *policy)
1586 {
1587         int ret;
1588
1589         if (has_target())
1590                 cpufreq_stop_governor(policy);
1591
1592         cpumask_clear_cpu(cpu, policy->cpus);
1593
1594         if (!policy_is_inactive(policy)) {
1595                 /* Nominate a new CPU if necessary. */
1596                 if (cpu == policy->cpu)
1597                         policy->cpu = cpumask_any(policy->cpus);
1598
1599                 /* Start the governor again for the active policy. */
1600                 if (has_target()) {
1601                         ret = cpufreq_start_governor(policy);
1602                         if (ret)
1603                                 pr_err("%s: Failed to start governor\n", __func__);
1604                 }
1605
1606                 return;
1607         }
1608
1609         if (has_target())
1610                 strncpy(policy->last_governor, policy->governor->name,
1611                         CPUFREQ_NAME_LEN);
1612         else
1613                 policy->last_policy = policy->policy;
1614
1615         if (cpufreq_thermal_control_enabled(cpufreq_driver)) {
1616                 cpufreq_cooling_unregister(policy->cdev);
1617                 policy->cdev = NULL;
1618         }
1619
1620         if (has_target())
1621                 cpufreq_exit_governor(policy);
1622
1623         /*
1624          * Perform the ->offline() during light-weight tear-down, as
1625          * that allows fast recovery when the CPU comes back.
1626          */
1627         if (cpufreq_driver->offline) {
1628                 cpufreq_driver->offline(policy);
1629         } else if (cpufreq_driver->exit) {
1630                 cpufreq_driver->exit(policy);
1631                 policy->freq_table = NULL;
1632         }
1633 }
1634
1635 static int cpufreq_offline(unsigned int cpu)
1636 {
1637         struct cpufreq_policy *policy;
1638
1639         pr_debug("%s: unregistering CPU %u\n", __func__, cpu);
1640
1641         policy = cpufreq_cpu_get_raw(cpu);
1642         if (!policy) {
1643                 pr_debug("%s: No cpu_data found\n", __func__);
1644                 return 0;
1645         }
1646
1647         down_write(&policy->rwsem);
1648
1649         __cpufreq_offline(cpu, policy);
1650
1651         up_write(&policy->rwsem);
1652         return 0;
1653 }
1654
1655 /*
1656  * cpufreq_remove_dev - remove a CPU device
1657  *
1658  * Removes the cpufreq interface for a CPU device.
1659  */
1660 static void cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
1661 {
1662         unsigned int cpu = dev->id;
1663         struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
1664
1665         if (!policy)
1666                 return;
1667
1668         down_write(&policy->rwsem);
1669
1670         if (cpu_online(cpu))
1671                 __cpufreq_offline(cpu, policy);
1672
1673         remove_cpu_dev_symlink(policy, cpu, dev);
1674
1675         if (!cpumask_empty(policy->real_cpus)) {
1676                 up_write(&policy->rwsem);
1677                 return;
1678         }
1679
1680         /* We did light-weight exit earlier, do full tear down now */
1681         if (cpufreq_driver->offline)
1682                 cpufreq_driver->exit(policy);
1683
1684         up_write(&policy->rwsem);
1685
1686         cpufreq_policy_free(policy);
1687 }
1688
1689 /**
1690  * cpufreq_out_of_sync - Fix up actual and saved CPU frequency difference.
1691  * @policy: Policy managing CPUs.
1692  * @new_freq: New CPU frequency.
1693  *
1694  * Adjust to the current frequency first and clean up later by either calling
1695  * cpufreq_update_policy(), or scheduling handle_update().
1696  */
1697 static void cpufreq_out_of_sync(struct cpufreq_policy *policy,
1698                                 unsigned int new_freq)
1699 {
1700         struct cpufreq_freqs freqs;
1701
1702         pr_debug("Warning: CPU frequency out of sync: cpufreq and timing core thinks of %u, is %u kHz\n",
1703                  policy->cur, new_freq);
1704
1705         freqs.old = policy->cur;
1706         freqs.new = new_freq;
1707
1708         cpufreq_freq_transition_begin(policy, &freqs);
1709         cpufreq_freq_transition_end(policy, &freqs, 0);
1710 }
1711
1712 static unsigned int cpufreq_verify_current_freq(struct cpufreq_policy *policy, bool update)
1713 {
1714         unsigned int new_freq;
1715
1716         new_freq = cpufreq_driver->get(policy->cpu);
1717         if (!new_freq)
1718                 return 0;
1719
1720         /*
1721          * If fast frequency switching is used with the given policy, the check
1722          * against policy->cur is pointless, so skip it in that case.
1723          */
1724         if (policy->fast_switch_enabled || !has_target())
1725                 return new_freq;
1726
1727         if (policy->cur != new_freq) {
1728                 /*
1729                  * For some platforms, the frequency returned by hardware may be
1730                  * slightly different from what is provided in the frequency
1731                  * table, for example hardware may return 499 MHz instead of 500
1732                  * MHz. In such cases it is better to avoid getting into
1733                  * unnecessary frequency updates.
1734                  */
1735                 if (abs(policy->cur - new_freq) < KHZ_PER_MHZ)
1736                         return policy->cur;
1737
1738                 cpufreq_out_of_sync(policy, new_freq);
1739                 if (update)
1740                         schedule_work(&policy->update);
1741         }
1742
1743         return new_freq;
1744 }
1745
1746 /**
1747  * cpufreq_quick_get - get the CPU frequency (in kHz) from policy->cur
1748  * @cpu: CPU number
1749  *
1750  * This is the last known freq, without actually getting it from the driver.
1751  * Return value will be same as what is shown in scaling_cur_freq in sysfs.
1752  */
1753 unsigned int cpufreq_quick_get(unsigned int cpu)
1754 {
1755         struct cpufreq_policy *policy;
1756         unsigned int ret_freq = 0;
1757         unsigned long flags;
1758
1759         read_lock_irqsave(&cpufreq_driver_lock, flags);
1760
1761         if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get) {
1762                 ret_freq = cpufreq_driver->get(cpu);
1763                 read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1764                 return ret_freq;
1765         }
1766
1767         read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1768
1769         policy = cpufreq_cpu_get(cpu);
1770         if (policy) {
1771                 ret_freq = policy->cur;
1772                 cpufreq_cpu_put(policy);
1773         }
1774
1775         return ret_freq;
1776 }
1777 EXPORT_SYMBOL(cpufreq_quick_get);
1778
1779 /**
1780  * cpufreq_quick_get_max - get the max reported CPU frequency for this CPU
1781  * @cpu: CPU number
1782  *
1783  * Just return the max possible frequency for a given CPU.
1784  */
1785 unsigned int cpufreq_quick_get_max(unsigned int cpu)
1786 {
1787         struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1788         unsigned int ret_freq = 0;
1789
1790         if (policy) {
1791                 ret_freq = policy->max;
1792                 cpufreq_cpu_put(policy);
1793         }
1794
1795         return ret_freq;
1796 }
1797 EXPORT_SYMBOL(cpufreq_quick_get_max);
1798
1799 /**
1800  * cpufreq_get_hw_max_freq - get the max hardware frequency of the CPU
1801  * @cpu: CPU number
1802  *
1803  * The default return value is the max_freq field of cpuinfo.
1804  */
1805 __weak unsigned int cpufreq_get_hw_max_freq(unsigned int cpu)
1806 {
1807         struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1808         unsigned int ret_freq = 0;
1809
1810         if (policy) {
1811                 ret_freq = policy->cpuinfo.max_freq;
1812                 cpufreq_cpu_put(policy);
1813         }
1814
1815         return ret_freq;
1816 }
1817 EXPORT_SYMBOL(cpufreq_get_hw_max_freq);
1818
1819 static unsigned int __cpufreq_get(struct cpufreq_policy *policy)
1820 {
1821         if (unlikely(policy_is_inactive(policy)))
1822                 return 0;
1823
1824         return cpufreq_verify_current_freq(policy, true);
1825 }
1826
1827 /**
1828  * cpufreq_get - get the current CPU frequency (in kHz)
1829  * @cpu: CPU number
1830  *
1831  * Get the CPU current (static) CPU frequency
1832  */
1833 unsigned int cpufreq_get(unsigned int cpu)
1834 {
1835         struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1836         unsigned int ret_freq = 0;
1837
1838         if (policy) {
1839                 down_read(&policy->rwsem);
1840                 if (cpufreq_driver->get)
1841                         ret_freq = __cpufreq_get(policy);
1842                 up_read(&policy->rwsem);
1843
1844                 cpufreq_cpu_put(policy);
1845         }
1846
1847         return ret_freq;
1848 }
1849 EXPORT_SYMBOL(cpufreq_get);
1850
1851 static struct subsys_interface cpufreq_interface = {
1852         .name           = "cpufreq",
1853         .subsys         = &cpu_subsys,
1854         .add_dev        = cpufreq_add_dev,
1855         .remove_dev     = cpufreq_remove_dev,
1856 };
1857
1858 /*
1859  * In case platform wants some specific frequency to be configured
1860  * during suspend..
1861  */
1862 int cpufreq_generic_suspend(struct cpufreq_policy *policy)
1863 {
1864         int ret;
1865
1866         if (!policy->suspend_freq) {
1867                 pr_debug("%s: suspend_freq not defined\n", __func__);
1868                 return 0;
1869         }
1870
1871         pr_debug("%s: Setting suspend-freq: %u\n", __func__,
1872                         policy->suspend_freq);
1873
1874         ret = __cpufreq_driver_target(policy, policy->suspend_freq,
1875                         CPUFREQ_RELATION_H);
1876         if (ret)
1877                 pr_err("%s: unable to set suspend-freq: %u. err: %d\n",
1878                                 __func__, policy->suspend_freq, ret);
1879
1880         return ret;
1881 }
1882 EXPORT_SYMBOL(cpufreq_generic_suspend);
1883
1884 /**
1885  * cpufreq_suspend() - Suspend CPUFreq governors.
1886  *
1887  * Called during system wide Suspend/Hibernate cycles for suspending governors
1888  * as some platforms can't change frequency after this point in suspend cycle.
1889  * Because some of the devices (like: i2c, regulators, etc) they use for
1890  * changing frequency are suspended quickly after this point.
1891  */
1892 void cpufreq_suspend(void)
1893 {
1894         struct cpufreq_policy *policy;
1895
1896         if (!cpufreq_driver)
1897                 return;
1898
1899         if (!has_target() && !cpufreq_driver->suspend)
1900                 goto suspend;
1901
1902         pr_debug("%s: Suspending Governors\n", __func__);
1903
1904         for_each_active_policy(policy) {
1905                 if (has_target()) {
1906                         down_write(&policy->rwsem);
1907                         cpufreq_stop_governor(policy);
1908                         up_write(&policy->rwsem);
1909                 }
1910
1911                 if (cpufreq_driver->suspend && cpufreq_driver->suspend(policy))
1912                         pr_err("%s: Failed to suspend driver: %s\n", __func__,
1913                                 cpufreq_driver->name);
1914         }
1915
1916 suspend:
1917         cpufreq_suspended = true;
1918 }
1919
1920 /**
1921  * cpufreq_resume() - Resume CPUFreq governors.
1922  *
1923  * Called during system wide Suspend/Hibernate cycle for resuming governors that
1924  * are suspended with cpufreq_suspend().
1925  */
1926 void cpufreq_resume(void)
1927 {
1928         struct cpufreq_policy *policy;
1929         int ret;
1930
1931         if (!cpufreq_driver)
1932                 return;
1933
1934         if (unlikely(!cpufreq_suspended))
1935                 return;
1936
1937         cpufreq_suspended = false;
1938
1939         if (!has_target() && !cpufreq_driver->resume)
1940                 return;
1941
1942         pr_debug("%s: Resuming Governors\n", __func__);
1943
1944         for_each_active_policy(policy) {
1945                 if (cpufreq_driver->resume && cpufreq_driver->resume(policy)) {
1946                         pr_err("%s: Failed to resume driver: %p\n", __func__,
1947                                 policy);
1948                 } else if (has_target()) {
1949                         down_write(&policy->rwsem);
1950                         ret = cpufreq_start_governor(policy);
1951                         up_write(&policy->rwsem);
1952
1953                         if (ret)
1954                                 pr_err("%s: Failed to start governor for policy: %p\n",
1955                                        __func__, policy);
1956                 }
1957         }
1958 }
1959
1960 /**
1961  * cpufreq_driver_test_flags - Test cpufreq driver's flags against given ones.
1962  * @flags: Flags to test against the current cpufreq driver's flags.
1963  *
1964  * Assumes that the driver is there, so callers must ensure that this is the
1965  * case.
1966  */
1967 bool cpufreq_driver_test_flags(u16 flags)
1968 {
1969         return !!(cpufreq_driver->flags & flags);
1970 }
1971
1972 /**
1973  * cpufreq_get_current_driver - Return the current driver's name.
1974  *
1975  * Return the name string of the currently registered cpufreq driver or NULL if
1976  * none.
1977  */
1978 const char *cpufreq_get_current_driver(void)
1979 {
1980         if (cpufreq_driver)
1981                 return cpufreq_driver->name;
1982
1983         return NULL;
1984 }
1985 EXPORT_SYMBOL_GPL(cpufreq_get_current_driver);
1986
1987 /**
1988  * cpufreq_get_driver_data - Return current driver data.
1989  *
1990  * Return the private data of the currently registered cpufreq driver, or NULL
1991  * if no cpufreq driver has been registered.
1992  */
1993 void *cpufreq_get_driver_data(void)
1994 {
1995         if (cpufreq_driver)
1996                 return cpufreq_driver->driver_data;
1997
1998         return NULL;
1999 }
2000 EXPORT_SYMBOL_GPL(cpufreq_get_driver_data);
2001
2002 /*********************************************************************
2003  *                     NOTIFIER LISTS INTERFACE                      *
2004  *********************************************************************/
2005
2006 /**
2007  * cpufreq_register_notifier - Register a notifier with cpufreq.
2008  * @nb: notifier function to register.
2009  * @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER.
2010  *
2011  * Add a notifier to one of two lists: either a list of notifiers that run on
2012  * clock rate changes (once before and once after every transition), or a list
2013  * of notifiers that ron on cpufreq policy changes.
2014  *
2015  * This function may sleep and it has the same return values as
2016  * blocking_notifier_chain_register().
2017  */
2018 int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list)
2019 {
2020         int ret;
2021
2022         if (cpufreq_disabled())
2023                 return -EINVAL;
2024
2025         switch (list) {
2026         case CPUFREQ_TRANSITION_NOTIFIER:
2027                 mutex_lock(&cpufreq_fast_switch_lock);
2028
2029                 if (cpufreq_fast_switch_count > 0) {
2030                         mutex_unlock(&cpufreq_fast_switch_lock);
2031                         return -EBUSY;
2032                 }
2033                 ret = srcu_notifier_chain_register(
2034                                 &cpufreq_transition_notifier_list, nb);
2035                 if (!ret)
2036                         cpufreq_fast_switch_count--;
2037
2038                 mutex_unlock(&cpufreq_fast_switch_lock);
2039                 break;
2040         case CPUFREQ_POLICY_NOTIFIER:
2041                 ret = blocking_notifier_chain_register(
2042                                 &cpufreq_policy_notifier_list, nb);
2043                 break;
2044         default:
2045                 ret = -EINVAL;
2046         }
2047
2048         return ret;
2049 }
2050 EXPORT_SYMBOL(cpufreq_register_notifier);
2051
2052 /**
2053  * cpufreq_unregister_notifier - Unregister a notifier from cpufreq.
2054  * @nb: notifier block to be unregistered.
2055  * @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER.
2056  *
2057  * Remove a notifier from one of the cpufreq notifier lists.
2058  *
2059  * This function may sleep and it has the same return values as
2060  * blocking_notifier_chain_unregister().
2061  */
2062 int cpufreq_unregister_notifier(struct notifier_block *nb, unsigned int list)
2063 {
2064         int ret;
2065
2066         if (cpufreq_disabled())
2067                 return -EINVAL;
2068
2069         switch (list) {
2070         case CPUFREQ_TRANSITION_NOTIFIER:
2071                 mutex_lock(&cpufreq_fast_switch_lock);
2072
2073                 ret = srcu_notifier_chain_unregister(
2074                                 &cpufreq_transition_notifier_list, nb);
2075                 if (!ret && !WARN_ON(cpufreq_fast_switch_count >= 0))
2076                         cpufreq_fast_switch_count++;
2077
2078                 mutex_unlock(&cpufreq_fast_switch_lock);
2079                 break;
2080         case CPUFREQ_POLICY_NOTIFIER:
2081                 ret = blocking_notifier_chain_unregister(
2082                                 &cpufreq_policy_notifier_list, nb);
2083                 break;
2084         default:
2085                 ret = -EINVAL;
2086         }
2087
2088         return ret;
2089 }
2090 EXPORT_SYMBOL(cpufreq_unregister_notifier);
2091
2092
2093 /*********************************************************************
2094  *                              GOVERNORS                            *
2095  *********************************************************************/
2096
2097 /**
2098  * cpufreq_driver_fast_switch - Carry out a fast CPU frequency switch.
2099  * @policy: cpufreq policy to switch the frequency for.
2100  * @target_freq: New frequency to set (may be approximate).
2101  *
2102  * Carry out a fast frequency switch without sleeping.
2103  *
2104  * The driver's ->fast_switch() callback invoked by this function must be
2105  * suitable for being called from within RCU-sched read-side critical sections
2106  * and it is expected to select the minimum available frequency greater than or
2107  * equal to @target_freq (CPUFREQ_RELATION_L).
2108  *
2109  * This function must not be called if policy->fast_switch_enabled is unset.
2110  *
2111  * Governors calling this function must guarantee that it will never be invoked
2112  * twice in parallel for the same policy and that it will never be called in
2113  * parallel with either ->target() or ->target_index() for the same policy.
2114  *
2115  * Returns the actual frequency set for the CPU.
2116  *
2117  * If 0 is returned by the driver's ->fast_switch() callback to indicate an
2118  * error condition, the hardware configuration must be preserved.
2119  */
2120 unsigned int cpufreq_driver_fast_switch(struct cpufreq_policy *policy,
2121                                         unsigned int target_freq)
2122 {
2123         unsigned int freq;
2124         int cpu;
2125
2126         target_freq = clamp_val(target_freq, policy->min, policy->max);
2127         freq = cpufreq_driver->fast_switch(policy, target_freq);
2128
2129         if (!freq)
2130                 return 0;
2131
2132         policy->cur = freq;
2133         arch_set_freq_scale(policy->related_cpus, freq,
2134                             policy->cpuinfo.max_freq);
2135         cpufreq_stats_record_transition(policy, freq);
2136
2137         if (trace_cpu_frequency_enabled()) {
2138                 for_each_cpu(cpu, policy->cpus)
2139                         trace_cpu_frequency(freq, cpu);
2140         }
2141
2142         return freq;
2143 }
2144 EXPORT_SYMBOL_GPL(cpufreq_driver_fast_switch);
2145
2146 /**
2147  * cpufreq_driver_adjust_perf - Adjust CPU performance level in one go.
2148  * @cpu: Target CPU.
2149  * @min_perf: Minimum (required) performance level (units of @capacity).
2150  * @target_perf: Target (desired) performance level (units of @capacity).
2151  * @capacity: Capacity of the target CPU.
2152  *
2153  * Carry out a fast performance level switch of @cpu without sleeping.
2154  *
2155  * The driver's ->adjust_perf() callback invoked by this function must be
2156  * suitable for being called from within RCU-sched read-side critical sections
2157  * and it is expected to select a suitable performance level equal to or above
2158  * @min_perf and preferably equal to or below @target_perf.
2159  *
2160  * This function must not be called if policy->fast_switch_enabled is unset.
2161  *
2162  * Governors calling this function must guarantee that it will never be invoked
2163  * twice in parallel for the same CPU and that it will never be called in
2164  * parallel with either ->target() or ->target_index() or ->fast_switch() for
2165  * the same CPU.
2166  */
2167 void cpufreq_driver_adjust_perf(unsigned int cpu,
2168                                  unsigned long min_perf,
2169                                  unsigned long target_perf,
2170                                  unsigned long capacity)
2171 {
2172         cpufreq_driver->adjust_perf(cpu, min_perf, target_perf, capacity);
2173 }
2174
2175 /**
2176  * cpufreq_driver_has_adjust_perf - Check "direct fast switch" callback.
2177  *
2178  * Return 'true' if the ->adjust_perf callback is present for the
2179  * current driver or 'false' otherwise.
2180  */
2181 bool cpufreq_driver_has_adjust_perf(void)
2182 {
2183         return !!cpufreq_driver->adjust_perf;
2184 }
2185
2186 /* Must set freqs->new to intermediate frequency */
2187 static int __target_intermediate(struct cpufreq_policy *policy,
2188                                  struct cpufreq_freqs *freqs, int index)
2189 {
2190         int ret;
2191
2192         freqs->new = cpufreq_driver->get_intermediate(policy, index);
2193
2194         /* We don't need to switch to intermediate freq */
2195         if (!freqs->new)
2196                 return 0;
2197
2198         pr_debug("%s: cpu: %d, switching to intermediate freq: oldfreq: %u, intermediate freq: %u\n",
2199                  __func__, policy->cpu, freqs->old, freqs->new);
2200
2201         cpufreq_freq_transition_begin(policy, freqs);
2202         ret = cpufreq_driver->target_intermediate(policy, index);
2203         cpufreq_freq_transition_end(policy, freqs, ret);
2204
2205         if (ret)
2206                 pr_err("%s: Failed to change to intermediate frequency: %d\n",
2207                        __func__, ret);
2208
2209         return ret;
2210 }
2211
2212 static int __target_index(struct cpufreq_policy *policy, int index)
2213 {
2214         struct cpufreq_freqs freqs = {.old = policy->cur, .flags = 0};
2215         unsigned int restore_freq, intermediate_freq = 0;
2216         unsigned int newfreq = policy->freq_table[index].frequency;
2217         int retval = -EINVAL;
2218         bool notify;
2219
2220         if (newfreq == policy->cur)
2221                 return 0;
2222
2223         /* Save last value to restore later on errors */
2224         restore_freq = policy->cur;
2225
2226         notify = !(cpufreq_driver->flags & CPUFREQ_ASYNC_NOTIFICATION);
2227         if (notify) {
2228                 /* Handle switching to intermediate frequency */
2229                 if (cpufreq_driver->get_intermediate) {
2230                         retval = __target_intermediate(policy, &freqs, index);
2231                         if (retval)
2232                                 return retval;
2233
2234                         intermediate_freq = freqs.new;
2235                         /* Set old freq to intermediate */
2236                         if (intermediate_freq)
2237                                 freqs.old = freqs.new;
2238                 }
2239
2240                 freqs.new = newfreq;
2241                 pr_debug("%s: cpu: %d, oldfreq: %u, new freq: %u\n",
2242                          __func__, policy->cpu, freqs.old, freqs.new);
2243
2244                 cpufreq_freq_transition_begin(policy, &freqs);
2245         }
2246
2247         retval = cpufreq_driver->target_index(policy, index);
2248         if (retval)
2249                 pr_err("%s: Failed to change cpu frequency: %d\n", __func__,
2250                        retval);
2251
2252         if (notify) {
2253                 cpufreq_freq_transition_end(policy, &freqs, retval);
2254
2255                 /*
2256                  * Failed after setting to intermediate freq? Driver should have
2257                  * reverted back to initial frequency and so should we. Check
2258                  * here for intermediate_freq instead of get_intermediate, in
2259                  * case we haven't switched to intermediate freq at all.
2260                  */
2261                 if (unlikely(retval && intermediate_freq)) {
2262                         freqs.old = intermediate_freq;
2263                         freqs.new = restore_freq;
2264                         cpufreq_freq_transition_begin(policy, &freqs);
2265                         cpufreq_freq_transition_end(policy, &freqs, 0);
2266                 }
2267         }
2268
2269         return retval;
2270 }
2271
2272 int __cpufreq_driver_target(struct cpufreq_policy *policy,
2273                             unsigned int target_freq,
2274                             unsigned int relation)
2275 {
2276         unsigned int old_target_freq = target_freq;
2277
2278         if (cpufreq_disabled())
2279                 return -ENODEV;
2280
2281         target_freq = __resolve_freq(policy, target_freq, relation);
2282
2283         pr_debug("target for CPU %u: %u kHz, relation %u, requested %u kHz\n",
2284                  policy->cpu, target_freq, relation, old_target_freq);
2285
2286         /*
2287          * This might look like a redundant call as we are checking it again
2288          * after finding index. But it is left intentionally for cases where
2289          * exactly same freq is called again and so we can save on few function
2290          * calls.
2291          */
2292         if (target_freq == policy->cur &&
2293             !(cpufreq_driver->flags & CPUFREQ_NEED_UPDATE_LIMITS))
2294                 return 0;
2295
2296         if (cpufreq_driver->target) {
2297                 /*
2298                  * If the driver hasn't setup a single inefficient frequency,
2299                  * it's unlikely it knows how to decode CPUFREQ_RELATION_E.
2300                  */
2301                 if (!policy->efficiencies_available)
2302                         relation &= ~CPUFREQ_RELATION_E;
2303
2304                 return cpufreq_driver->target(policy, target_freq, relation);
2305         }
2306
2307         if (!cpufreq_driver->target_index)
2308                 return -EINVAL;
2309
2310         return __target_index(policy, policy->cached_resolved_idx);
2311 }
2312 EXPORT_SYMBOL_GPL(__cpufreq_driver_target);
2313
2314 int cpufreq_driver_target(struct cpufreq_policy *policy,
2315                           unsigned int target_freq,
2316                           unsigned int relation)
2317 {
2318         int ret;
2319
2320         down_write(&policy->rwsem);
2321
2322         ret = __cpufreq_driver_target(policy, target_freq, relation);
2323
2324         up_write(&policy->rwsem);
2325
2326         return ret;
2327 }
2328 EXPORT_SYMBOL_GPL(cpufreq_driver_target);
2329
2330 __weak struct cpufreq_governor *cpufreq_fallback_governor(void)
2331 {
2332         return NULL;
2333 }
2334
2335 static int cpufreq_init_governor(struct cpufreq_policy *policy)
2336 {
2337         int ret;
2338
2339         /* Don't start any governor operations if we are entering suspend */
2340         if (cpufreq_suspended)
2341                 return 0;
2342         /*
2343          * Governor might not be initiated here if ACPI _PPC changed
2344          * notification happened, so check it.
2345          */
2346         if (!policy->governor)
2347                 return -EINVAL;
2348
2349         /* Platform doesn't want dynamic frequency switching ? */
2350         if (policy->governor->flags & CPUFREQ_GOV_DYNAMIC_SWITCHING &&
2351             cpufreq_driver->flags & CPUFREQ_NO_AUTO_DYNAMIC_SWITCHING) {
2352                 struct cpufreq_governor *gov = cpufreq_fallback_governor();
2353
2354                 if (gov) {
2355                         pr_warn("Can't use %s governor as dynamic switching is disallowed. Fallback to %s governor\n",
2356                                 policy->governor->name, gov->name);
2357                         policy->governor = gov;
2358                 } else {
2359                         return -EINVAL;
2360                 }
2361         }
2362
2363         if (!try_module_get(policy->governor->owner))
2364                 return -EINVAL;
2365
2366         pr_debug("%s: for CPU %u\n", __func__, policy->cpu);
2367
2368         if (policy->governor->init) {
2369                 ret = policy->governor->init(policy);
2370                 if (ret) {
2371                         module_put(policy->governor->owner);
2372                         return ret;
2373                 }
2374         }
2375
2376         policy->strict_target = !!(policy->governor->flags & CPUFREQ_GOV_STRICT_TARGET);
2377
2378         return 0;
2379 }
2380
2381 static void cpufreq_exit_governor(struct cpufreq_policy *policy)
2382 {
2383         if (cpufreq_suspended || !policy->governor)
2384                 return;
2385
2386         pr_debug("%s: for CPU %u\n", __func__, policy->cpu);
2387
2388         if (policy->governor->exit)
2389                 policy->governor->exit(policy);
2390
2391         module_put(policy->governor->owner);
2392 }
2393
2394 int cpufreq_start_governor(struct cpufreq_policy *policy)
2395 {
2396         int ret;
2397
2398         if (cpufreq_suspended)
2399                 return 0;
2400
2401         if (!policy->governor)
2402                 return -EINVAL;
2403
2404         pr_debug("%s: for CPU %u\n", __func__, policy->cpu);
2405
2406         if (cpufreq_driver->get)
2407                 cpufreq_verify_current_freq(policy, false);
2408
2409         if (policy->governor->start) {
2410                 ret = policy->governor->start(policy);
2411                 if (ret)
2412                         return ret;
2413         }
2414
2415         if (policy->governor->limits)
2416                 policy->governor->limits(policy);
2417
2418         return 0;
2419 }
2420
2421 void cpufreq_stop_governor(struct cpufreq_policy *policy)
2422 {
2423         if (cpufreq_suspended || !policy->governor)
2424                 return;
2425
2426         pr_debug("%s: for CPU %u\n", __func__, policy->cpu);
2427
2428         if (policy->governor->stop)
2429                 policy->governor->stop(policy);
2430 }
2431
2432 static void cpufreq_governor_limits(struct cpufreq_policy *policy)
2433 {
2434         if (cpufreq_suspended || !policy->governor)
2435                 return;
2436
2437         pr_debug("%s: for CPU %u\n", __func__, policy->cpu);
2438
2439         if (policy->governor->limits)
2440                 policy->governor->limits(policy);
2441 }
2442
2443 int cpufreq_register_governor(struct cpufreq_governor *governor)
2444 {
2445         int err;
2446
2447         if (!governor)
2448                 return -EINVAL;
2449
2450         if (cpufreq_disabled())
2451                 return -ENODEV;
2452
2453         mutex_lock(&cpufreq_governor_mutex);
2454
2455         err = -EBUSY;
2456         if (!find_governor(governor->name)) {
2457                 err = 0;
2458                 list_add(&governor->governor_list, &cpufreq_governor_list);
2459         }
2460
2461         mutex_unlock(&cpufreq_governor_mutex);
2462         return err;
2463 }
2464 EXPORT_SYMBOL_GPL(cpufreq_register_governor);
2465
2466 void cpufreq_unregister_governor(struct cpufreq_governor *governor)
2467 {
2468         struct cpufreq_policy *policy;
2469         unsigned long flags;
2470
2471         if (!governor)
2472                 return;
2473
2474         if (cpufreq_disabled())
2475                 return;
2476
2477         /* clear last_governor for all inactive policies */
2478         read_lock_irqsave(&cpufreq_driver_lock, flags);
2479         for_each_inactive_policy(policy) {
2480                 if (!strcmp(policy->last_governor, governor->name)) {
2481                         policy->governor = NULL;
2482                         strcpy(policy->last_governor, "\0");
2483                 }
2484         }
2485         read_unlock_irqrestore(&cpufreq_driver_lock, flags);
2486
2487         mutex_lock(&cpufreq_governor_mutex);
2488         list_del(&governor->governor_list);
2489         mutex_unlock(&cpufreq_governor_mutex);
2490 }
2491 EXPORT_SYMBOL_GPL(cpufreq_unregister_governor);
2492
2493
2494 /*********************************************************************
2495  *                          POLICY INTERFACE                         *
2496  *********************************************************************/
2497
2498 /**
2499  * cpufreq_get_policy - get the current cpufreq_policy
2500  * @policy: struct cpufreq_policy into which the current cpufreq_policy
2501  *      is written
2502  * @cpu: CPU to find the policy for
2503  *
2504  * Reads the current cpufreq policy.
2505  */
2506 int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
2507 {
2508         struct cpufreq_policy *cpu_policy;
2509         if (!policy)
2510                 return -EINVAL;
2511
2512         cpu_policy = cpufreq_cpu_get(cpu);
2513         if (!cpu_policy)
2514                 return -EINVAL;
2515
2516         memcpy(policy, cpu_policy, sizeof(*policy));
2517
2518         cpufreq_cpu_put(cpu_policy);
2519         return 0;
2520 }
2521 EXPORT_SYMBOL(cpufreq_get_policy);
2522
2523 /**
2524  * cpufreq_set_policy - Modify cpufreq policy parameters.
2525  * @policy: Policy object to modify.
2526  * @new_gov: Policy governor pointer.
2527  * @new_pol: Policy value (for drivers with built-in governors).
2528  *
2529  * Invoke the cpufreq driver's ->verify() callback to sanity-check the frequency
2530  * limits to be set for the policy, update @policy with the verified limits
2531  * values and either invoke the driver's ->setpolicy() callback (if present) or
2532  * carry out a governor update for @policy.  That is, run the current governor's
2533  * ->limits() callback (if @new_gov points to the same object as the one in
2534  * @policy) or replace the governor for @policy with @new_gov.
2535  *
2536  * The cpuinfo part of @policy is not updated by this function.
2537  */
2538 static int cpufreq_set_policy(struct cpufreq_policy *policy,
2539                               struct cpufreq_governor *new_gov,
2540                               unsigned int new_pol)
2541 {
2542         struct cpufreq_policy_data new_data;
2543         struct cpufreq_governor *old_gov;
2544         int ret;
2545
2546         memcpy(&new_data.cpuinfo, &policy->cpuinfo, sizeof(policy->cpuinfo));
2547         new_data.freq_table = policy->freq_table;
2548         new_data.cpu = policy->cpu;
2549         /*
2550          * PM QoS framework collects all the requests from users and provide us
2551          * the final aggregated value here.
2552          */
2553         new_data.min = freq_qos_read_value(&policy->constraints, FREQ_QOS_MIN);
2554         new_data.max = freq_qos_read_value(&policy->constraints, FREQ_QOS_MAX);
2555
2556         pr_debug("setting new policy for CPU %u: %u - %u kHz\n",
2557                  new_data.cpu, new_data.min, new_data.max);
2558
2559         /*
2560          * Verify that the CPU speed can be set within these limits and make sure
2561          * that min <= max.
2562          */
2563         ret = cpufreq_driver->verify(&new_data);
2564         if (ret)
2565                 return ret;
2566
2567         /*
2568          * Resolve policy min/max to available frequencies. It ensures
2569          * no frequency resolution will neither overshoot the requested maximum
2570          * nor undershoot the requested minimum.
2571          */
2572         policy->min = new_data.min;
2573         policy->max = new_data.max;
2574         policy->min = __resolve_freq(policy, policy->min, CPUFREQ_RELATION_L);
2575         policy->max = __resolve_freq(policy, policy->max, CPUFREQ_RELATION_H);
2576         trace_cpu_frequency_limits(policy);
2577
2578         policy->cached_target_freq = UINT_MAX;
2579
2580         pr_debug("new min and max freqs are %u - %u kHz\n",
2581                  policy->min, policy->max);
2582
2583         if (cpufreq_driver->setpolicy) {
2584                 policy->policy = new_pol;
2585                 pr_debug("setting range\n");
2586                 return cpufreq_driver->setpolicy(policy);
2587         }
2588
2589         if (new_gov == policy->governor) {
2590                 pr_debug("governor limits update\n");
2591                 cpufreq_governor_limits(policy);
2592                 return 0;
2593         }
2594
2595         pr_debug("governor switch\n");
2596
2597         /* save old, working values */
2598         old_gov = policy->governor;
2599         /* end old governor */
2600         if (old_gov) {
2601                 cpufreq_stop_governor(policy);
2602                 cpufreq_exit_governor(policy);
2603         }
2604
2605         /* start new governor */
2606         policy->governor = new_gov;
2607         ret = cpufreq_init_governor(policy);
2608         if (!ret) {
2609                 ret = cpufreq_start_governor(policy);
2610                 if (!ret) {
2611                         pr_debug("governor change\n");
2612                         sched_cpufreq_governor_change(policy, old_gov);
2613                         return 0;
2614                 }
2615                 cpufreq_exit_governor(policy);
2616         }
2617
2618         /* new governor failed, so re-start old one */
2619         pr_debug("starting governor %s failed\n", policy->governor->name);
2620         if (old_gov) {
2621                 policy->governor = old_gov;
2622                 if (cpufreq_init_governor(policy))
2623                         policy->governor = NULL;
2624                 else
2625                         cpufreq_start_governor(policy);
2626         }
2627
2628         return ret;
2629 }
2630
2631 /**
2632  * cpufreq_update_policy - Re-evaluate an existing cpufreq policy.
2633  * @cpu: CPU to re-evaluate the policy for.
2634  *
2635  * Update the current frequency for the cpufreq policy of @cpu and use
2636  * cpufreq_set_policy() to re-apply the min and max limits, which triggers the
2637  * evaluation of policy notifiers and the cpufreq driver's ->verify() callback
2638  * for the policy in question, among other things.
2639  */
2640 void cpufreq_update_policy(unsigned int cpu)
2641 {
2642         struct cpufreq_policy *policy = cpufreq_cpu_acquire(cpu);
2643
2644         if (!policy)
2645                 return;
2646
2647         /*
2648          * BIOS might change freq behind our back
2649          * -> ask driver for current freq and notify governors about a change
2650          */
2651         if (cpufreq_driver->get && has_target() &&
2652             (cpufreq_suspended || WARN_ON(!cpufreq_verify_current_freq(policy, false))))
2653                 goto unlock;
2654
2655         refresh_frequency_limits(policy);
2656
2657 unlock:
2658         cpufreq_cpu_release(policy);
2659 }
2660 EXPORT_SYMBOL(cpufreq_update_policy);
2661
2662 /**
2663  * cpufreq_update_limits - Update policy limits for a given CPU.
2664  * @cpu: CPU to update the policy limits for.
2665  *
2666  * Invoke the driver's ->update_limits callback if present or call
2667  * cpufreq_update_policy() for @cpu.
2668  */
2669 void cpufreq_update_limits(unsigned int cpu)
2670 {
2671         if (cpufreq_driver->update_limits)
2672                 cpufreq_driver->update_limits(cpu);
2673         else
2674                 cpufreq_update_policy(cpu);
2675 }
2676 EXPORT_SYMBOL_GPL(cpufreq_update_limits);
2677
2678 /*********************************************************************
2679  *               BOOST                                               *
2680  *********************************************************************/
2681 static int cpufreq_boost_set_sw(struct cpufreq_policy *policy, int state)
2682 {
2683         int ret;
2684
2685         if (!policy->freq_table)
2686                 return -ENXIO;
2687
2688         ret = cpufreq_frequency_table_cpuinfo(policy, policy->freq_table);
2689         if (ret) {
2690                 pr_err("%s: Policy frequency update failed\n", __func__);
2691                 return ret;
2692         }
2693
2694         ret = freq_qos_update_request(policy->max_freq_req, policy->max);
2695         if (ret < 0)
2696                 return ret;
2697
2698         return 0;
2699 }
2700
2701 int cpufreq_boost_trigger_state(int state)
2702 {
2703         struct cpufreq_policy *policy;
2704         unsigned long flags;
2705         int ret = 0;
2706
2707         if (cpufreq_driver->boost_enabled == state)
2708                 return 0;
2709
2710         write_lock_irqsave(&cpufreq_driver_lock, flags);
2711         cpufreq_driver->boost_enabled = state;
2712         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2713
2714         cpus_read_lock();
2715         for_each_active_policy(policy) {
2716                 ret = cpufreq_driver->set_boost(policy, state);
2717                 if (ret)
2718                         goto err_reset_state;
2719         }
2720         cpus_read_unlock();
2721
2722         return 0;
2723
2724 err_reset_state:
2725         cpus_read_unlock();
2726
2727         write_lock_irqsave(&cpufreq_driver_lock, flags);
2728         cpufreq_driver->boost_enabled = !state;
2729         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2730
2731         pr_err("%s: Cannot %s BOOST\n",
2732                __func__, state ? "enable" : "disable");
2733
2734         return ret;
2735 }
2736
2737 static bool cpufreq_boost_supported(void)
2738 {
2739         return cpufreq_driver->set_boost;
2740 }
2741
2742 static int create_boost_sysfs_file(void)
2743 {
2744         int ret;
2745
2746         ret = sysfs_create_file(cpufreq_global_kobject, &boost.attr);
2747         if (ret)
2748                 pr_err("%s: cannot register global BOOST sysfs file\n",
2749                        __func__);
2750
2751         return ret;
2752 }
2753
2754 static void remove_boost_sysfs_file(void)
2755 {
2756         if (cpufreq_boost_supported())
2757                 sysfs_remove_file(cpufreq_global_kobject, &boost.attr);
2758 }
2759
2760 int cpufreq_enable_boost_support(void)
2761 {
2762         if (!cpufreq_driver)
2763                 return -EINVAL;
2764
2765         if (cpufreq_boost_supported())
2766                 return 0;
2767
2768         cpufreq_driver->set_boost = cpufreq_boost_set_sw;
2769
2770         /* This will get removed on driver unregister */
2771         return create_boost_sysfs_file();
2772 }
2773 EXPORT_SYMBOL_GPL(cpufreq_enable_boost_support);
2774
2775 int cpufreq_boost_enabled(void)
2776 {
2777         return cpufreq_driver->boost_enabled;
2778 }
2779 EXPORT_SYMBOL_GPL(cpufreq_boost_enabled);
2780
2781 /*********************************************************************
2782  *               REGISTER / UNREGISTER CPUFREQ DRIVER                *
2783  *********************************************************************/
2784 static enum cpuhp_state hp_online;
2785
2786 static int cpuhp_cpufreq_online(unsigned int cpu)
2787 {
2788         cpufreq_online(cpu);
2789
2790         return 0;
2791 }
2792
2793 static int cpuhp_cpufreq_offline(unsigned int cpu)
2794 {
2795         cpufreq_offline(cpu);
2796
2797         return 0;
2798 }
2799
2800 /**
2801  * cpufreq_register_driver - register a CPU Frequency driver
2802  * @driver_data: A struct cpufreq_driver containing the values#
2803  * submitted by the CPU Frequency driver.
2804  *
2805  * Registers a CPU Frequency driver to this core code. This code
2806  * returns zero on success, -EEXIST when another driver got here first
2807  * (and isn't unregistered in the meantime).
2808  *
2809  */
2810 int cpufreq_register_driver(struct cpufreq_driver *driver_data)
2811 {
2812         unsigned long flags;
2813         int ret;
2814
2815         if (cpufreq_disabled())
2816                 return -ENODEV;
2817
2818         /*
2819          * The cpufreq core depends heavily on the availability of device
2820          * structure, make sure they are available before proceeding further.
2821          */
2822         if (!get_cpu_device(0))
2823                 return -EPROBE_DEFER;
2824
2825         if (!driver_data || !driver_data->verify || !driver_data->init ||
2826             !(driver_data->setpolicy || driver_data->target_index ||
2827                     driver_data->target) ||
2828              (driver_data->setpolicy && (driver_data->target_index ||
2829                     driver_data->target)) ||
2830              (!driver_data->get_intermediate != !driver_data->target_intermediate) ||
2831              (!driver_data->online != !driver_data->offline))
2832                 return -EINVAL;
2833
2834         pr_debug("trying to register driver %s\n", driver_data->name);
2835
2836         /* Protect against concurrent CPU online/offline. */
2837         cpus_read_lock();
2838
2839         write_lock_irqsave(&cpufreq_driver_lock, flags);
2840         if (cpufreq_driver) {
2841                 write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2842                 ret = -EEXIST;
2843                 goto out;
2844         }
2845         cpufreq_driver = driver_data;
2846         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2847
2848         /*
2849          * Mark support for the scheduler's frequency invariance engine for
2850          * drivers that implement target(), target_index() or fast_switch().
2851          */
2852         if (!cpufreq_driver->setpolicy) {
2853                 static_branch_enable_cpuslocked(&cpufreq_freq_invariance);
2854                 pr_debug("supports frequency invariance");
2855         }
2856
2857         if (driver_data->setpolicy)
2858                 driver_data->flags |= CPUFREQ_CONST_LOOPS;
2859
2860         if (cpufreq_boost_supported()) {
2861                 ret = create_boost_sysfs_file();
2862                 if (ret)
2863                         goto err_null_driver;
2864         }
2865
2866         ret = subsys_interface_register(&cpufreq_interface);
2867         if (ret)
2868                 goto err_boost_unreg;
2869
2870         if (unlikely(list_empty(&cpufreq_policy_list))) {
2871                 /* if all ->init() calls failed, unregister */
2872                 ret = -ENODEV;
2873                 pr_debug("%s: No CPU initialized for driver %s\n", __func__,
2874                          driver_data->name);
2875                 goto err_if_unreg;
2876         }
2877
2878         ret = cpuhp_setup_state_nocalls_cpuslocked(CPUHP_AP_ONLINE_DYN,
2879                                                    "cpufreq:online",
2880                                                    cpuhp_cpufreq_online,
2881                                                    cpuhp_cpufreq_offline);
2882         if (ret < 0)
2883                 goto err_if_unreg;
2884         hp_online = ret;
2885         ret = 0;
2886
2887         pr_debug("driver %s up and running\n", driver_data->name);
2888         goto out;
2889
2890 err_if_unreg:
2891         subsys_interface_unregister(&cpufreq_interface);
2892 err_boost_unreg:
2893         remove_boost_sysfs_file();
2894 err_null_driver:
2895         write_lock_irqsave(&cpufreq_driver_lock, flags);
2896         cpufreq_driver = NULL;
2897         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2898 out:
2899         cpus_read_unlock();
2900         return ret;
2901 }
2902 EXPORT_SYMBOL_GPL(cpufreq_register_driver);
2903
2904 /*
2905  * cpufreq_unregister_driver - unregister the current CPUFreq driver
2906  *
2907  * Unregister the current CPUFreq driver. Only call this if you have
2908  * the right to do so, i.e. if you have succeeded in initialising before!
2909  * Returns zero if successful, and -EINVAL if the cpufreq_driver is
2910  * currently not initialised.
2911  */
2912 void cpufreq_unregister_driver(struct cpufreq_driver *driver)
2913 {
2914         unsigned long flags;
2915
2916         if (WARN_ON(!cpufreq_driver || (driver != cpufreq_driver)))
2917                 return;
2918
2919         pr_debug("unregistering driver %s\n", driver->name);
2920
2921         /* Protect against concurrent cpu hotplug */
2922         cpus_read_lock();
2923         subsys_interface_unregister(&cpufreq_interface);
2924         remove_boost_sysfs_file();
2925         static_branch_disable_cpuslocked(&cpufreq_freq_invariance);
2926         cpuhp_remove_state_nocalls_cpuslocked(hp_online);
2927
2928         write_lock_irqsave(&cpufreq_driver_lock, flags);
2929
2930         cpufreq_driver = NULL;
2931
2932         write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2933         cpus_read_unlock();
2934 }
2935 EXPORT_SYMBOL_GPL(cpufreq_unregister_driver);
2936
2937 static int __init cpufreq_core_init(void)
2938 {
2939         struct cpufreq_governor *gov = cpufreq_default_governor();
2940
2941         if (cpufreq_disabled())
2942                 return -ENODEV;
2943
2944         cpufreq_global_kobject = kobject_create_and_add("cpufreq", &cpu_subsys.dev_root->kobj);
2945         BUG_ON(!cpufreq_global_kobject);
2946
2947         if (!strlen(default_governor))
2948                 strncpy(default_governor, gov->name, CPUFREQ_NAME_LEN);
2949
2950         return 0;
2951 }
2952 module_param(off, int, 0444);
2953 module_param_string(default_governor, default_governor, CPUFREQ_NAME_LEN, 0444);
2954 core_initcall(cpufreq_core_init);