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