xref: /linux/drivers/cpufreq/cpufreq.c (revision 005438a8eef063495ac059d128eea71b58de50e5)
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);
2618