xref: /openbmc/linux/drivers/cpufreq/cpufreq.c (revision 8a10bc9d)
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 		if (!frozen)
1327 			sysfs_remove_link(&dev->kobj, "cpufreq");
1328 	} else if (cpus > 1) {
1329 		new_cpu = cpufreq_nominate_new_policy_cpu(policy, cpu);
1330 		if (new_cpu >= 0) {
1331 			update_policy_cpu(policy, new_cpu);
1332 
1333 			if (!frozen) {
1334 				pr_debug("%s: policy Kobject moved to cpu: %d from: %d\n",
1335 						__func__, new_cpu, cpu);
1336 			}
1337 		}
1338 	}
1339 
1340 	return 0;
1341 }
1342 
1343 static int __cpufreq_remove_dev_finish(struct device *dev,
1344 				       struct subsys_interface *sif,
1345 				       bool frozen)
1346 {
1347 	unsigned int cpu = dev->id, cpus;
1348 	int ret;
1349 	unsigned long flags;
1350 	struct cpufreq_policy *policy;
1351 
1352 	read_lock_irqsave(&cpufreq_driver_lock, flags);
1353 	policy = per_cpu(cpufreq_cpu_data, cpu);
1354 	read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1355 
1356 	if (!policy) {
1357 		pr_debug("%s: No cpu_data found\n", __func__);
1358 		return -EINVAL;
1359 	}
1360 
1361 	down_write(&policy->rwsem);
1362 	cpus = cpumask_weight(policy->cpus);
1363 
1364 	if (cpus > 1)
1365 		cpumask_clear_cpu(cpu, policy->cpus);
1366 	up_write(&policy->rwsem);
1367 
1368 	/* If cpu is last user of policy, free policy */
1369 	if (cpus == 1) {
1370 		if (has_target()) {
1371 			ret = __cpufreq_governor(policy,
1372 					CPUFREQ_GOV_POLICY_EXIT);
1373 			if (ret) {
1374 				pr_err("%s: Failed to exit governor\n",
1375 						__func__);
1376 				return ret;
1377 			}
1378 		}
1379 
1380 		if (!frozen)
1381 			cpufreq_policy_put_kobj(policy);
1382 
1383 		/*
1384 		 * Perform the ->exit() even during light-weight tear-down,
1385 		 * since this is a core component, and is essential for the
1386 		 * subsequent light-weight ->init() to succeed.
1387 		 */
1388 		if (cpufreq_driver->exit)
1389 			cpufreq_driver->exit(policy);
1390 
1391 		/* Remove policy from list of active policies */
1392 		write_lock_irqsave(&cpufreq_driver_lock, flags);
1393 		list_del(&policy->policy_list);
1394 		write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1395 
1396 		if (!frozen)
1397 			cpufreq_policy_free(policy);
1398 	} else {
1399 		if (has_target()) {
1400 			if ((ret = __cpufreq_governor(policy, CPUFREQ_GOV_START)) ||
1401 					(ret = __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS))) {
1402 				pr_err("%s: Failed to start governor\n",
1403 						__func__);
1404 				return ret;
1405 			}
1406 		}
1407 	}
1408 
1409 	per_cpu(cpufreq_cpu_data, cpu) = NULL;
1410 	return 0;
1411 }
1412 
1413 /**
1414  * cpufreq_remove_dev - remove a CPU device
1415  *
1416  * Removes the cpufreq interface for a CPU device.
1417  */
1418 static int cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
1419 {
1420 	unsigned int cpu = dev->id;
1421 	int ret;
1422 
1423 	if (cpu_is_offline(cpu))
1424 		return 0;
1425 
1426 	ret = __cpufreq_remove_dev_prepare(dev, sif, false);
1427 
1428 	if (!ret)
1429 		ret = __cpufreq_remove_dev_finish(dev, sif, false);
1430 
1431 	return ret;
1432 }
1433 
1434 static void handle_update(struct work_struct *work)
1435 {
1436 	struct cpufreq_policy *policy =
1437 		container_of(work, struct cpufreq_policy, update);
1438 	unsigned int cpu = policy->cpu;
1439 	pr_debug("handle_update for cpu %u called\n", cpu);
1440 	cpufreq_update_policy(cpu);
1441 }
1442 
1443 /**
1444  *	cpufreq_out_of_sync - If actual and saved CPU frequency differs, we're
1445  *	in deep trouble.
1446  *	@cpu: cpu number
1447  *	@old_freq: CPU frequency the kernel thinks the CPU runs at
1448  *	@new_freq: CPU frequency the CPU actually runs at
1449  *
1450  *	We adjust to current frequency first, and need to clean up later.
1451  *	So either call to cpufreq_update_policy() or schedule handle_update()).
1452  */
1453 static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq,
1454 				unsigned int new_freq)
1455 {
1456 	struct cpufreq_policy *policy;
1457 	struct cpufreq_freqs freqs;
1458 	unsigned long flags;
1459 
1460 	pr_debug("Warning: CPU frequency out of sync: cpufreq and timing "
1461 	       "core thinks of %u, is %u kHz.\n", old_freq, new_freq);
1462 
1463 	freqs.old = old_freq;
1464 	freqs.new = new_freq;
1465 
1466 	read_lock_irqsave(&cpufreq_driver_lock, flags);
1467 	policy = per_cpu(cpufreq_cpu_data, cpu);
1468 	read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1469 
1470 	cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
1471 	cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
1472 }
1473 
1474 /**
1475  * cpufreq_quick_get - get the CPU frequency (in kHz) from policy->cur
1476  * @cpu: CPU number
1477  *
1478  * This is the last known freq, without actually getting it from the driver.
1479  * Return value will be same as what is shown in scaling_cur_freq in sysfs.
1480  */
1481 unsigned int cpufreq_quick_get(unsigned int cpu)
1482 {
1483 	struct cpufreq_policy *policy;
1484 	unsigned int ret_freq = 0;
1485 
1486 	if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get)
1487 		return cpufreq_driver->get(cpu);
1488 
1489 	policy = cpufreq_cpu_get(cpu);
1490 	if (policy) {
1491 		ret_freq = policy->cur;
1492 		cpufreq_cpu_put(policy);
1493 	}
1494 
1495 	return ret_freq;
1496 }
1497 EXPORT_SYMBOL(cpufreq_quick_get);
1498 
1499 /**
1500  * cpufreq_quick_get_max - get the max reported CPU frequency for this CPU
1501  * @cpu: CPU number
1502  *
1503  * Just return the max possible frequency for a given CPU.
1504  */
1505 unsigned int cpufreq_quick_get_max(unsigned int cpu)
1506 {
1507 	struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1508 	unsigned int ret_freq = 0;
1509 
1510 	if (policy) {
1511 		ret_freq = policy->max;
1512 		cpufreq_cpu_put(policy);
1513 	}
1514 
1515 	return ret_freq;
1516 }
1517 EXPORT_SYMBOL(cpufreq_quick_get_max);
1518 
1519 static unsigned int __cpufreq_get(unsigned int cpu)
1520 {
1521 	struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
1522 	unsigned int ret_freq = 0;
1523 
1524 	if (!cpufreq_driver->get)
1525 		return ret_freq;
1526 
1527 	ret_freq = cpufreq_driver->get(cpu);
1528 
1529 	if (ret_freq && policy->cur &&
1530 		!(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) {
1531 		/* verify no discrepancy between actual and
1532 					saved value exists */
1533 		if (unlikely(ret_freq != policy->cur)) {
1534 			cpufreq_out_of_sync(cpu, policy->cur, ret_freq);
1535 			schedule_work(&policy->update);
1536 		}
1537 	}
1538 
1539 	return ret_freq;
1540 }
1541 
1542 /**
1543  * cpufreq_get - get the current CPU frequency (in kHz)
1544  * @cpu: CPU number
1545  *
1546  * Get the CPU current (static) CPU frequency
1547  */
1548 unsigned int cpufreq_get(unsigned int cpu)
1549 {
1550 	struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
1551 	unsigned int ret_freq = 0;
1552 
1553 	if (cpufreq_disabled() || !cpufreq_driver)
1554 		return -ENOENT;
1555 
1556 	BUG_ON(!policy);
1557 
1558 	if (!down_read_trylock(&cpufreq_rwsem))
1559 		return 0;
1560 
1561 	down_read(&policy->rwsem);
1562 
1563 	ret_freq = __cpufreq_get(cpu);
1564 
1565 	up_read(&policy->rwsem);
1566 	up_read(&cpufreq_rwsem);
1567 
1568 	return ret_freq;
1569 }
1570 EXPORT_SYMBOL(cpufreq_get);
1571 
1572 static struct subsys_interface cpufreq_interface = {
1573 	.name		= "cpufreq",
1574 	.subsys		= &cpu_subsys,
1575 	.add_dev	= cpufreq_add_dev,
1576 	.remove_dev	= cpufreq_remove_dev,
1577 };
1578 
1579 /**
1580  * cpufreq_bp_suspend - Prepare the boot CPU for system suspend.
1581  *
1582  * This function is only executed for the boot processor.  The other CPUs
1583  * have been put offline by means of CPU hotplug.
1584  */
1585 static int cpufreq_bp_suspend(void)
1586 {
1587 	int ret = 0;
1588 
1589 	int cpu = smp_processor_id();
1590 	struct cpufreq_policy *policy;
1591 
1592 	pr_debug("suspending cpu %u\n", cpu);
1593 
1594 	/* If there's no policy for the boot CPU, we have nothing to do. */
1595 	policy = cpufreq_cpu_get(cpu);
1596 	if (!policy)
1597 		return 0;
1598 
1599 	if (cpufreq_driver->suspend) {
1600 		ret = cpufreq_driver->suspend(policy);
1601 		if (ret)
1602 			printk(KERN_ERR "cpufreq: suspend failed in ->suspend "
1603 					"step on CPU %u\n", policy->cpu);
1604 	}
1605 
1606 	cpufreq_cpu_put(policy);
1607 	return ret;
1608 }
1609 
1610 /**
1611  * cpufreq_bp_resume - Restore proper frequency handling of the boot CPU.
1612  *
1613  *	1.) resume CPUfreq hardware support (cpufreq_driver->resume())
1614  *	2.) schedule call cpufreq_update_policy() ASAP as interrupts are
1615  *	    restored. It will verify that the current freq is in sync with
1616  *	    what we believe it to be. This is a bit later than when it
1617  *	    should be, but nonethteless it's better than calling
1618  *	    cpufreq_driver->get() here which might re-enable interrupts...
1619  *
1620  * This function is only executed for the boot CPU.  The other CPUs have not
1621  * been turned on yet.
1622  */
1623 static void cpufreq_bp_resume(void)
1624 {
1625 	int ret = 0;
1626 
1627 	int cpu = smp_processor_id();
1628 	struct cpufreq_policy *policy;
1629 
1630 	pr_debug("resuming cpu %u\n", cpu);
1631 
1632 	/* If there's no policy for the boot CPU, we have nothing to do. */
1633 	policy = cpufreq_cpu_get(cpu);
1634 	if (!policy)
1635 		return;
1636 
1637 	if (cpufreq_driver->resume) {
1638 		ret = cpufreq_driver->resume(policy);
1639 		if (ret) {
1640 			printk(KERN_ERR "cpufreq: resume failed in ->resume "
1641 					"step on CPU %u\n", policy->cpu);
1642 			goto fail;
1643 		}
1644 	}
1645 
1646 	schedule_work(&policy->update);
1647 
1648 fail:
1649 	cpufreq_cpu_put(policy);
1650 }
1651 
1652 static struct syscore_ops cpufreq_syscore_ops = {
1653 	.suspend	= cpufreq_bp_suspend,
1654 	.resume		= cpufreq_bp_resume,
1655 };
1656 
1657 /**
1658  *	cpufreq_get_current_driver - return current driver's name
1659  *
1660  *	Return the name string of the currently loaded cpufreq driver
1661  *	or NULL, if none.
1662  */
1663 const char *cpufreq_get_current_driver(void)
1664 {
1665 	if (cpufreq_driver)
1666 		return cpufreq_driver->name;
1667 
1668 	return NULL;
1669 }
1670 EXPORT_SYMBOL_GPL(cpufreq_get_current_driver);
1671 
1672 /*********************************************************************
1673  *                     NOTIFIER LISTS INTERFACE                      *
1674  *********************************************************************/
1675 
1676 /**
1677  *	cpufreq_register_notifier - register a driver with cpufreq
1678  *	@nb: notifier function to register
1679  *      @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1680  *
1681  *	Add a driver to one of two lists: either a list of drivers that
1682  *      are notified about clock rate changes (once before and once after
1683  *      the transition), or a list of drivers that are notified about
1684  *      changes in cpufreq policy.
1685  *
1686  *	This function may sleep, and has the same return conditions as
1687  *	blocking_notifier_chain_register.
1688  */
1689 int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list)
1690 {
1691 	int ret;
1692 
1693 	if (cpufreq_disabled())
1694 		return -EINVAL;
1695 
1696 	WARN_ON(!init_cpufreq_transition_notifier_list_called);
1697 
1698 	switch (list) {
1699 	case CPUFREQ_TRANSITION_NOTIFIER:
1700 		ret = srcu_notifier_chain_register(
1701 				&cpufreq_transition_notifier_list, nb);
1702 		break;
1703 	case CPUFREQ_POLICY_NOTIFIER:
1704 		ret = blocking_notifier_chain_register(
1705 				&cpufreq_policy_notifier_list, nb);
1706 		break;
1707 	default:
1708 		ret = -EINVAL;
1709 	}
1710 
1711 	return ret;
1712 }
1713 EXPORT_SYMBOL(cpufreq_register_notifier);
1714 
1715 /**
1716  *	cpufreq_unregister_notifier - unregister a driver with cpufreq
1717  *	@nb: notifier block to be unregistered
1718  *	@list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1719  *
1720  *	Remove a driver from the CPU frequency notifier list.
1721  *
1722  *	This function may sleep, and has the same return conditions as
1723  *	blocking_notifier_chain_unregister.
1724  */
1725 int cpufreq_unregister_notifier(struct notifier_block *nb, unsigned int list)
1726 {
1727 	int ret;
1728 
1729 	if (cpufreq_disabled())
1730 		return -EINVAL;
1731 
1732 	switch (list) {
1733 	case CPUFREQ_TRANSITION_NOTIFIER:
1734 		ret = srcu_notifier_chain_unregister(
1735 				&cpufreq_transition_notifier_list, nb);
1736 		break;
1737 	case CPUFREQ_POLICY_NOTIFIER:
1738 		ret = blocking_notifier_chain_unregister(
1739 				&cpufreq_policy_notifier_list, nb);
1740 		break;
1741 	default:
1742 		ret = -EINVAL;
1743 	}
1744 
1745 	return ret;
1746 }
1747 EXPORT_SYMBOL(cpufreq_unregister_notifier);
1748 
1749 
1750 /*********************************************************************
1751  *                              GOVERNORS                            *
1752  *********************************************************************/
1753 
1754 int __cpufreq_driver_target(struct cpufreq_policy *policy,
1755 			    unsigned int target_freq,
1756 			    unsigned int relation)
1757 {
1758 	int retval = -EINVAL;
1759 	unsigned int old_target_freq = target_freq;
1760 
1761 	if (cpufreq_disabled())
1762 		return -ENODEV;
1763 
1764 	/* Make sure that target_freq is within supported range */
1765 	if (target_freq > policy->max)
1766 		target_freq = policy->max;
1767 	if (target_freq < policy->min)
1768 		target_freq = policy->min;
1769 
1770 	pr_debug("target for CPU %u: %u kHz, relation %u, requested %u kHz\n",
1771 			policy->cpu, target_freq, relation, old_target_freq);
1772 
1773 	/*
1774 	 * This might look like a redundant call as we are checking it again
1775 	 * after finding index. But it is left intentionally for cases where
1776 	 * exactly same freq is called again and so we can save on few function
1777 	 * calls.
1778 	 */
1779 	if (target_freq == policy->cur)
1780 		return 0;
1781 
1782 	if (cpufreq_driver->target)
1783 		retval = cpufreq_driver->target(policy, target_freq, relation);
1784 	else if (cpufreq_driver->target_index) {
1785 		struct cpufreq_frequency_table *freq_table;
1786 		struct cpufreq_freqs freqs;
1787 		bool notify;
1788 		int index;
1789 
1790 		freq_table = cpufreq_frequency_get_table(policy->cpu);
1791 		if (unlikely(!freq_table)) {
1792 			pr_err("%s: Unable to find freq_table\n", __func__);
1793 			goto out;
1794 		}
1795 
1796 		retval = cpufreq_frequency_table_target(policy, freq_table,
1797 				target_freq, relation, &index);
1798 		if (unlikely(retval)) {
1799 			pr_err("%s: Unable to find matching freq\n", __func__);
1800 			goto out;
1801 		}
1802 
1803 		if (freq_table[index].frequency == policy->cur) {
1804 			retval = 0;
1805 			goto out;
1806 		}
1807 
1808 		notify = !(cpufreq_driver->flags & CPUFREQ_ASYNC_NOTIFICATION);
1809 
1810 		if (notify) {
1811 			freqs.old = policy->cur;
1812 			freqs.new = freq_table[index].frequency;
1813 			freqs.flags = 0;
1814 
1815 			pr_debug("%s: cpu: %d, oldfreq: %u, new freq: %u\n",
1816 					__func__, policy->cpu, freqs.old,
1817 					freqs.new);
1818 
1819 			cpufreq_notify_transition(policy, &freqs,
1820 					CPUFREQ_PRECHANGE);
1821 		}
1822 
1823 		retval = cpufreq_driver->target_index(policy, index);
1824 		if (retval)
1825 			pr_err("%s: Failed to change cpu frequency: %d\n",
1826 					__func__, retval);
1827 
1828 		if (notify)
1829 			cpufreq_notify_post_transition(policy, &freqs, retval);
1830 	}
1831 
1832 out:
1833 	return retval;
1834 }
1835 EXPORT_SYMBOL_GPL(__cpufreq_driver_target);
1836 
1837 int cpufreq_driver_target(struct cpufreq_policy *policy,
1838 			  unsigned int target_freq,
1839 			  unsigned int relation)
1840 {
1841 	int ret = -EINVAL;
1842 
1843 	down_write(&policy->rwsem);
1844 
1845 	ret = __cpufreq_driver_target(policy, target_freq, relation);
1846 
1847 	up_write(&policy->rwsem);
1848 
1849 	return ret;
1850 }
1851 EXPORT_SYMBOL_GPL(cpufreq_driver_target);
1852 
1853 /*
1854  * when "event" is CPUFREQ_GOV_LIMITS
1855  */
1856 
1857 static int __cpufreq_governor(struct cpufreq_policy *policy,
1858 					unsigned int event)
1859 {
1860 	int ret;
1861 
1862 	/* Only must be defined when default governor is known to have latency
1863 	   restrictions, like e.g. conservative or ondemand.
1864 	   That this is the case is already ensured in Kconfig
1865 	*/
1866 #ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE
1867 	struct cpufreq_governor *gov = &cpufreq_gov_performance;
1868 #else
1869 	struct cpufreq_governor *gov = NULL;
1870 #endif
1871 
1872 	if (policy->governor->max_transition_latency &&
1873 	    policy->cpuinfo.transition_latency >
1874 	    policy->governor->max_transition_latency) {
1875 		if (!gov)
1876 			return -EINVAL;
1877 		else {
1878 			printk(KERN_WARNING "%s governor failed, too long"
1879 			       " transition latency of HW, fallback"
1880 			       " to %s governor\n",
1881 			       policy->governor->name,
1882 			       gov->name);
1883 			policy->governor = gov;
1884 		}
1885 	}
1886 
1887 	if (event == CPUFREQ_GOV_POLICY_INIT)
1888 		if (!try_module_get(policy->governor->owner))
1889 			return -EINVAL;
1890 
1891 	pr_debug("__cpufreq_governor for CPU %u, event %u\n",
1892 						policy->cpu, event);
1893 
1894 	mutex_lock(&cpufreq_governor_lock);
1895 	if ((policy->governor_enabled && event == CPUFREQ_GOV_START)
1896 	    || (!policy->governor_enabled
1897 	    && (event == CPUFREQ_GOV_LIMITS || event == CPUFREQ_GOV_STOP))) {
1898 		mutex_unlock(&cpufreq_governor_lock);
1899 		return -EBUSY;
1900 	}
1901 
1902 	if (event == CPUFREQ_GOV_STOP)
1903 		policy->governor_enabled = false;
1904 	else if (event == CPUFREQ_GOV_START)
1905 		policy->governor_enabled = true;
1906 
1907 	mutex_unlock(&cpufreq_governor_lock);
1908 
1909 	ret = policy->governor->governor(policy, event);
1910 
1911 	if (!ret) {
1912 		if (event == CPUFREQ_GOV_POLICY_INIT)
1913 			policy->governor->initialized++;
1914 		else if (event == CPUFREQ_GOV_POLICY_EXIT)
1915 			policy->governor->initialized--;
1916 	} else {
1917 		/* Restore original values */
1918 		mutex_lock(&cpufreq_governor_lock);
1919 		if (event == CPUFREQ_GOV_STOP)
1920 			policy->governor_enabled = true;
1921 		else if (event == CPUFREQ_GOV_START)
1922 			policy->governor_enabled = false;
1923 		mutex_unlock(&cpufreq_governor_lock);
1924 	}
1925 
1926 	if (((event == CPUFREQ_GOV_POLICY_INIT) && ret) ||
1927 			((event == CPUFREQ_GOV_POLICY_EXIT) && !ret))
1928 		module_put(policy->governor->owner);
1929 
1930 	return ret;
1931 }
1932 
1933 int cpufreq_register_governor(struct cpufreq_governor *governor)
1934 {
1935 	int err;
1936 
1937 	if (!governor)
1938 		return -EINVAL;
1939 
1940 	if (cpufreq_disabled())
1941 		return -ENODEV;
1942 
1943 	mutex_lock(&cpufreq_governor_mutex);
1944 
1945 	governor->initialized = 0;
1946 	err = -EBUSY;
1947 	if (__find_governor(governor->name) == NULL) {
1948 		err = 0;
1949 		list_add(&governor->governor_list, &cpufreq_governor_list);
1950 	}
1951 
1952 	mutex_unlock(&cpufreq_governor_mutex);
1953 	return err;
1954 }
1955 EXPORT_SYMBOL_GPL(cpufreq_register_governor);
1956 
1957 void cpufreq_unregister_governor(struct cpufreq_governor *governor)
1958 {
1959 #ifdef CONFIG_HOTPLUG_CPU
1960 	int cpu;
1961 #endif
1962 
1963 	if (!governor)
1964 		return;
1965 
1966 	if (cpufreq_disabled())
1967 		return;
1968 
1969 #ifdef CONFIG_HOTPLUG_CPU
1970 	for_each_present_cpu(cpu) {
1971 		if (cpu_online(cpu))
1972 			continue;
1973 		if (!strcmp(per_cpu(cpufreq_cpu_governor, cpu), governor->name))
1974 			strcpy(per_cpu(cpufreq_cpu_governor, cpu), "\0");
1975 	}
1976 #endif
1977 
1978 	mutex_lock(&cpufreq_governor_mutex);
1979 	list_del(&governor->governor_list);
1980 	mutex_unlock(&cpufreq_governor_mutex);
1981 	return;
1982 }
1983 EXPORT_SYMBOL_GPL(cpufreq_unregister_governor);
1984 
1985 
1986 /*********************************************************************
1987  *                          POLICY INTERFACE                         *
1988  *********************************************************************/
1989 
1990 /**
1991  * cpufreq_get_policy - get the current cpufreq_policy
1992  * @policy: struct cpufreq_policy into which the current cpufreq_policy
1993  *	is written
1994  *
1995  * Reads the current cpufreq policy.
1996  */
1997 int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
1998 {
1999 	struct cpufreq_policy *cpu_policy;
2000 	if (!policy)
2001 		return -EINVAL;
2002 
2003 	cpu_policy = cpufreq_cpu_get(cpu);
2004 	if (!cpu_policy)
2005 		return -EINVAL;
2006 
2007 	memcpy(policy, cpu_policy, sizeof(*policy));
2008 
2009 	cpufreq_cpu_put(cpu_policy);
2010 	return 0;
2011 }
2012 EXPORT_SYMBOL(cpufreq_get_policy);
2013 
2014 /*
2015  * policy : current policy.
2016  * new_policy: policy to be set.
2017  */
2018 static int cpufreq_set_policy(struct cpufreq_policy *policy,
2019 				struct cpufreq_policy *new_policy)
2020 {
2021 	int ret = 0, failed = 1;
2022 
2023 	pr_debug("setting new policy for CPU %u: %u - %u kHz\n", new_policy->cpu,
2024 		new_policy->min, new_policy->max);
2025 
2026 	memcpy(&new_policy->cpuinfo, &policy->cpuinfo, sizeof(policy->cpuinfo));
2027 
2028 	if (new_policy->min > policy->max || new_policy->max < policy->min) {
2029 		ret = -EINVAL;
2030 		goto error_out;
2031 	}
2032 
2033 	/* verify the cpu speed can be set within this limit */
2034 	ret = cpufreq_driver->verify(new_policy);
2035 	if (ret)
2036 		goto error_out;
2037 
2038 	/* adjust if necessary - all reasons */
2039 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2040 			CPUFREQ_ADJUST, new_policy);
2041 
2042 	/* adjust if necessary - hardware incompatibility*/
2043 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2044 			CPUFREQ_INCOMPATIBLE, new_policy);
2045 
2046 	/*
2047 	 * verify the cpu speed can be set within this limit, which might be
2048 	 * different to the first one
2049 	 */
2050 	ret = cpufreq_driver->verify(new_policy);
2051 	if (ret)
2052 		goto error_out;
2053 
2054 	/* notification of the new policy */
2055 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
2056 			CPUFREQ_NOTIFY, new_policy);
2057 
2058 	policy->min = new_policy->min;
2059 	policy->max = new_policy->max;
2060 
2061 	pr_debug("new min and max freqs are %u - %u kHz\n",
2062 					policy->min, policy->max);
2063 
2064 	if (cpufreq_driver->setpolicy) {
2065 		policy->policy = new_policy->policy;
2066 		pr_debug("setting range\n");
2067 		ret = cpufreq_driver->setpolicy(new_policy);
2068 	} else {
2069 		if (new_policy->governor != policy->governor) {
2070 			/* save old, working values */
2071 			struct cpufreq_governor *old_gov = policy->governor;
2072 
2073 			pr_debug("governor switch\n");
2074 
2075 			/* end old governor */
2076 			if (policy->governor) {
2077 				__cpufreq_governor(policy, CPUFREQ_GOV_STOP);
2078 				up_write(&policy->rwsem);
2079 				__cpufreq_governor(policy,
2080 						CPUFREQ_GOV_POLICY_EXIT);
2081 				down_write(&policy->rwsem);
2082 			}
2083 
2084 			/* start new governor */
2085 			policy->governor = new_policy->governor;
2086 			if (!__cpufreq_governor(policy, CPUFREQ_GOV_POLICY_INIT)) {
2087 				if (!__cpufreq_governor(policy, CPUFREQ_GOV_START)) {
2088 					failed = 0;
2089 				} else {
2090 					up_write(&policy->rwsem);
2091 					__cpufreq_governor(policy,
2092 							CPUFREQ_GOV_POLICY_EXIT);
2093 					down_write(&policy->rwsem);
2094 				}
2095 			}
2096 
2097 			if (failed) {
2098 				/* new governor failed, so re-start old one */
2099 				pr_debug("starting governor %s failed\n",
2100 							policy->governor->name);
2101 				if (old_gov) {
2102 					policy->governor = old_gov;
2103 					__cpufreq_governor(policy,
2104 							CPUFREQ_GOV_POLICY_INIT);
2105 					__cpufreq_governor(policy,
2106 							   CPUFREQ_GOV_START);
2107 				}
2108 				ret = -EINVAL;
2109 				goto error_out;
2110 			}
2111 			/* might be a policy change, too, so fall through */
2112 		}
2113 		pr_debug("governor: change or update limits\n");
2114 		ret = __cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
2115 	}
2116 
2117 error_out:
2118 	return ret;
2119 }
2120 
2121 /**
2122  *	cpufreq_update_policy - re-evaluate an existing cpufreq policy
2123  *	@cpu: CPU which shall be re-evaluated
2124  *
2125  *	Useful for policy notifiers which have different necessities
2126  *	at different times.
2127  */
2128 int cpufreq_update_policy(unsigned int cpu)
2129 {
2130 	struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
2131 	struct cpufreq_policy new_policy;
2132 	int ret;
2133 
2134 	if (!policy) {
2135 		ret = -ENODEV;
2136 		goto no_policy;
2137 	}
2138 
2139 	down_write(&policy->rwsem);
2140 
2141 	pr_debug("updating policy for CPU %u\n", cpu);
2142 	memcpy(&new_policy, policy, sizeof(*policy));
2143 	new_policy.min = policy->user_policy.min;
2144 	new_policy.max = policy->user_policy.max;
2145 	new_policy.policy = policy->user_policy.policy;
2146 	new_policy.governor = policy->user_policy.governor;
2147 
2148 	/*
2149 	 * BIOS might change freq behind our back
2150 	 * -> ask driver for current freq and notify governors about a change
2151 	 */
2152 	if (cpufreq_driver->get) {
2153 		new_policy.cur = cpufreq_driver->get(cpu);
2154 		if (!policy->cur) {
2155 			pr_debug("Driver did not initialize current freq");
2156 			policy->cur = new_policy.cur;
2157 		} else {
2158 			if (policy->cur != new_policy.cur && has_target())
2159 				cpufreq_out_of_sync(cpu, policy->cur,
2160 								new_policy.cur);
2161 		}
2162 	}
2163 
2164 	ret = cpufreq_set_policy(policy, &new_policy);
2165 
2166 	up_write(&policy->rwsem);
2167 
2168 	cpufreq_cpu_put(policy);
2169 no_policy:
2170 	return ret;
2171 }
2172 EXPORT_SYMBOL(cpufreq_update_policy);
2173 
2174 static int cpufreq_cpu_callback(struct notifier_block *nfb,
2175 					unsigned long action, void *hcpu)
2176 {
2177 	unsigned int cpu = (unsigned long)hcpu;
2178 	struct device *dev;
2179 	bool frozen = false;
2180 
2181 	dev = get_cpu_device(cpu);
2182 	if (dev) {
2183 
2184 		if (action & CPU_TASKS_FROZEN)
2185 			frozen = true;
2186 
2187 		switch (action & ~CPU_TASKS_FROZEN) {
2188 		case CPU_ONLINE:
2189 			__cpufreq_add_dev(dev, NULL, frozen);
2190 			cpufreq_update_policy(cpu);
2191 			break;
2192 
2193 		case CPU_DOWN_PREPARE:
2194 			__cpufreq_remove_dev_prepare(dev, NULL, frozen);
2195 			break;
2196 
2197 		case CPU_POST_DEAD:
2198 			__cpufreq_remove_dev_finish(dev, NULL, frozen);
2199 			break;
2200 
2201 		case CPU_DOWN_FAILED:
2202 			__cpufreq_add_dev(dev, NULL, frozen);
2203 			break;
2204 		}
2205 	}
2206 	return NOTIFY_OK;
2207 }
2208 
2209 static struct notifier_block __refdata cpufreq_cpu_notifier = {
2210 	.notifier_call = cpufreq_cpu_callback,
2211 };
2212 
2213 /*********************************************************************
2214  *               BOOST						     *
2215  *********************************************************************/
2216 static int cpufreq_boost_set_sw(int state)
2217 {
2218 	struct cpufreq_frequency_table *freq_table;
2219 	struct cpufreq_policy *policy;
2220 	int ret = -EINVAL;
2221 
2222 	list_for_each_entry(policy, &cpufreq_policy_list, policy_list) {
2223 		freq_table = cpufreq_frequency_get_table(policy->cpu);
2224 		if (freq_table) {
2225 			ret = cpufreq_frequency_table_cpuinfo(policy,
2226 							freq_table);
2227 			if (ret) {
2228 				pr_err("%s: Policy frequency update failed\n",
2229 				       __func__);
2230 				break;
2231 			}
2232 			policy->user_policy.max = policy->max;
2233 			__cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
2234 		}
2235 	}
2236 
2237 	return ret;
2238 }
2239 
2240 int cpufreq_boost_trigger_state(int state)
2241 {
2242 	unsigned long flags;
2243 	int ret = 0;
2244 
2245 	if (cpufreq_driver->boost_enabled == state)
2246 		return 0;
2247 
2248 	write_lock_irqsave(&cpufreq_driver_lock, flags);
2249 	cpufreq_driver->boost_enabled = state;
2250 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2251 
2252 	ret = cpufreq_driver->set_boost(state);
2253 	if (ret) {
2254 		write_lock_irqsave(&cpufreq_driver_lock, flags);
2255 		cpufreq_driver->boost_enabled = !state;
2256 		write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2257 
2258 		pr_err("%s: Cannot %s BOOST\n", __func__,
2259 		       state ? "enable" : "disable");
2260 	}
2261 
2262 	return ret;
2263 }
2264 
2265 int cpufreq_boost_supported(void)
2266 {
2267 	if (likely(cpufreq_driver))
2268 		return cpufreq_driver->boost_supported;
2269 
2270 	return 0;
2271 }
2272 EXPORT_SYMBOL_GPL(cpufreq_boost_supported);
2273 
2274 int cpufreq_boost_enabled(void)
2275 {
2276 	return cpufreq_driver->boost_enabled;
2277 }
2278 EXPORT_SYMBOL_GPL(cpufreq_boost_enabled);
2279 
2280 /*********************************************************************
2281  *               REGISTER / UNREGISTER CPUFREQ DRIVER                *
2282  *********************************************************************/
2283 
2284 /**
2285  * cpufreq_register_driver - register a CPU Frequency driver
2286  * @driver_data: A struct cpufreq_driver containing the values#
2287  * submitted by the CPU Frequency driver.
2288  *
2289  * Registers a CPU Frequency driver to this core code. This code
2290  * returns zero on success, -EBUSY when another driver got here first
2291  * (and isn't unregistered in the meantime).
2292  *
2293  */
2294 int cpufreq_register_driver(struct cpufreq_driver *driver_data)
2295 {
2296 	unsigned long flags;
2297 	int ret;
2298 
2299 	if (cpufreq_disabled())
2300 		return -ENODEV;
2301 
2302 	if (!driver_data || !driver_data->verify || !driver_data->init ||
2303 	    !(driver_data->setpolicy || driver_data->target_index ||
2304 		    driver_data->target))
2305 		return -EINVAL;
2306 
2307 	pr_debug("trying to register driver %s\n", driver_data->name);
2308 
2309 	if (driver_data->setpolicy)
2310 		driver_data->flags |= CPUFREQ_CONST_LOOPS;
2311 
2312 	write_lock_irqsave(&cpufreq_driver_lock, flags);
2313 	if (cpufreq_driver) {
2314 		write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2315 		return -EEXIST;
2316 	}
2317 	cpufreq_driver = driver_data;
2318 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2319 
2320 	if (cpufreq_boost_supported()) {
2321 		/*
2322 		 * Check if driver provides function to enable boost -
2323 		 * if not, use cpufreq_boost_set_sw as default
2324 		 */
2325 		if (!cpufreq_driver->set_boost)
2326 			cpufreq_driver->set_boost = cpufreq_boost_set_sw;
2327 
2328 		ret = cpufreq_sysfs_create_file(&boost.attr);
2329 		if (ret) {
2330 			pr_err("%s: cannot register global BOOST sysfs file\n",
2331 				__func__);
2332 			goto err_null_driver;
2333 		}
2334 	}
2335 
2336 	ret = subsys_interface_register(&cpufreq_interface);
2337 	if (ret)
2338 		goto err_boost_unreg;
2339 
2340 	if (!(cpufreq_driver->flags & CPUFREQ_STICKY)) {
2341 		int i;
2342 		ret = -ENODEV;
2343 
2344 		/* check for at least one working CPU */
2345 		for (i = 0; i < nr_cpu_ids; i++)
2346 			if (cpu_possible(i) && per_cpu(cpufreq_cpu_data, i)) {
2347 				ret = 0;
2348 				break;
2349 			}
2350 
2351 		/* if all ->init() calls failed, unregister */
2352 		if (ret) {
2353 			pr_debug("no CPU initialized for driver %s\n",
2354 							driver_data->name);
2355 			goto err_if_unreg;
2356 		}
2357 	}
2358 
2359 	register_hotcpu_notifier(&cpufreq_cpu_notifier);
2360 	pr_debug("driver %s up and running\n", driver_data->name);
2361 
2362 	return 0;
2363 err_if_unreg:
2364 	subsys_interface_unregister(&cpufreq_interface);
2365 err_boost_unreg:
2366 	if (cpufreq_boost_supported())
2367 		cpufreq_sysfs_remove_file(&boost.attr);
2368 err_null_driver:
2369 	write_lock_irqsave(&cpufreq_driver_lock, flags);
2370 	cpufreq_driver = NULL;
2371 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2372 	return ret;
2373 }
2374 EXPORT_SYMBOL_GPL(cpufreq_register_driver);
2375 
2376 /**
2377  * cpufreq_unregister_driver - unregister the current CPUFreq driver
2378  *
2379  * Unregister the current CPUFreq driver. Only call this if you have
2380  * the right to do so, i.e. if you have succeeded in initialising before!
2381  * Returns zero if successful, and -EINVAL if the cpufreq_driver is
2382  * currently not initialised.
2383  */
2384 int cpufreq_unregister_driver(struct cpufreq_driver *driver)
2385 {
2386 	unsigned long flags;
2387 
2388 	if (!cpufreq_driver || (driver != cpufreq_driver))
2389 		return -EINVAL;
2390 
2391 	pr_debug("unregistering driver %s\n", driver->name);
2392 
2393 	subsys_interface_unregister(&cpufreq_interface);
2394 	if (cpufreq_boost_supported())
2395 		cpufreq_sysfs_remove_file(&boost.attr);
2396 
2397 	unregister_hotcpu_notifier(&cpufreq_cpu_notifier);
2398 
2399 	down_write(&cpufreq_rwsem);
2400 	write_lock_irqsave(&cpufreq_driver_lock, flags);
2401 
2402 	cpufreq_driver = NULL;
2403 
2404 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2405 	up_write(&cpufreq_rwsem);
2406 
2407 	return 0;
2408 }
2409 EXPORT_SYMBOL_GPL(cpufreq_unregister_driver);
2410 
2411 static int __init cpufreq_core_init(void)
2412 {
2413 	if (cpufreq_disabled())
2414 		return -ENODEV;
2415 
2416 	cpufreq_global_kobject = kobject_create();
2417 	BUG_ON(!cpufreq_global_kobject);
2418 	register_syscore_ops(&cpufreq_syscore_ops);
2419 
2420 	return 0;
2421 }
2422 core_initcall(cpufreq_core_init);
2423