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