xref: /openbmc/linux/drivers/cpufreq/cpufreq.c (revision 18bf3a124ef87fe43045cbf13dff7ea7e3a94aa3)
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 configuartion 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 	if (fattr->store)
879 		ret = fattr->store(policy, buf, count);
880 	else
881 		ret = -EIO;
882 
883 	up_write(&policy->rwsem);
884 
885 	up_read(&cpufreq_rwsem);
886 unlock:
887 	put_online_cpus();
888 
889 	return ret;
890 }
891 
892 static void cpufreq_sysfs_release(struct kobject *kobj)
893 {
894 	struct cpufreq_policy *policy = to_policy(kobj);
895 	pr_debug("last reference is dropped\n");
896 	complete(&policy->kobj_unregister);
897 }
898 
899 static const struct sysfs_ops sysfs_ops = {
900 	.show	= show,
901 	.store	= store,
902 };
903 
904 static struct kobj_type ktype_cpufreq = {
905 	.sysfs_ops	= &sysfs_ops,
906 	.default_attrs	= default_attrs,
907 	.release	= cpufreq_sysfs_release,
908 };
909 
910 struct kobject *cpufreq_global_kobject;
911 EXPORT_SYMBOL(cpufreq_global_kobject);
912 
913 static int cpufreq_global_kobject_usage;
914 
915 int cpufreq_get_global_kobject(void)
916 {
917 	if (!cpufreq_global_kobject_usage++)
918 		return kobject_add(cpufreq_global_kobject,
919 				&cpu_subsys.dev_root->kobj, "%s", "cpufreq");
920 
921 	return 0;
922 }
923 EXPORT_SYMBOL(cpufreq_get_global_kobject);
924 
925 void cpufreq_put_global_kobject(void)
926 {
927 	if (!--cpufreq_global_kobject_usage)
928 		kobject_del(cpufreq_global_kobject);
929 }
930 EXPORT_SYMBOL(cpufreq_put_global_kobject);
931 
932 int cpufreq_sysfs_create_file(const struct attribute *attr)
933 {
934 	int ret = cpufreq_get_global_kobject();
935 
936 	if (!ret) {
937 		ret = sysfs_create_file(cpufreq_global_kobject, attr);
938 		if (ret)
939 			cpufreq_put_global_kobject();
940 	}
941 
942 	return ret;
943 }
944 EXPORT_SYMBOL(cpufreq_sysfs_create_file);
945 
946 void cpufreq_sysfs_remove_file(const struct attribute *attr)
947 {
948 	sysfs_remove_file(cpufreq_global_kobject, attr);
949 	cpufreq_put_global_kobject();
950 }
951 EXPORT_SYMBOL(cpufreq_sysfs_remove_file);
952 
953 /* symlink affected CPUs */
954 static int cpufreq_add_dev_symlink(struct cpufreq_policy *policy)
955 {
956 	unsigned int j;
957 	int ret = 0;
958 
959 	for_each_cpu(j, policy->cpus) {
960 		struct device *cpu_dev;
961 
962 		if (j == policy->cpu)
963 			continue;
964 
965 		pr_debug("Adding link for CPU: %u\n", j);
966 		cpu_dev = get_cpu_device(j);
967 		ret = sysfs_create_link(&cpu_dev->kobj, &policy->kobj,
968 					"cpufreq");
969 		if (ret)
970 			break;
971 	}
972 	return ret;
973 }
974 
975 static int cpufreq_add_dev_interface(struct cpufreq_policy *policy,
976 				     struct device *dev)
977 {
978 	struct freq_attr **drv_attr;
979 	int ret = 0;
980 
981 	/* set up files for this cpu device */
982 	drv_attr = cpufreq_driver->attr;
983 	while (drv_attr && *drv_attr) {
984 		ret = sysfs_create_file(&policy->kobj, &((*drv_attr)->attr));
985 		if (ret)
986 			return ret;
987 		drv_attr++;
988 	}
989 	if (cpufreq_driver->get) {
990 		ret = sysfs_create_file(&policy->kobj, &cpuinfo_cur_freq.attr);
991 		if (ret)
992 			return ret;
993 	}
994 
995 	ret = sysfs_create_file(&policy->kobj, &scaling_cur_freq.attr);
996 	if (ret)
997 		return ret;
998 
999 	if (cpufreq_driver->bios_limit) {
1000 		ret = sysfs_create_file(&policy->kobj, &bios_limit.attr);
1001 		if (ret)
1002 			return ret;
1003 	}
1004 
1005 	return cpufreq_add_dev_symlink(policy);
1006 }
1007 
1008 static void cpufreq_init_policy(struct cpufreq_policy *policy)
1009 {
1010 	struct cpufreq_governor *gov = NULL;
1011 	struct cpufreq_policy new_policy;
1012 	int ret = 0;
1013 
1014 	memcpy(&new_policy, policy, sizeof(*policy));
1015 
1016 	/* Update governor of new_policy to the governor used before hotplug */
1017 	gov = find_governor(policy->last_governor);
1018 	if (gov)
1019 		pr_debug("Restoring governor %s for cpu %d\n",
1020 				policy->governor->name, policy->cpu);
1021 	else
1022 		gov = CPUFREQ_DEFAULT_GOVERNOR;
1023 
1024 	new_policy.governor = gov;
1025 
1026 	/* Use the default policy if its valid. */
1027 	if (cpufreq_driver->setpolicy)
1028 		cpufreq_parse_governor(gov->name, &new_policy.policy, NULL);
1029 
1030 	/* set default policy */
1031 	ret = cpufreq_set_policy(policy, &new_policy);
1032 	if (ret) {
1033 		pr_debug("setting policy failed\n");
1034 		if (cpufreq_driver->exit)
1035 			cpufreq_driver->exit(policy);
1036 	}
1037 }
1038 
1039 static int cpufreq_add_policy_cpu(struct cpufreq_policy *policy,
1040 				  unsigned int cpu, struct device *dev)
1041 {
1042 	int ret = 0;
1043 
1044 	/* Has this CPU been taken care of already? */
1045 	if (cpumask_test_cpu(cpu, policy->cpus))
1046 		return 0;
1047 
1048 	if (has_target()) {
1049 		ret = __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
1050 		if (ret) {
1051 			pr_err("%s: Failed to stop governor\n", __func__);
1052 			return ret;
1053 		}
1054 	}
1055 
1056 	down_write(&policy->rwsem);
1057 	cpumask_set_cpu(cpu, policy->cpus);
1058 	up_write(&policy->rwsem);
1059 
1060 	if (has_target()) {
1061 		ret = __cpufreq_governor(policy, CPUFREQ_GOV_START);
1062 		if (!ret)
1063 			ret = __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
1064 
1065 		if (ret) {
1066 			pr_err("%s: Failed to start governor\n", __func__);
1067 			return ret;
1068 		}
1069 	}
1070 
1071 	return sysfs_create_link(&dev->kobj, &policy->kobj, "cpufreq");
1072 }
1073 
1074 static struct cpufreq_policy *cpufreq_policy_restore(unsigned int cpu)
1075 {
1076 	struct cpufreq_policy *policy;
1077 	unsigned long flags;
1078 
1079 	read_lock_irqsave(&cpufreq_driver_lock, flags);
1080 	policy = per_cpu(cpufreq_cpu_data, cpu);
1081 	read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1082 
1083 	if (likely(policy)) {
1084 		/* Policy should be inactive here */
1085 		WARN_ON(!policy_is_inactive(policy));
1086 	}
1087 
1088 	return policy;
1089 }
1090 
1091 static struct cpufreq_policy *cpufreq_policy_alloc(void)
1092 {
1093 	struct cpufreq_policy *policy;
1094 
1095 	policy = kzalloc(sizeof(*policy), GFP_KERNEL);
1096 	if (!policy)
1097 		return NULL;
1098 
1099 	if (!alloc_cpumask_var(&policy->cpus, GFP_KERNEL))
1100 		goto err_free_policy;
1101 
1102 	if (!zalloc_cpumask_var(&policy->related_cpus, GFP_KERNEL))
1103 		goto err_free_cpumask;
1104 
1105 	INIT_LIST_HEAD(&policy->policy_list);
1106 	init_rwsem(&policy->rwsem);
1107 	spin_lock_init(&policy->transition_lock);
1108 	init_waitqueue_head(&policy->transition_wait);
1109 	init_completion(&policy->kobj_unregister);
1110 	INIT_WORK(&policy->update, handle_update);
1111 
1112 	return policy;
1113 
1114 err_free_cpumask:
1115 	free_cpumask_var(policy->cpus);
1116 err_free_policy:
1117 	kfree(policy);
1118 
1119 	return NULL;
1120 }
1121 
1122 static void cpufreq_policy_put_kobj(struct cpufreq_policy *policy)
1123 {
1124 	struct kobject *kobj;
1125 	struct completion *cmp;
1126 
1127 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1128 			CPUFREQ_REMOVE_POLICY, policy);
1129 
1130 	down_read(&policy->rwsem);
1131 	kobj = &policy->kobj;
1132 	cmp = &policy->kobj_unregister;
1133 	up_read(&policy->rwsem);
1134 	kobject_put(kobj);
1135 
1136 	/*
1137 	 * We need to make sure that the underlying kobj is
1138 	 * actually not referenced anymore by anybody before we
1139 	 * proceed with unloading.
1140 	 */
1141 	pr_debug("waiting for dropping of refcount\n");
1142 	wait_for_completion(cmp);
1143 	pr_debug("wait complete\n");
1144 }
1145 
1146 static void cpufreq_policy_free(struct cpufreq_policy *policy)
1147 {
1148 	unsigned long flags;
1149 	int cpu;
1150 
1151 	/* Remove policy from list */
1152 	write_lock_irqsave(&cpufreq_driver_lock, flags);
1153 	list_del(&policy->policy_list);
1154 
1155 	for_each_cpu(cpu, policy->related_cpus)
1156 		per_cpu(cpufreq_cpu_data, cpu) = NULL;
1157 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1158 
1159 	free_cpumask_var(policy->related_cpus);
1160 	free_cpumask_var(policy->cpus);
1161 	kfree(policy);
1162 }
1163 
1164 static int update_policy_cpu(struct cpufreq_policy *policy, unsigned int cpu,
1165 			     struct device *cpu_dev)
1166 {
1167 	int ret;
1168 
1169 	if (WARN_ON(cpu == policy->cpu))
1170 		return 0;
1171 
1172 	/* Move kobject to the new policy->cpu */
1173 	ret = kobject_move(&policy->kobj, &cpu_dev->kobj);
1174 	if (ret) {
1175 		pr_err("%s: Failed to move kobj: %d\n", __func__, ret);
1176 		return ret;
1177 	}
1178 
1179 	down_write(&policy->rwsem);
1180 	policy->cpu = cpu;
1181 	up_write(&policy->rwsem);
1182 
1183 	return 0;
1184 }
1185 
1186 /**
1187  * cpufreq_add_dev - add a CPU device
1188  *
1189  * Adds the cpufreq interface for a CPU device.
1190  *
1191  * The Oracle says: try running cpufreq registration/unregistration concurrently
1192  * with with cpu hotplugging and all hell will break loose. Tried to clean this
1193  * mess up, but more thorough testing is needed. - Mathieu
1194  */
1195 static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
1196 {
1197 	unsigned int j, cpu = dev->id;
1198 	int ret = -ENOMEM;
1199 	struct cpufreq_policy *policy;
1200 	unsigned long flags;
1201 	bool recover_policy = cpufreq_suspended;
1202 
1203 	if (cpu_is_offline(cpu))
1204 		return 0;
1205 
1206 	pr_debug("adding CPU %u\n", cpu);
1207 
1208 	if (!down_read_trylock(&cpufreq_rwsem))
1209 		return 0;
1210 
1211 	/* Check if this CPU already has a policy to manage it */
1212 	policy = per_cpu(cpufreq_cpu_data, cpu);
1213 	if (policy && !policy_is_inactive(policy)) {
1214 		WARN_ON(!cpumask_test_cpu(cpu, policy->related_cpus));
1215 		ret = cpufreq_add_policy_cpu(policy, cpu, dev);
1216 		up_read(&cpufreq_rwsem);
1217 		return ret;
1218 	}
1219 
1220 	/*
1221 	 * Restore the saved policy when doing light-weight init and fall back
1222 	 * to the full init if that fails.
1223 	 */
1224 	policy = recover_policy ? cpufreq_policy_restore(cpu) : NULL;
1225 	if (!policy) {
1226 		recover_policy = false;
1227 		policy = cpufreq_policy_alloc();
1228 		if (!policy)
1229 			goto nomem_out;
1230 	}
1231 
1232 	/*
1233 	 * In the resume path, since we restore a saved policy, the assignment
1234 	 * to policy->cpu is like an update of the existing policy, rather than
1235 	 * the creation of a brand new one. So we need to perform this update
1236 	 * by invoking update_policy_cpu().
1237 	 */
1238 	if (recover_policy && cpu != policy->cpu)
1239 		WARN_ON(update_policy_cpu(policy, cpu, dev));
1240 	else
1241 		policy->cpu = cpu;
1242 
1243 	cpumask_copy(policy->cpus, cpumask_of(cpu));
1244 
1245 	/* call driver. From then on the cpufreq must be able
1246 	 * to accept all calls to ->verify and ->setpolicy for this CPU
1247 	 */
1248 	ret = cpufreq_driver->init(policy);
1249 	if (ret) {
1250 		pr_debug("initialization failed\n");
1251 		goto err_set_policy_cpu;
1252 	}
1253 
1254 	down_write(&policy->rwsem);
1255 
1256 	/* related cpus should atleast have policy->cpus */
1257 	cpumask_or(policy->related_cpus, policy->related_cpus, policy->cpus);
1258 
1259 	/*
1260 	 * affected cpus must always be the one, which are online. We aren't
1261 	 * managing offline cpus here.
1262 	 */
1263 	cpumask_and(policy->cpus, policy->cpus, cpu_online_mask);
1264 
1265 	if (!recover_policy) {
1266 		policy->user_policy.min = policy->min;
1267 		policy->user_policy.max = policy->max;
1268 
1269 		/* prepare interface data */
1270 		ret = kobject_init_and_add(&policy->kobj, &ktype_cpufreq,
1271 					   &dev->kobj, "cpufreq");
1272 		if (ret) {
1273 			pr_err("%s: failed to init policy->kobj: %d\n",
1274 			       __func__, ret);
1275 			goto err_init_policy_kobj;
1276 		}
1277 
1278 		write_lock_irqsave(&cpufreq_driver_lock, flags);
1279 		for_each_cpu(j, policy->related_cpus)
1280 			per_cpu(cpufreq_cpu_data, j) = policy;
1281 		write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1282 	}
1283 
1284 	if (cpufreq_driver->get && !cpufreq_driver->setpolicy) {
1285 		policy->cur = cpufreq_driver->get(policy->cpu);
1286 		if (!policy->cur) {
1287 			pr_err("%s: ->get() failed\n", __func__);
1288 			goto err_get_freq;
1289 		}
1290 	}
1291 
1292 	/*
1293 	 * Sometimes boot loaders set CPU frequency to a value outside of
1294 	 * frequency table present with cpufreq core. In such cases CPU might be
1295 	 * unstable if it has to run on that frequency for long duration of time
1296 	 * and so its better to set it to a frequency which is specified in
1297 	 * freq-table. This also makes cpufreq stats inconsistent as
1298 	 * cpufreq-stats would fail to register because current frequency of CPU
1299 	 * isn't found in freq-table.
1300 	 *
1301 	 * Because we don't want this change to effect boot process badly, we go
1302 	 * for the next freq which is >= policy->cur ('cur' must be set by now,
1303 	 * otherwise we will end up setting freq to lowest of the table as 'cur'
1304 	 * is initialized to zero).
1305 	 *
1306 	 * We are passing target-freq as "policy->cur - 1" otherwise
1307 	 * __cpufreq_driver_target() would simply fail, as policy->cur will be
1308 	 * equal to target-freq.
1309 	 */
1310 	if ((cpufreq_driver->flags & CPUFREQ_NEED_INITIAL_FREQ_CHECK)
1311 	    && has_target()) {
1312 		/* Are we running at unknown frequency ? */
1313 		ret = cpufreq_frequency_table_get_index(policy, policy->cur);
1314 		if (ret == -EINVAL) {
1315 			/* Warn user and fix it */
1316 			pr_warn("%s: CPU%d: Running at unlisted freq: %u KHz\n",
1317 				__func__, policy->cpu, policy->cur);
1318 			ret = __cpufreq_driver_target(policy, policy->cur - 1,
1319 				CPUFREQ_RELATION_L);
1320 
1321 			/*
1322 			 * Reaching here after boot in a few seconds may not
1323 			 * mean that system will remain stable at "unknown"
1324 			 * frequency for longer duration. Hence, a BUG_ON().
1325 			 */
1326 			BUG_ON(ret);
1327 			pr_warn("%s: CPU%d: Unlisted initial frequency changed to: %u KHz\n",
1328 				__func__, policy->cpu, policy->cur);
1329 		}
1330 	}
1331 
1332 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1333 				     CPUFREQ_START, policy);
1334 
1335 	if (!recover_policy) {
1336 		ret = cpufreq_add_dev_interface(policy, dev);
1337 		if (ret)
1338 			goto err_out_unregister;
1339 		blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1340 				CPUFREQ_CREATE_POLICY, policy);
1341 
1342 		write_lock_irqsave(&cpufreq_driver_lock, flags);
1343 		list_add(&policy->policy_list, &cpufreq_policy_list);
1344 		write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1345 	}
1346 
1347 	cpufreq_init_policy(policy);
1348 
1349 	if (!recover_policy) {
1350 		policy->user_policy.policy = policy->policy;
1351 		policy->user_policy.governor = policy->governor;
1352 	}
1353 	up_write(&policy->rwsem);
1354 
1355 	kobject_uevent(&policy->kobj, KOBJ_ADD);
1356 
1357 	up_read(&cpufreq_rwsem);
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 err_out_unregister:
1368 err_get_freq:
1369 	if (!recover_policy) {
1370 		kobject_put(&policy->kobj);
1371 		wait_for_completion(&policy->kobj_unregister);
1372 	}
1373 err_init_policy_kobj:
1374 	up_write(&policy->rwsem);
1375 
1376 	if (cpufreq_driver->exit)
1377 		cpufreq_driver->exit(policy);
1378 err_set_policy_cpu:
1379 	if (recover_policy)
1380 		cpufreq_policy_put_kobj(policy);
1381 	cpufreq_policy_free(policy);
1382 
1383 nomem_out:
1384 	up_read(&cpufreq_rwsem);
1385 
1386 	return ret;
1387 }
1388 
1389 static int __cpufreq_remove_dev_prepare(struct device *dev,
1390 					struct subsys_interface *sif)
1391 {
1392 	unsigned int cpu = dev->id, cpus;
1393 	int ret;
1394 	struct cpufreq_policy *policy;
1395 
1396 	pr_debug("%s: unregistering CPU %u\n", __func__, cpu);
1397 
1398 	policy = cpufreq_cpu_get_raw(cpu);
1399 	if (!policy) {
1400 		pr_debug("%s: No cpu_data found\n", __func__);
1401 		return -EINVAL;
1402 	}
1403 
1404 	if (has_target()) {
1405 		ret = __cpufreq_governor(policy, CPUFREQ_GOV_STOP);
1406 		if (ret) {
1407 			pr_err("%s: Failed to stop governor\n", __func__);
1408 			return ret;
1409 		}
1410 	}
1411 
1412 	down_write(&policy->rwsem);
1413 	cpus = cpumask_weight(policy->cpus);
1414 
1415 	if (has_target() && cpus == 1)
1416 		strncpy(policy->last_governor, policy->governor->name,
1417 			CPUFREQ_NAME_LEN);
1418 	up_write(&policy->rwsem);
1419 
1420 	if (cpu != policy->cpu) {
1421 		sysfs_remove_link(&dev->kobj, "cpufreq");
1422 	} else if (cpus > 1) {
1423 		/* Nominate new CPU */
1424 		int new_cpu = cpumask_any_but(policy->cpus, cpu);
1425 		struct device *cpu_dev = get_cpu_device(new_cpu);
1426 
1427 		sysfs_remove_link(&cpu_dev->kobj, "cpufreq");
1428 		ret = update_policy_cpu(policy, new_cpu, cpu_dev);
1429 		if (ret) {
1430 			if (sysfs_create_link(&cpu_dev->kobj, &policy->kobj,
1431 					      "cpufreq"))
1432 				pr_err("%s: Failed to restore kobj link to cpu:%d\n",
1433 				       __func__, cpu_dev->id);
1434 			return ret;
1435 		}
1436 
1437 		if (!cpufreq_suspended)
1438 			pr_debug("%s: policy Kobject moved to cpu: %d from: %d\n",
1439 				 __func__, new_cpu, cpu);
1440 	} else if (cpufreq_driver->stop_cpu) {
1441 		cpufreq_driver->stop_cpu(policy);
1442 	}
1443 
1444 	return 0;
1445 }
1446 
1447 static int __cpufreq_remove_dev_finish(struct device *dev,
1448 				       struct subsys_interface *sif)
1449 {
1450 	unsigned int cpu = dev->id;
1451 	int ret;
1452 	struct cpufreq_policy *policy = cpufreq_cpu_get_raw(cpu);
1453 
1454 	if (!policy) {
1455 		pr_debug("%s: No cpu_data found\n", __func__);
1456 		return -EINVAL;
1457 	}
1458 
1459 	down_write(&policy->rwsem);
1460 	cpumask_clear_cpu(cpu, policy->cpus);
1461 	up_write(&policy->rwsem);
1462 
1463 	/* If cpu is last user of policy, free policy */
1464 	if (policy_is_inactive(policy)) {
1465 		if (has_target()) {
1466 			ret = __cpufreq_governor(policy,
1467 					CPUFREQ_GOV_POLICY_EXIT);
1468 			if (ret) {
1469 				pr_err("%s: Failed to exit governor\n",
1470 				       __func__);
1471 				return ret;
1472 			}
1473 		}
1474 
1475 		if (!cpufreq_suspended)
1476 			cpufreq_policy_put_kobj(policy);
1477 
1478 		/*
1479 		 * Perform the ->exit() even during light-weight tear-down,
1480 		 * since this is a core component, and is essential for the
1481 		 * subsequent light-weight ->init() to succeed.
1482 		 */
1483 		if (cpufreq_driver->exit)
1484 			cpufreq_driver->exit(policy);
1485 
1486 		if (!cpufreq_suspended)
1487 			cpufreq_policy_free(policy);
1488 	} else if (has_target()) {
1489 		ret = __cpufreq_governor(policy, CPUFREQ_GOV_START);
1490 		if (!ret)
1491 			ret = __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
1492 
1493 		if (ret) {
1494 			pr_err("%s: Failed to start governor\n", __func__);
1495 			return ret;
1496 		}
1497 	}
1498 
1499 	return 0;
1500 }
1501 
1502 /**
1503  * cpufreq_remove_dev - remove a CPU device
1504  *
1505  * Removes the cpufreq interface for a CPU device.
1506  */
1507 static int cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
1508 {
1509 	unsigned int cpu = dev->id;
1510 	int ret;
1511 
1512 	if (cpu_is_offline(cpu))
1513 		return 0;
1514 
1515 	ret = __cpufreq_remove_dev_prepare(dev, sif);
1516 
1517 	if (!ret)
1518 		ret = __cpufreq_remove_dev_finish(dev, sif);
1519 
1520 	return ret;
1521 }
1522 
1523 static void handle_update(struct work_struct *work)
1524 {
1525 	struct cpufreq_policy *policy =
1526 		container_of(work, struct cpufreq_policy, update);
1527 	unsigned int cpu = policy->cpu;
1528 	pr_debug("handle_update for cpu %u called\n", cpu);
1529 	cpufreq_update_policy(cpu);
1530 }
1531 
1532 /**
1533  *	cpufreq_out_of_sync - If actual and saved CPU frequency differs, we're
1534  *	in deep trouble.
1535  *	@policy: policy managing CPUs
1536  *	@new_freq: CPU frequency the CPU actually runs at
1537  *
1538  *	We adjust to current frequency first, and need to clean up later.
1539  *	So either call to cpufreq_update_policy() or schedule handle_update()).
1540  */
1541 static void cpufreq_out_of_sync(struct cpufreq_policy *policy,
1542 				unsigned int new_freq)
1543 {
1544 	struct cpufreq_freqs freqs;
1545 
1546 	pr_debug("Warning: CPU frequency out of sync: cpufreq and timing core thinks of %u, is %u kHz\n",
1547 		 policy->cur, new_freq);
1548 
1549 	freqs.old = policy->cur;
1550 	freqs.new = new_freq;
1551 
1552 	cpufreq_freq_transition_begin(policy, &freqs);
1553 	cpufreq_freq_transition_end(policy, &freqs, 0);
1554 }
1555 
1556 /**
1557  * cpufreq_quick_get - get the CPU frequency (in kHz) from policy->cur
1558  * @cpu: CPU number
1559  *
1560  * This is the last known freq, without actually getting it from the driver.
1561  * Return value will be same as what is shown in scaling_cur_freq in sysfs.
1562  */
1563 unsigned int cpufreq_quick_get(unsigned int cpu)
1564 {
1565 	struct cpufreq_policy *policy;
1566 	unsigned int ret_freq = 0;
1567 
1568 	if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get)
1569 		return cpufreq_driver->get(cpu);
1570 
1571 	policy = cpufreq_cpu_get(cpu);
1572 	if (policy) {
1573 		ret_freq = policy->cur;
1574 		cpufreq_cpu_put(policy);
1575 	}
1576 
1577 	return ret_freq;
1578 }
1579 EXPORT_SYMBOL(cpufreq_quick_get);
1580 
1581 /**
1582  * cpufreq_quick_get_max - get the max reported CPU frequency for this CPU
1583  * @cpu: CPU number
1584  *
1585  * Just return the max possible frequency for a given CPU.
1586  */
1587 unsigned int cpufreq_quick_get_max(unsigned int cpu)
1588 {
1589 	struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1590 	unsigned int ret_freq = 0;
1591 
1592 	if (policy) {
1593 		ret_freq = policy->max;
1594 		cpufreq_cpu_put(policy);
1595 	}
1596 
1597 	return ret_freq;
1598 }
1599 EXPORT_SYMBOL(cpufreq_quick_get_max);
1600 
1601 static unsigned int __cpufreq_get(struct cpufreq_policy *policy)
1602 {
1603 	unsigned int ret_freq = 0;
1604 
1605 	if (!cpufreq_driver->get)
1606 		return ret_freq;
1607 
1608 	ret_freq = cpufreq_driver->get(policy->cpu);
1609 
1610 	if (ret_freq && policy->cur &&
1611 		!(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) {
1612 		/* verify no discrepancy between actual and
1613 					saved value exists */
1614 		if (unlikely(ret_freq != policy->cur)) {
1615 			cpufreq_out_of_sync(policy, ret_freq);
1616 			schedule_work(&policy->update);
1617 		}
1618 	}
1619 
1620 	return ret_freq;
1621 }
1622 
1623 /**
1624  * cpufreq_get - get the current CPU frequency (in kHz)
1625  * @cpu: CPU number
1626  *
1627  * Get the CPU current (static) CPU frequency
1628  */
1629 unsigned int cpufreq_get(unsigned int cpu)
1630 {
1631 	struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1632 	unsigned int ret_freq = 0;
1633 
1634 	if (policy) {
1635 		down_read(&policy->rwsem);
1636 		ret_freq = __cpufreq_get(policy);
1637 		up_read(&policy->rwsem);
1638 
1639 		cpufreq_cpu_put(policy);
1640 	}
1641 
1642 	return ret_freq;
1643 }
1644 EXPORT_SYMBOL(cpufreq_get);
1645 
1646 static struct subsys_interface cpufreq_interface = {
1647 	.name		= "cpufreq",
1648 	.subsys		= &cpu_subsys,
1649 	.add_dev	= cpufreq_add_dev,
1650 	.remove_dev	= cpufreq_remove_dev,
1651 };
1652 
1653 /*
1654  * In case platform wants some specific frequency to be configured
1655  * during suspend..
1656  */
1657 int cpufreq_generic_suspend(struct cpufreq_policy *policy)
1658 {
1659 	int ret;
1660 
1661 	if (!policy->suspend_freq) {
1662 		pr_err("%s: suspend_freq can't be zero\n", __func__);
1663 		return -EINVAL;
1664 	}
1665 
1666 	pr_debug("%s: Setting suspend-freq: %u\n", __func__,
1667 			policy->suspend_freq);
1668 
1669 	ret = __cpufreq_driver_target(policy, policy->suspend_freq,
1670 			CPUFREQ_RELATION_H);
1671 	if (ret)
1672 		pr_err("%s: unable to set suspend-freq: %u. err: %d\n",
1673 				__func__, policy->suspend_freq, ret);
1674 
1675 	return ret;
1676 }
1677 EXPORT_SYMBOL(cpufreq_generic_suspend);
1678 
1679 /**
1680  * cpufreq_suspend() - Suspend CPUFreq governors
1681  *
1682  * Called during system wide Suspend/Hibernate cycles for suspending governors
1683  * as some platforms can't change frequency after this point in suspend cycle.
1684  * Because some of the devices (like: i2c, regulators, etc) they use for
1685  * changing frequency are suspended quickly after this point.
1686  */
1687 void cpufreq_suspend(void)
1688 {
1689 	struct cpufreq_policy *policy;
1690 
1691 	if (!cpufreq_driver)
1692 		return;
1693 
1694 	if (!has_target())
1695 		goto suspend;
1696 
1697 	pr_debug("%s: Suspending Governors\n", __func__);
1698 
1699 	for_each_active_policy(policy) {
1700 		if (__cpufreq_governor(policy, CPUFREQ_GOV_STOP))
1701 			pr_err("%s: Failed to stop governor for policy: %p\n",
1702 				__func__, policy);
1703 		else if (cpufreq_driver->suspend
1704 		    && cpufreq_driver->suspend(policy))
1705 			pr_err("%s: Failed to suspend driver: %p\n", __func__,
1706 				policy);
1707 	}
1708 
1709 suspend:
1710 	cpufreq_suspended = true;
1711 }
1712 
1713 /**
1714  * cpufreq_resume() - Resume CPUFreq governors
1715  *
1716  * Called during system wide Suspend/Hibernate cycle for resuming governors that
1717  * are suspended with cpufreq_suspend().
1718  */
1719 void cpufreq_resume(void)
1720 {
1721 	struct cpufreq_policy *policy;
1722 
1723 	if (!cpufreq_driver)
1724 		return;
1725 
1726 	cpufreq_suspended = false;
1727 
1728 	if (!has_target())
1729 		return;
1730 
1731 	pr_debug("%s: Resuming Governors\n", __func__);
1732 
1733 	for_each_active_policy(policy) {
1734 		if (cpufreq_driver->resume && cpufreq_driver->resume(policy))
1735 			pr_err("%s: Failed to resume driver: %p\n", __func__,
1736 				policy);
1737 		else if (__cpufreq_governor(policy, CPUFREQ_GOV_START)
1738 		    || __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS))
1739 			pr_err("%s: Failed to start governor for policy: %p\n",
1740 				__func__, policy);
1741 	}
1742 
1743 	/*
1744 	 * schedule call cpufreq_update_policy() for first-online CPU, as that
1745 	 * wouldn't be hotplugged-out on suspend. It will verify that the
1746 	 * current freq is in sync with what we believe it to be.
1747 	 */
1748 	policy = cpufreq_cpu_get_raw(cpumask_first(cpu_online_mask));
1749 	if (WARN_ON(!policy))
1750 		return;
1751 
1752 	schedule_work(&policy->update);
1753 }
1754 
1755 /**
1756  *	cpufreq_get_current_driver - return current driver's name
1757  *
1758  *	Return the name string of the currently loaded cpufreq driver
1759  *	or NULL, if none.
1760  */
1761 const char *cpufreq_get_current_driver(void)
1762 {
1763 	if (cpufreq_driver)
1764 		return cpufreq_driver->name;
1765 
1766 	return NULL;
1767 }
1768 EXPORT_SYMBOL_GPL(cpufreq_get_current_driver);
1769 
1770 /**
1771  *	cpufreq_get_driver_data - return current driver data
1772  *
1773  *	Return the private data of the currently loaded cpufreq
1774  *	driver, or NULL if no cpufreq driver is loaded.
1775  */
1776 void *cpufreq_get_driver_data(void)
1777 {
1778 	if (cpufreq_driver)
1779 		return cpufreq_driver->driver_data;
1780 
1781 	return NULL;
1782 }
1783 EXPORT_SYMBOL_GPL(cpufreq_get_driver_data);
1784 
1785 /*********************************************************************
1786  *                     NOTIFIER LISTS INTERFACE                      *
1787  *********************************************************************/
1788 
1789 /**
1790  *	cpufreq_register_notifier - register a driver with cpufreq
1791  *	@nb: notifier function to register
1792  *      @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1793  *
1794  *	Add a driver to one of two lists: either a list of drivers that
1795  *      are notified about clock rate changes (once before and once after
1796  *      the transition), or a list of drivers that are notified about
1797  *      changes in cpufreq policy.
1798  *
1799  *	This function may sleep, and has the same return conditions as
1800  *	blocking_notifier_chain_register.
1801  */
1802 int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list)
1803 {
1804 	int ret;
1805 
1806 	if (cpufreq_disabled())
1807 		return -EINVAL;
1808 
1809 	WARN_ON(!init_cpufreq_transition_notifier_list_called);
1810 
1811 	switch (list) {
1812 	case CPUFREQ_TRANSITION_NOTIFIER:
1813 		ret = srcu_notifier_chain_register(
1814 				&cpufreq_transition_notifier_list, nb);
1815 		break;
1816 	case CPUFREQ_POLICY_NOTIFIER:
1817 		ret = blocking_notifier_chain_register(
1818 				&cpufreq_policy_notifier_list, nb);
1819 		break;
1820 	default:
1821 		ret = -EINVAL;
1822 	}
1823 
1824 	return ret;
1825 }
1826 EXPORT_SYMBOL(cpufreq_register_notifier);
1827 
1828 /**
1829  *	cpufreq_unregister_notifier - unregister a driver with cpufreq
1830  *	@nb: notifier block to be unregistered
1831  *	@list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1832  *
1833  *	Remove a driver from the CPU frequency notifier list.
1834  *
1835  *	This function may sleep, and has the same return conditions as
1836  *	blocking_notifier_chain_unregister.
1837  */
1838 int cpufreq_unregister_notifier(struct notifier_block *nb, unsigned int list)
1839 {
1840 	int ret;
1841 
1842 	if (cpufreq_disabled())
1843 		return -EINVAL;
1844 
1845 	switch (list) {
1846 	case CPUFREQ_TRANSITION_NOTIFIER:
1847 		ret = srcu_notifier_chain_unregister(
1848 				&cpufreq_transition_notifier_list, nb);
1849 		break;
1850 	case CPUFREQ_POLICY_NOTIFIER:
1851 		ret = blocking_notifier_chain_unregister(
1852 				&cpufreq_policy_notifier_list, nb);
1853 		break;
1854 	default:
1855 		ret = -EINVAL;
1856 	}
1857 
1858 	return ret;
1859 }
1860 EXPORT_SYMBOL(cpufreq_unregister_notifier);
1861 
1862 
1863 /*********************************************************************
1864  *                              GOVERNORS                            *
1865  *********************************************************************/
1866 
1867 /* Must set freqs->new to intermediate frequency */
1868 static int __target_intermediate(struct cpufreq_policy *policy,
1869 				 struct cpufreq_freqs *freqs, int index)
1870 {
1871 	int ret;
1872 
1873 	freqs->new = cpufreq_driver->get_intermediate(policy, index);
1874 
1875 	/* We don't need to switch to intermediate freq */
1876 	if (!freqs->new)
1877 		return 0;
1878 
1879 	pr_debug("%s: cpu: %d, switching to intermediate freq: oldfreq: %u, intermediate freq: %u\n",
1880 		 __func__, policy->cpu, freqs->old, freqs->new);
1881 
1882 	cpufreq_freq_transition_begin(policy, freqs);
1883 	ret = cpufreq_driver->target_intermediate(policy, index);
1884 	cpufreq_freq_transition_end(policy, freqs, ret);
1885 
1886 	if (ret)
1887 		pr_err("%s: Failed to change to intermediate frequency: %d\n",
1888 		       __func__, ret);
1889 
1890 	return ret;
1891 }
1892 
1893 static int __target_index(struct cpufreq_policy *policy,
1894 			  struct cpufreq_frequency_table *freq_table, int index)
1895 {
1896 	struct cpufreq_freqs freqs = {.old = policy->cur, .flags = 0};
1897 	unsigned int intermediate_freq = 0;
1898 	int retval = -EINVAL;
1899 	bool notify;
1900 
1901 	notify = !(cpufreq_driver->flags & CPUFREQ_ASYNC_NOTIFICATION);
1902 	if (notify) {
1903 		/* Handle switching to intermediate frequency */
1904 		if (cpufreq_driver->get_intermediate) {
1905 			retval = __target_intermediate(policy, &freqs, index);
1906 			if (retval)
1907 				return retval;
1908 
1909 			intermediate_freq = freqs.new;
1910 			/* Set old freq to intermediate */
1911 			if (intermediate_freq)
1912 				freqs.old = freqs.new;
1913 		}
1914 
1915 		freqs.new = freq_table[index].frequency;
1916 		pr_debug("%s: cpu: %d, oldfreq: %u, new freq: %u\n",
1917 			 __func__, policy->cpu, freqs.old, freqs.new);
1918 
1919 		cpufreq_freq_transition_begin(policy, &freqs);
1920 	}
1921 
1922 	retval = cpufreq_driver->target_index(policy, index);
1923 	if (retval)
1924 		pr_err("%s: Failed to change cpu frequency: %d\n", __func__,
1925 		       retval);
1926 
1927 	if (notify) {
1928 		cpufreq_freq_transition_end(policy, &freqs, retval);
1929 
1930 		/*
1931 		 * Failed after setting to intermediate freq? Driver should have
1932 		 * reverted back to initial frequency and so should we. Check
1933 		 * here for intermediate_freq instead of get_intermediate, in
1934 		 * case we have't switched to intermediate freq at all.
1935 		 */
1936 		if (unlikely(retval && intermediate_freq)) {
1937 			freqs.old = intermediate_freq;
1938 			freqs.new = policy->restore_freq;
1939 			cpufreq_freq_transition_begin(policy, &freqs);
1940 			cpufreq_freq_transition_end(policy, &freqs, 0);
1941 		}
1942 	}
1943 
1944 	return retval;
1945 }
1946 
1947 int __cpufreq_driver_target(struct cpufreq_policy *policy,
1948 			    unsigned int target_freq,
1949 			    unsigned int relation)
1950 {
1951 	unsigned int old_target_freq = target_freq;
1952 	int retval = -EINVAL;
1953 
1954 	if (cpufreq_disabled())
1955 		return -ENODEV;
1956 
1957 	/* Make sure that target_freq is within supported range */
1958 	if (target_freq > policy->max)
1959 		target_freq = policy->max;
1960 	if (target_freq < policy->min)
1961 		target_freq = policy->min;
1962 
1963 	pr_debug("target for CPU %u: %u kHz, relation %u, requested %u kHz\n",
1964 		 policy->cpu, target_freq, relation, old_target_freq);
1965 
1966 	/*
1967 	 * This might look like a redundant call as we are checking it again
1968 	 * after finding index. But it is left intentionally for cases where
1969 	 * exactly same freq is called again and so we can save on few function
1970 	 * calls.
1971 	 */
1972 	if (target_freq == policy->cur)
1973 		return 0;
1974 
1975 	/* Save last value to restore later on errors */
1976 	policy->restore_freq = policy->cur;
1977 
1978 	if (cpufreq_driver->target)
1979 		retval = cpufreq_driver->target(policy, target_freq, relation);
1980 	else if (cpufreq_driver->target_index) {
1981 		struct cpufreq_frequency_table *freq_table;
1982 		int index;
1983 
1984 		freq_table = cpufreq_frequency_get_table(policy->cpu);
1985 		if (unlikely(!freq_table)) {
1986 			pr_err("%s: Unable to find freq_table\n", __func__);
1987 			goto out;
1988 		}
1989 
1990 		retval = cpufreq_frequency_table_target(policy, freq_table,
1991 				target_freq, relation, &index);
1992 		if (unlikely(retval)) {
1993 			pr_err("%s: Unable to find matching freq\n", __func__);
1994 			goto out;
1995 		}
1996 
1997 		if (freq_table[index].frequency == policy->cur) {
1998 			retval = 0;
1999 			goto out;
2000 		}
2001 
2002 		retval = __target_index(policy, freq_table, index);
2003 	}
2004 
2005 out:
2006 	return retval;
2007 }
2008 EXPORT_SYMBOL_GPL(__cpufreq_driver_target);
2009 
2010 int cpufreq_driver_target(struct cpufreq_policy *policy,
2011 			  unsigned int target_freq,
2012 			  unsigned int relation)
2013 {
2014 	int ret = -EINVAL;
2015 
2016 	down_write(&policy->rwsem);
2017 
2018 	ret = __cpufreq_driver_target(policy, target_freq, relation);
2019 
2020 	up_write(&policy->rwsem);
2021 
2022 	return ret;
2023 }
2024 EXPORT_SYMBOL_GPL(cpufreq_driver_target);
2025 
2026 static int __cpufreq_governor(struct cpufreq_policy *policy,
2027 					unsigned int event)
2028 {
2029 	int ret;
2030 
2031 	/* Only must be defined when default governor is known to have latency
2032 	   restrictions, like e.g. conservative or ondemand.
2033 	   That this is the case is already ensured in Kconfig
2034 	*/
2035 #ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE
2036 	struct cpufreq_governor *gov = &cpufreq_gov_performance;
2037 #else
2038 	struct cpufreq_governor *gov = NULL;
2039 #endif
2040 
2041 	/* Don't start any governor operations if we are entering suspend */
2042 	if (cpufreq_suspended)
2043 		return 0;
2044 	/*
2045 	 * Governor might not be initiated here if ACPI _PPC changed
2046 	 * notification happened, so check it.
2047 	 */
2048 	if (!policy->governor)
2049 		return -EINVAL;
2050 
2051 	if (policy->governor->max_transition_latency &&
2052 	    policy->cpuinfo.transition_latency >
2053 	    policy->governor->max_transition_latency) {
2054 		if (!gov)
2055 			return -EINVAL;
2056 		else {
2057 			pr_warn("%s governor failed, too long transition latency of HW, fallback to %s governor\n",
2058 				policy->governor->name, gov->name);
2059 			policy->governor = gov;
2060 		}
2061 	}
2062 
2063 	if (event == CPUFREQ_GOV_POLICY_INIT)
2064 		if (!try_module_get(policy->governor->owner))
2065 			return -EINVAL;
2066 
2067 	pr_debug("__cpufreq_governor for CPU %u, event %u\n",
2068 		 policy->cpu, event);
2069 
2070 	mutex_lock(&cpufreq_governor_lock);
2071 	if ((policy->governor_enabled && event == CPUFREQ_GOV_START)
2072 	    || (!policy->governor_enabled
2073 	    && (event == CPUFREQ_GOV_LIMITS || event == CPUFREQ_GOV_STOP))) {
2074 		mutex_unlock(&cpufreq_governor_lock);
2075 		return -EBUSY;
2076 	}
2077 
2078 	if (event == CPUFREQ_GOV_STOP)
2079 		policy->governor_enabled = false;
2080 	else if (event == CPUFREQ_GOV_START)
2081 		policy->governor_enabled = true;
2082 
2083 	mutex_unlock(&cpufreq_governor_lock);
2084 
2085 	ret = policy->governor->governor(policy, event);
2086 
2087 	if (!ret) {
2088 		if (event == CPUFREQ_GOV_POLICY_INIT)
2089 			policy->governor->initialized++;
2090 		else if (event == CPUFREQ_GOV_POLICY_EXIT)
2091 			policy->governor->initialized--;
2092 	} else {
2093 		/* Restore original values */
2094 		mutex_lock(&cpufreq_governor_lock);
2095 		if (event == CPUFREQ_GOV_STOP)
2096 			policy->governor_enabled = true;
2097 		else if (event == CPUFREQ_GOV_START)
2098 			policy->governor_enabled = false;
2099 		mutex_unlock(&cpufreq_governor_lock);
2100 	}
2101 
2102 	if (((event == CPUFREQ_GOV_POLICY_INIT) && ret) ||
2103 			((event == CPUFREQ_GOV_POLICY_EXIT) && !ret))
2104 		module_put(policy->governor->owner);
2105 
2106 	return ret;
2107 }
2108 
2109 int cpufreq_register_governor(struct cpufreq_governor *governor)
2110 {
2111 	int err;
2112 
2113 	if (!governor)
2114 		return -EINVAL;
2115 
2116 	if (cpufreq_disabled())
2117 		return -ENODEV;
2118 
2119 	mutex_lock(&cpufreq_governor_mutex);
2120 
2121 	governor->initialized = 0;
2122 	err = -EBUSY;
2123 	if (!find_governor(governor->name)) {
2124 		err = 0;
2125 		list_add(&governor->governor_list, &cpufreq_governor_list);
2126 	}
2127 
2128 	mutex_unlock(&cpufreq_governor_mutex);
2129 	return err;
2130 }
2131 EXPORT_SYMBOL_GPL(cpufreq_register_governor);
2132 
2133 void cpufreq_unregister_governor(struct cpufreq_governor *governor)
2134 {
2135 	struct cpufreq_policy *policy;
2136 	unsigned long flags;
2137 
2138 	if (!governor)
2139 		return;
2140 
2141 	if (cpufreq_disabled())
2142 		return;
2143 
2144 	/* clear last_governor for all inactive policies */
2145 	read_lock_irqsave(&cpufreq_driver_lock, flags);
2146 	for_each_inactive_policy(policy) {
2147 		if (!strcmp(policy->last_governor, governor->name)) {
2148 			policy->governor = NULL;
2149 			strcpy(policy->last_governor, "\0");
2150 		}
2151 	}
2152 	read_unlock_irqrestore(&cpufreq_driver_lock, flags);
2153 
2154 	mutex_lock(&cpufreq_governor_mutex);
2155 	list_del(&governor->governor_list);
2156 	mutex_unlock(&cpufreq_governor_mutex);
2157 	return;
2158 }
2159 EXPORT_SYMBOL_GPL(cpufreq_unregister_governor);
2160 
2161 
2162 /*********************************************************************
2163  *                          POLICY INTERFACE                         *
2164  *********************************************************************/
2165 
2166 /**
2167  * cpufreq_get_policy - get the current cpufreq_policy
2168  * @policy: struct cpufreq_policy into which the current cpufreq_policy
2169  *	is written
2170  *
2171  * Reads the current cpufreq policy.
2172  */
2173 int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
2174 {
2175 	struct cpufreq_policy *cpu_policy;
2176 	if (!policy)
2177 		return -EINVAL;
2178 
2179 	cpu_policy = cpufreq_cpu_get(cpu);
2180 	if (!cpu_policy)
2181 		return -EINVAL;
2182 
2183 	memcpy(policy, cpu_policy, sizeof(*policy));
2184 
2185 	cpufreq_cpu_put(cpu_policy);
2186 	return 0;
2187 }
2188 EXPORT_SYMBOL(cpufreq_get_policy);
2189 
2190 /*
2191  * policy : current policy.
2192  * new_policy: policy to be set.
2193  */
2194 static int cpufreq_set_policy(struct cpufreq_policy *policy,
2195 				struct cpufreq_policy *new_policy)
2196 {
2197 	struct cpufreq_governor *old_gov;
2198 	int ret;
2199 
2200 	pr_debug("setting new policy for CPU %u: %u - %u kHz\n",
2201 		 new_policy->cpu, new_policy->min, new_policy->max);
2202 
2203 	memcpy(&new_policy->cpuinfo, &policy->cpuinfo, sizeof(policy->cpuinfo));
2204 
2205 	if (new_policy->min > policy->max || new_policy->max < policy->min)
2206 		return -EINVAL;
2207 
2208 	/* verify the cpu speed can be set within this limit */
2209 	ret = cpufreq_driver->verify(new_policy);
2210 	if (ret)
2211 		return ret;
2212 
2213 	/* adjust if necessary - all reasons */
2214 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2215 			CPUFREQ_ADJUST, new_policy);
2216 
2217 	/* adjust if necessary - hardware incompatibility*/
2218 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2219 			CPUFREQ_INCOMPATIBLE, new_policy);
2220 
2221 	/*
2222 	 * verify the cpu speed can be set within this limit, which might be
2223 	 * different to the first one
2224 	 */
2225 	ret = cpufreq_driver->verify(new_policy);
2226 	if (ret)
2227 		return ret;
2228 
2229 	/* notification of the new policy */
2230 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2231 			CPUFREQ_NOTIFY, new_policy);
2232 
2233 	policy->min = new_policy->min;
2234 	policy->max = new_policy->max;
2235 
2236 	pr_debug("new min and max freqs are %u - %u kHz\n",
2237 		 policy->min, policy->max);
2238 
2239 	if (cpufreq_driver->setpolicy) {
2240 		policy->policy = new_policy->policy;
2241 		pr_debug("setting range\n");
2242 		return cpufreq_driver->setpolicy(new_policy);
2243 	}
2244 
2245 	if (new_policy->governor == policy->governor)
2246 		goto out;
2247 
2248 	pr_debug("governor switch\n");
2249 
2250 	/* save old, working values */
2251 	old_gov = policy->governor;
2252 	/* end old governor */
2253 	if (old_gov) {
2254 		__cpufreq_governor(policy, CPUFREQ_GOV_STOP);
2255 		up_write(&policy->rwsem);
2256 		__cpufreq_governor(policy, CPUFREQ_GOV_POLICY_EXIT);
2257 		down_write(&policy->rwsem);
2258 	}
2259 
2260 	/* start new governor */
2261 	policy->governor = new_policy->governor;
2262 	if (!__cpufreq_governor(policy, CPUFREQ_GOV_POLICY_INIT)) {
2263 		if (!__cpufreq_governor(policy, CPUFREQ_GOV_START))
2264 			goto out;
2265 
2266 		up_write(&policy->rwsem);
2267 		__cpufreq_governor(policy, CPUFREQ_GOV_POLICY_EXIT);
2268 		down_write(&policy->rwsem);
2269 	}
2270 
2271 	/* new governor failed, so re-start old one */
2272 	pr_debug("starting governor %s failed\n", policy->governor->name);
2273 	if (old_gov) {
2274 		policy->governor = old_gov;
2275 		__cpufreq_governor(policy, CPUFREQ_GOV_POLICY_INIT);
2276 		__cpufreq_governor(policy, CPUFREQ_GOV_START);
2277 	}
2278 
2279 	return -EINVAL;
2280 
2281  out:
2282 	pr_debug("governor: change or update limits\n");
2283 	return __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
2284 }
2285 
2286 /**
2287  *	cpufreq_update_policy - re-evaluate an existing cpufreq policy
2288  *	@cpu: CPU which shall be re-evaluated
2289  *
2290  *	Useful for policy notifiers which have different necessities
2291  *	at different times.
2292  */
2293 int cpufreq_update_policy(unsigned int cpu)
2294 {
2295 	struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
2296 	struct cpufreq_policy new_policy;
2297 	int ret;
2298 
2299 	if (!policy)
2300 		return -ENODEV;
2301 
2302 	down_write(&policy->rwsem);
2303 
2304 	pr_debug("updating policy for CPU %u\n", cpu);
2305 	memcpy(&new_policy, policy, sizeof(*policy));
2306 	new_policy.min = policy->user_policy.min;
2307 	new_policy.max = policy->user_policy.max;
2308 	new_policy.policy = policy->user_policy.policy;
2309 	new_policy.governor = policy->user_policy.governor;
2310 
2311 	/*
2312 	 * BIOS might change freq behind our back
2313 	 * -> ask driver for current freq and notify governors about a change
2314 	 */
2315 	if (cpufreq_driver->get && !cpufreq_driver->setpolicy) {
2316 		new_policy.cur = cpufreq_driver->get(cpu);
2317 		if (WARN_ON(!new_policy.cur)) {
2318 			ret = -EIO;
2319 			goto unlock;
2320 		}
2321 
2322 		if (!policy->cur) {
2323 			pr_debug("Driver did not initialize current freq\n");
2324 			policy->cur = new_policy.cur;
2325 		} else {
2326 			if (policy->cur != new_policy.cur && has_target())
2327 				cpufreq_out_of_sync(policy, new_policy.cur);
2328 		}
2329 	}
2330 
2331 	ret = cpufreq_set_policy(policy, &new_policy);
2332 
2333 unlock:
2334 	up_write(&policy->rwsem);
2335 
2336 	cpufreq_cpu_put(policy);
2337 	return ret;
2338 }
2339 EXPORT_SYMBOL(cpufreq_update_policy);
2340 
2341 static int cpufreq_cpu_callback(struct notifier_block *nfb,
2342 					unsigned long action, void *hcpu)
2343 {
2344 	unsigned int cpu = (unsigned long)hcpu;
2345 	struct device *dev;
2346 
2347 	dev = get_cpu_device(cpu);
2348 	if (dev) {
2349 		switch (action & ~CPU_TASKS_FROZEN) {
2350 		case CPU_ONLINE:
2351 			cpufreq_add_dev(dev, NULL);
2352 			break;
2353 
2354 		case CPU_DOWN_PREPARE:
2355 			__cpufreq_remove_dev_prepare(dev, NULL);
2356 			break;
2357 
2358 		case CPU_POST_DEAD:
2359 			__cpufreq_remove_dev_finish(dev, NULL);
2360 			break;
2361 
2362 		case CPU_DOWN_FAILED:
2363 			cpufreq_add_dev(dev, NULL);
2364 			break;
2365 		}
2366 	}
2367 	return NOTIFY_OK;
2368 }
2369 
2370 static struct notifier_block __refdata cpufreq_cpu_notifier = {
2371 	.notifier_call = cpufreq_cpu_callback,
2372 };
2373 
2374 /*********************************************************************
2375  *               BOOST						     *
2376  *********************************************************************/
2377 static int cpufreq_boost_set_sw(int state)
2378 {
2379 	struct cpufreq_frequency_table *freq_table;
2380 	struct cpufreq_policy *policy;
2381 	int ret = -EINVAL;
2382 
2383 	for_each_active_policy(policy) {
2384 		freq_table = cpufreq_frequency_get_table(policy->cpu);
2385 		if (freq_table) {
2386 			ret = cpufreq_frequency_table_cpuinfo(policy,
2387 							freq_table);
2388 			if (ret) {
2389 				pr_err("%s: Policy frequency update failed\n",
2390 				       __func__);
2391 				break;
2392 			}
2393 			policy->user_policy.max = policy->max;
2394 			__cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
2395 		}
2396 	}
2397 
2398 	return ret;
2399 }
2400 
2401 int cpufreq_boost_trigger_state(int state)
2402 {
2403 	unsigned long flags;
2404 	int ret = 0;
2405 
2406 	if (cpufreq_driver->boost_enabled == state)
2407 		return 0;
2408 
2409 	write_lock_irqsave(&cpufreq_driver_lock, flags);
2410 	cpufreq_driver->boost_enabled = state;
2411 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2412 
2413 	ret = cpufreq_driver->set_boost(state);
2414 	if (ret) {
2415 		write_lock_irqsave(&cpufreq_driver_lock, flags);
2416 		cpufreq_driver->boost_enabled = !state;
2417 		write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2418 
2419 		pr_err("%s: Cannot %s BOOST\n",
2420 		       __func__, state ? "enable" : "disable");
2421 	}
2422 
2423 	return ret;
2424 }
2425 
2426 int cpufreq_boost_supported(void)
2427 {
2428 	if (likely(cpufreq_driver))
2429 		return cpufreq_driver->boost_supported;
2430 
2431 	return 0;
2432 }
2433 EXPORT_SYMBOL_GPL(cpufreq_boost_supported);
2434 
2435 int cpufreq_boost_enabled(void)
2436 {
2437 	return cpufreq_driver->boost_enabled;
2438 }
2439 EXPORT_SYMBOL_GPL(cpufreq_boost_enabled);
2440 
2441 /*********************************************************************
2442  *               REGISTER / UNREGISTER CPUFREQ DRIVER                *
2443  *********************************************************************/
2444 
2445 /**
2446  * cpufreq_register_driver - register a CPU Frequency driver
2447  * @driver_data: A struct cpufreq_driver containing the values#
2448  * submitted by the CPU Frequency driver.
2449  *
2450  * Registers a CPU Frequency driver to this core code. This code
2451  * returns zero on success, -EBUSY when another driver got here first
2452  * (and isn't unregistered in the meantime).
2453  *
2454  */
2455 int cpufreq_register_driver(struct cpufreq_driver *driver_data)
2456 {
2457 	unsigned long flags;
2458 	int ret;
2459 
2460 	if (cpufreq_disabled())
2461 		return -ENODEV;
2462 
2463 	if (!driver_data || !driver_data->verify || !driver_data->init ||
2464 	    !(driver_data->setpolicy || driver_data->target_index ||
2465 		    driver_data->target) ||
2466 	     (driver_data->setpolicy && (driver_data->target_index ||
2467 		    driver_data->target)) ||
2468 	     (!!driver_data->get_intermediate != !!driver_data->target_intermediate))
2469 		return -EINVAL;
2470 
2471 	pr_debug("trying to register driver %s\n", driver_data->name);
2472 
2473 	write_lock_irqsave(&cpufreq_driver_lock, flags);
2474 	if (cpufreq_driver) {
2475 		write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2476 		return -EEXIST;
2477 	}
2478 	cpufreq_driver = driver_data;
2479 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2480 
2481 	if (driver_data->setpolicy)
2482 		driver_data->flags |= CPUFREQ_CONST_LOOPS;
2483 
2484 	if (cpufreq_boost_supported()) {
2485 		/*
2486 		 * Check if driver provides function to enable boost -
2487 		 * if not, use cpufreq_boost_set_sw as default
2488 		 */
2489 		if (!cpufreq_driver->set_boost)
2490 			cpufreq_driver->set_boost = cpufreq_boost_set_sw;
2491 
2492 		ret = cpufreq_sysfs_create_file(&boost.attr);
2493 		if (ret) {
2494 			pr_err("%s: cannot register global BOOST sysfs file\n",
2495 			       __func__);
2496 			goto err_null_driver;
2497 		}
2498 	}
2499 
2500 	ret = subsys_interface_register(&cpufreq_interface);
2501 	if (ret)
2502 		goto err_boost_unreg;
2503 
2504 	if (!(cpufreq_driver->flags & CPUFREQ_STICKY) &&
2505 	    list_empty(&cpufreq_policy_list)) {
2506 		/* if all ->init() calls failed, unregister */
2507 		pr_debug("%s: No CPU initialized for driver %s\n", __func__,
2508 			 driver_data->name);
2509 		goto err_if_unreg;
2510 	}
2511 
2512 	register_hotcpu_notifier(&cpufreq_cpu_notifier);
2513 	pr_debug("driver %s up and running\n", driver_data->name);
2514 
2515 	return 0;
2516 err_if_unreg:
2517 	subsys_interface_unregister(&cpufreq_interface);
2518 err_boost_unreg:
2519 	if (cpufreq_boost_supported())
2520 		cpufreq_sysfs_remove_file(&boost.attr);
2521 err_null_driver:
2522 	write_lock_irqsave(&cpufreq_driver_lock, flags);
2523 	cpufreq_driver = NULL;
2524 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2525 	return ret;
2526 }
2527 EXPORT_SYMBOL_GPL(cpufreq_register_driver);
2528 
2529 /**
2530  * cpufreq_unregister_driver - unregister the current CPUFreq driver
2531  *
2532  * Unregister the current CPUFreq driver. Only call this if you have
2533  * the right to do so, i.e. if you have succeeded in initialising before!
2534  * Returns zero if successful, and -EINVAL if the cpufreq_driver is
2535  * currently not initialised.
2536  */
2537 int cpufreq_unregister_driver(struct cpufreq_driver *driver)
2538 {
2539 	unsigned long flags;
2540 
2541 	if (!cpufreq_driver || (driver != cpufreq_driver))
2542 		return -EINVAL;
2543 
2544 	pr_debug("unregistering driver %s\n", driver->name);
2545 
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 	down_write(&cpufreq_rwsem);
2553 	write_lock_irqsave(&cpufreq_driver_lock, flags);
2554 
2555 	cpufreq_driver = NULL;
2556 
2557 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2558 	up_write(&cpufreq_rwsem);
2559 
2560 	return 0;
2561 }
2562 EXPORT_SYMBOL_GPL(cpufreq_unregister_driver);
2563 
2564 /*
2565  * Stop cpufreq at shutdown to make sure it isn't holding any locks
2566  * or mutexes when secondary CPUs are halted.
2567  */
2568 static struct syscore_ops cpufreq_syscore_ops = {
2569 	.shutdown = cpufreq_suspend,
2570 };
2571 
2572 static int __init cpufreq_core_init(void)
2573 {
2574 	if (cpufreq_disabled())
2575 		return -ENODEV;
2576 
2577 	cpufreq_global_kobject = kobject_create();
2578 	BUG_ON(!cpufreq_global_kobject);
2579 
2580 	register_syscore_ops(&cpufreq_syscore_ops);
2581 
2582 	return 0;
2583 }
2584 core_initcall(cpufreq_core_init);
2585