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