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