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