xref: /linux/drivers/cpufreq/cpufreq.c (revision d39d0ed196aa1685bb24771e92f78633c66ac9cb)
1 /*
2  *  linux/drivers/cpufreq/cpufreq.c
3  *
4  *  Copyright (C) 2001 Russell King
5  *            (C) 2002 - 2003 Dominik Brodowski <linux@brodo.de>
6  *
7  *  Oct 2005 - Ashok Raj <ashok.raj@intel.com>
8  *	Added handling for CPU hotplug
9  *  Feb 2006 - Jacob Shin <jacob.shin@amd.com>
10  *	Fix handling for CPU hotplug -- affected CPUs
11  *
12  * This program is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU General Public License version 2 as
14  * published by the Free Software Foundation.
15  *
16  */
17 
18 #include <linux/kernel.h>
19 #include <linux/module.h>
20 #include <linux/init.h>
21 #include <linux/notifier.h>
22 #include <linux/cpufreq.h>
23 #include <linux/delay.h>
24 #include <linux/interrupt.h>
25 #include <linux/spinlock.h>
26 #include <linux/device.h>
27 #include <linux/slab.h>
28 #include <linux/cpu.h>
29 #include <linux/completion.h>
30 #include <linux/mutex.h>
31 
32 #include <trace/events/power.h>
33 
34 #define dprintk(msg...) cpufreq_debug_printk(CPUFREQ_DEBUG_CORE, \
35 						"cpufreq-core", msg)
36 
37 /**
38  * The "cpufreq driver" - the arch- or hardware-dependent low
39  * level driver of CPUFreq support, and its spinlock. This lock
40  * also protects the cpufreq_cpu_data array.
41  */
42 static struct cpufreq_driver *cpufreq_driver;
43 static DEFINE_PER_CPU(struct cpufreq_policy *, cpufreq_cpu_data);
44 #ifdef CONFIG_HOTPLUG_CPU
45 /* This one keeps track of the previously set governor of a removed CPU */
46 static DEFINE_PER_CPU(char[CPUFREQ_NAME_LEN], cpufreq_cpu_governor);
47 #endif
48 static DEFINE_SPINLOCK(cpufreq_driver_lock);
49 
50 /*
51  * cpu_policy_rwsem is a per CPU reader-writer semaphore designed to cure
52  * all cpufreq/hotplug/workqueue/etc related lock issues.
53  *
54  * The rules for this semaphore:
55  * - Any routine that wants to read from the policy structure will
56  *   do a down_read on this semaphore.
57  * - Any routine that will write to the policy structure and/or may take away
58  *   the policy altogether (eg. CPU hotplug), will hold this lock in write
59  *   mode before doing so.
60  *
61  * Additional rules:
62  * - All holders of the lock should check to make sure that the CPU they
63  *   are concerned with are online after they get the lock.
64  * - Governor routines that can be called in cpufreq hotplug path should not
65  *   take this sem as top level hotplug notifier handler takes this.
66  * - Lock should not be held across
67  *     __cpufreq_governor(data, CPUFREQ_GOV_STOP);
68  */
69 static DEFINE_PER_CPU(int, cpufreq_policy_cpu);
70 static DEFINE_PER_CPU(struct rw_semaphore, cpu_policy_rwsem);
71 
72 #define lock_policy_rwsem(mode, cpu)					\
73 static int lock_policy_rwsem_##mode					\
74 (int cpu)								\
75 {									\
76 	int policy_cpu = per_cpu(cpufreq_policy_cpu, cpu);		\
77 	BUG_ON(policy_cpu == -1);					\
78 	down_##mode(&per_cpu(cpu_policy_rwsem, policy_cpu));		\
79 	if (unlikely(!cpu_online(cpu))) {				\
80 		up_##mode(&per_cpu(cpu_policy_rwsem, policy_cpu));	\
81 		return -1;						\
82 	}								\
83 									\
84 	return 0;							\
85 }
86 
87 lock_policy_rwsem(read, cpu);
88 
89 lock_policy_rwsem(write, cpu);
90 
91 static void unlock_policy_rwsem_read(int cpu)
92 {
93 	int policy_cpu = per_cpu(cpufreq_policy_cpu, cpu);
94 	BUG_ON(policy_cpu == -1);
95 	up_read(&per_cpu(cpu_policy_rwsem, policy_cpu));
96 }
97 
98 static void unlock_policy_rwsem_write(int cpu)
99 {
100 	int policy_cpu = per_cpu(cpufreq_policy_cpu, cpu);
101 	BUG_ON(policy_cpu == -1);
102 	up_write(&per_cpu(cpu_policy_rwsem, policy_cpu));
103 }
104 
105 
106 /* internal prototypes */
107 static int __cpufreq_governor(struct cpufreq_policy *policy,
108 		unsigned int event);
109 static unsigned int __cpufreq_get(unsigned int cpu);
110 static void handle_update(struct work_struct *work);
111 
112 /**
113  * Two notifier lists: the "policy" list is involved in the
114  * validation process for a new CPU frequency policy; the
115  * "transition" list for kernel code that needs to handle
116  * changes to devices when the CPU clock speed changes.
117  * The mutex locks both lists.
118  */
119 static BLOCKING_NOTIFIER_HEAD(cpufreq_policy_notifier_list);
120 static struct srcu_notifier_head cpufreq_transition_notifier_list;
121 
122 static bool init_cpufreq_transition_notifier_list_called;
123 static int __init init_cpufreq_transition_notifier_list(void)
124 {
125 	srcu_init_notifier_head(&cpufreq_transition_notifier_list);
126 	init_cpufreq_transition_notifier_list_called = true;
127 	return 0;
128 }
129 pure_initcall(init_cpufreq_transition_notifier_list);
130 
131 static LIST_HEAD(cpufreq_governor_list);
132 static DEFINE_MUTEX(cpufreq_governor_mutex);
133 
134 struct cpufreq_policy *cpufreq_cpu_get(unsigned int cpu)
135 {
136 	struct cpufreq_policy *data;
137 	unsigned long flags;
138 
139 	if (cpu >= nr_cpu_ids)
140 		goto err_out;
141 
142 	/* get the cpufreq driver */
143 	spin_lock_irqsave(&cpufreq_driver_lock, flags);
144 
145 	if (!cpufreq_driver)
146 		goto err_out_unlock;
147 
148 	if (!try_module_get(cpufreq_driver->owner))
149 		goto err_out_unlock;
150 
151 
152 	/* get the CPU */
153 	data = per_cpu(cpufreq_cpu_data, cpu);
154 
155 	if (!data)
156 		goto err_out_put_module;
157 
158 	if (!kobject_get(&data->kobj))
159 		goto err_out_put_module;
160 
161 	spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
162 	return data;
163 
164 err_out_put_module:
165 	module_put(cpufreq_driver->owner);
166 err_out_unlock:
167 	spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
168 err_out:
169 	return NULL;
170 }
171 EXPORT_SYMBOL_GPL(cpufreq_cpu_get);
172 
173 
174 void cpufreq_cpu_put(struct cpufreq_policy *data)
175 {
176 	kobject_put(&data->kobj);
177 	module_put(cpufreq_driver->owner);
178 }
179 EXPORT_SYMBOL_GPL(cpufreq_cpu_put);
180 
181 
182 /*********************************************************************
183  *                     UNIFIED DEBUG HELPERS                         *
184  *********************************************************************/
185 #ifdef CONFIG_CPU_FREQ_DEBUG
186 
187 /* what part(s) of the CPUfreq subsystem are debugged? */
188 static unsigned int debug;
189 
190 /* is the debug output ratelimit'ed using printk_ratelimit? User can
191  * set or modify this value.
192  */
193 static unsigned int debug_ratelimit = 1;
194 
195 /* is the printk_ratelimit'ing enabled? It's enabled after a successful
196  * loading of a cpufreq driver, temporarily disabled when a new policy
197  * is set, and disabled upon cpufreq driver removal
198  */
199 static unsigned int disable_ratelimit = 1;
200 static DEFINE_SPINLOCK(disable_ratelimit_lock);
201 
202 static void cpufreq_debug_enable_ratelimit(void)
203 {
204 	unsigned long flags;
205 
206 	spin_lock_irqsave(&disable_ratelimit_lock, flags);
207 	if (disable_ratelimit)
208 		disable_ratelimit--;
209 	spin_unlock_irqrestore(&disable_ratelimit_lock, flags);
210 }
211 
212 static void cpufreq_debug_disable_ratelimit(void)
213 {
214 	unsigned long flags;
215 
216 	spin_lock_irqsave(&disable_ratelimit_lock, flags);
217 	disable_ratelimit++;
218 	spin_unlock_irqrestore(&disable_ratelimit_lock, flags);
219 }
220 
221 void cpufreq_debug_printk(unsigned int type, const char *prefix,
222 			const char *fmt, ...)
223 {
224 	char s[256];
225 	va_list args;
226 	unsigned int len;
227 	unsigned long flags;
228 
229 	WARN_ON(!prefix);
230 	if (type & debug) {
231 		spin_lock_irqsave(&disable_ratelimit_lock, flags);
232 		if (!disable_ratelimit && debug_ratelimit
233 					&& !printk_ratelimit()) {
234 			spin_unlock_irqrestore(&disable_ratelimit_lock, flags);
235 			return;
236 		}
237 		spin_unlock_irqrestore(&disable_ratelimit_lock, flags);
238 
239 		len = snprintf(s, 256, KERN_DEBUG "%s: ", prefix);
240 
241 		va_start(args, fmt);
242 		len += vsnprintf(&s[len], (256 - len), fmt, args);
243 		va_end(args);
244 
245 		printk(s);
246 
247 		WARN_ON(len < 5);
248 	}
249 }
250 EXPORT_SYMBOL(cpufreq_debug_printk);
251 
252 
253 module_param(debug, uint, 0644);
254 MODULE_PARM_DESC(debug, "CPUfreq debugging: add 1 to debug core,"
255 			" 2 to debug drivers, and 4 to debug governors.");
256 
257 module_param(debug_ratelimit, uint, 0644);
258 MODULE_PARM_DESC(debug_ratelimit, "CPUfreq debugging:"
259 					" set to 0 to disable ratelimiting.");
260 
261 #else /* !CONFIG_CPU_FREQ_DEBUG */
262 
263 static inline void cpufreq_debug_enable_ratelimit(void) { return; }
264 static inline void cpufreq_debug_disable_ratelimit(void) { return; }
265 
266 #endif /* CONFIG_CPU_FREQ_DEBUG */
267 
268 
269 /*********************************************************************
270  *            EXTERNALLY AFFECTING FREQUENCY CHANGES                 *
271  *********************************************************************/
272 
273 /**
274  * adjust_jiffies - adjust the system "loops_per_jiffy"
275  *
276  * This function alters the system "loops_per_jiffy" for the clock
277  * speed change. Note that loops_per_jiffy cannot be updated on SMP
278  * systems as each CPU might be scaled differently. So, use the arch
279  * per-CPU loops_per_jiffy value wherever possible.
280  */
281 #ifndef CONFIG_SMP
282 static unsigned long l_p_j_ref;
283 static unsigned int  l_p_j_ref_freq;
284 
285 static void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
286 {
287 	if (ci->flags & CPUFREQ_CONST_LOOPS)
288 		return;
289 
290 	if (!l_p_j_ref_freq) {
291 		l_p_j_ref = loops_per_jiffy;
292 		l_p_j_ref_freq = ci->old;
293 		dprintk("saving %lu as reference value for loops_per_jiffy; "
294 			"freq is %u kHz\n", l_p_j_ref, l_p_j_ref_freq);
295 	}
296 	if ((val == CPUFREQ_PRECHANGE  && ci->old < ci->new) ||
297 	    (val == CPUFREQ_POSTCHANGE && ci->old > ci->new) ||
298 	    (val == CPUFREQ_RESUMECHANGE || val == CPUFREQ_SUSPENDCHANGE)) {
299 		loops_per_jiffy = cpufreq_scale(l_p_j_ref, l_p_j_ref_freq,
300 								ci->new);
301 		dprintk("scaling loops_per_jiffy to %lu "
302 			"for frequency %u kHz\n", loops_per_jiffy, ci->new);
303 	}
304 }
305 #else
306 static inline void adjust_jiffies(unsigned long val, struct cpufreq_freqs *ci)
307 {
308 	return;
309 }
310 #endif
311 
312 
313 /**
314  * cpufreq_notify_transition - call notifier chain and adjust_jiffies
315  * on frequency transition.
316  *
317  * This function calls the transition notifiers and the "adjust_jiffies"
318  * function. It is called twice on all CPU frequency changes that have
319  * external effects.
320  */
321 void cpufreq_notify_transition(struct cpufreq_freqs *freqs, unsigned int state)
322 {
323 	struct cpufreq_policy *policy;
324 
325 	BUG_ON(irqs_disabled());
326 
327 	freqs->flags = cpufreq_driver->flags;
328 	dprintk("notification %u of frequency transition to %u kHz\n",
329 		state, freqs->new);
330 
331 	policy = per_cpu(cpufreq_cpu_data, freqs->cpu);
332 	switch (state) {
333 
334 	case CPUFREQ_PRECHANGE:
335 		/* detect if the driver reported a value as "old frequency"
336 		 * which is not equal to what the cpufreq core thinks is
337 		 * "old frequency".
338 		 */
339 		if (!(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) {
340 			if ((policy) && (policy->cpu == freqs->cpu) &&
341 			    (policy->cur) && (policy->cur != freqs->old)) {
342 				dprintk("Warning: CPU frequency is"
343 					" %u, cpufreq assumed %u kHz.\n",
344 					freqs->old, policy->cur);
345 				freqs->old = policy->cur;
346 			}
347 		}
348 		srcu_notifier_call_chain(&cpufreq_transition_notifier_list,
349 				CPUFREQ_PRECHANGE, freqs);
350 		adjust_jiffies(CPUFREQ_PRECHANGE, freqs);
351 		break;
352 
353 	case CPUFREQ_POSTCHANGE:
354 		adjust_jiffies(CPUFREQ_POSTCHANGE, freqs);
355 		dprintk("FREQ: %lu - CPU: %lu", (unsigned long)freqs->new,
356 			(unsigned long)freqs->cpu);
357 		trace_power_frequency(POWER_PSTATE, freqs->new, freqs->cpu);
358 		srcu_notifier_call_chain(&cpufreq_transition_notifier_list,
359 				CPUFREQ_POSTCHANGE, freqs);
360 		if (likely(policy) && likely(policy->cpu == freqs->cpu))
361 			policy->cur = freqs->new;
362 		break;
363 	}
364 }
365 EXPORT_SYMBOL_GPL(cpufreq_notify_transition);
366 
367 
368 
369 /*********************************************************************
370  *                          SYSFS INTERFACE                          *
371  *********************************************************************/
372 
373 static struct cpufreq_governor *__find_governor(const char *str_governor)
374 {
375 	struct cpufreq_governor *t;
376 
377 	list_for_each_entry(t, &cpufreq_governor_list, governor_list)
378 		if (!strnicmp(str_governor, t->name, CPUFREQ_NAME_LEN))
379 			return t;
380 
381 	return NULL;
382 }
383 
384 /**
385  * cpufreq_parse_governor - parse a governor string
386  */
387 static int cpufreq_parse_governor(char *str_governor, unsigned int *policy,
388 				struct cpufreq_governor **governor)
389 {
390 	int err = -EINVAL;
391 
392 	if (!cpufreq_driver)
393 		goto out;
394 
395 	if (cpufreq_driver->setpolicy) {
396 		if (!strnicmp(str_governor, "performance", CPUFREQ_NAME_LEN)) {
397 			*policy = CPUFREQ_POLICY_PERFORMANCE;
398 			err = 0;
399 		} else if (!strnicmp(str_governor, "powersave",
400 						CPUFREQ_NAME_LEN)) {
401 			*policy = CPUFREQ_POLICY_POWERSAVE;
402 			err = 0;
403 		}
404 	} else if (cpufreq_driver->target) {
405 		struct cpufreq_governor *t;
406 
407 		mutex_lock(&cpufreq_governor_mutex);
408 
409 		t = __find_governor(str_governor);
410 
411 		if (t == NULL) {
412 			char *name = kasprintf(GFP_KERNEL, "cpufreq_%s",
413 								str_governor);
414 
415 			if (name) {
416 				int ret;
417 
418 				mutex_unlock(&cpufreq_governor_mutex);
419 				ret = request_module("%s", name);
420 				mutex_lock(&cpufreq_governor_mutex);
421 
422 				if (ret == 0)
423 					t = __find_governor(str_governor);
424 			}
425 
426 			kfree(name);
427 		}
428 
429 		if (t != NULL) {
430 			*governor = t;
431 			err = 0;
432 		}
433 
434 		mutex_unlock(&cpufreq_governor_mutex);
435 	}
436 out:
437 	return err;
438 }
439 
440 
441 /**
442  * cpufreq_per_cpu_attr_read() / show_##file_name() -
443  * print out cpufreq information
444  *
445  * Write out information from cpufreq_driver->policy[cpu]; object must be
446  * "unsigned int".
447  */
448 
449 #define show_one(file_name, object)			\
450 static ssize_t show_##file_name				\
451 (struct cpufreq_policy *policy, char *buf)		\
452 {							\
453 	return sprintf(buf, "%u\n", policy->object);	\
454 }
455 
456 show_one(cpuinfo_min_freq, cpuinfo.min_freq);
457 show_one(cpuinfo_max_freq, cpuinfo.max_freq);
458 show_one(cpuinfo_transition_latency, cpuinfo.transition_latency);
459 show_one(scaling_min_freq, min);
460 show_one(scaling_max_freq, max);
461 show_one(scaling_cur_freq, cur);
462 
463 static int __cpufreq_set_policy(struct cpufreq_policy *data,
464 				struct cpufreq_policy *policy);
465 
466 /**
467  * cpufreq_per_cpu_attr_write() / store_##file_name() - sysfs write access
468  */
469 #define store_one(file_name, object)			\
470 static ssize_t store_##file_name					\
471 (struct cpufreq_policy *policy, const char *buf, size_t count)		\
472 {									\
473 	unsigned int ret = -EINVAL;					\
474 	struct cpufreq_policy new_policy;				\
475 									\
476 	ret = cpufreq_get_policy(&new_policy, policy->cpu);		\
477 	if (ret)							\
478 		return -EINVAL;						\
479 									\
480 	ret = sscanf(buf, "%u", &new_policy.object);			\
481 	if (ret != 1)							\
482 		return -EINVAL;						\
483 									\
484 	ret = __cpufreq_set_policy(policy, &new_policy);		\
485 	policy->user_policy.object = policy->object;			\
486 									\
487 	return ret ? ret : count;					\
488 }
489 
490 store_one(scaling_min_freq, min);
491 store_one(scaling_max_freq, max);
492 
493 /**
494  * show_cpuinfo_cur_freq - current CPU frequency as detected by hardware
495  */
496 static ssize_t show_cpuinfo_cur_freq(struct cpufreq_policy *policy,
497 					char *buf)
498 {
499 	unsigned int cur_freq = __cpufreq_get(policy->cpu);
500 	if (!cur_freq)
501 		return sprintf(buf, "<unknown>");
502 	return sprintf(buf, "%u\n", cur_freq);
503 }
504 
505 
506 /**
507  * show_scaling_governor - show the current policy for the specified CPU
508  */
509 static ssize_t show_scaling_governor(struct cpufreq_policy *policy, char *buf)
510 {
511 	if (policy->policy == CPUFREQ_POLICY_POWERSAVE)
512 		return sprintf(buf, "powersave\n");
513 	else if (policy->policy == CPUFREQ_POLICY_PERFORMANCE)
514 		return sprintf(buf, "performance\n");
515 	else if (policy->governor)
516 		return scnprintf(buf, CPUFREQ_NAME_LEN, "%s\n",
517 				policy->governor->name);
518 	return -EINVAL;
519 }
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 	unsigned int ret = -EINVAL;
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 	/* Do not use cpufreq_set_policy here or the user_policy.max
545 	   will be wrongly overridden */
546 	ret = __cpufreq_set_policy(policy, &new_policy);
547 
548 	policy->user_policy.policy = policy->policy;
549 	policy->user_policy.governor = policy->governor;
550 
551 	if (ret)
552 		return ret;
553 	else
554 		return count;
555 }
556 
557 /**
558  * show_scaling_driver - show the cpufreq driver currently loaded
559  */
560 static ssize_t show_scaling_driver(struct cpufreq_policy *policy, char *buf)
561 {
562 	return scnprintf(buf, CPUFREQ_NAME_LEN, "%s\n", cpufreq_driver->name);
563 }
564 
565 /**
566  * show_scaling_available_governors - show the available CPUfreq governors
567  */
568 static ssize_t show_scaling_available_governors(struct cpufreq_policy *policy,
569 						char *buf)
570 {
571 	ssize_t i = 0;
572 	struct cpufreq_governor *t;
573 
574 	if (!cpufreq_driver->target) {
575 		i += sprintf(buf, "performance powersave");
576 		goto out;
577 	}
578 
579 	list_for_each_entry(t, &cpufreq_governor_list, governor_list) {
580 		if (i >= (ssize_t) ((PAGE_SIZE / sizeof(char))
581 		    - (CPUFREQ_NAME_LEN + 2)))
582 			goto out;
583 		i += scnprintf(&buf[i], CPUFREQ_NAME_LEN, "%s ", t->name);
584 	}
585 out:
586 	i += sprintf(&buf[i], "\n");
587 	return i;
588 }
589 
590 static ssize_t show_cpus(const struct cpumask *mask, char *buf)
591 {
592 	ssize_t i = 0;
593 	unsigned int cpu;
594 
595 	for_each_cpu(cpu, mask) {
596 		if (i)
597 			i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), " ");
598 		i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), "%u", cpu);
599 		if (i >= (PAGE_SIZE - 5))
600 			break;
601 	}
602 	i += sprintf(&buf[i], "\n");
603 	return i;
604 }
605 
606 /**
607  * show_related_cpus - show the CPUs affected by each transition even if
608  * hw coordination is in use
609  */
610 static ssize_t show_related_cpus(struct cpufreq_policy *policy, char *buf)
611 {
612 	if (cpumask_empty(policy->related_cpus))
613 		return show_cpus(policy->cpus, buf);
614 	return show_cpus(policy->related_cpus, buf);
615 }
616 
617 /**
618  * show_affected_cpus - show the CPUs affected by each transition
619  */
620 static ssize_t show_affected_cpus(struct cpufreq_policy *policy, char *buf)
621 {
622 	return show_cpus(policy->cpus, buf);
623 }
624 
625 static ssize_t store_scaling_setspeed(struct cpufreq_policy *policy,
626 					const char *buf, size_t count)
627 {
628 	unsigned int freq = 0;
629 	unsigned int ret;
630 
631 	if (!policy->governor || !policy->governor->store_setspeed)
632 		return -EINVAL;
633 
634 	ret = sscanf(buf, "%u", &freq);
635 	if (ret != 1)
636 		return -EINVAL;
637 
638 	policy->governor->store_setspeed(policy, freq);
639 
640 	return count;
641 }
642 
643 static ssize_t show_scaling_setspeed(struct cpufreq_policy *policy, char *buf)
644 {
645 	if (!policy->governor || !policy->governor->show_setspeed)
646 		return sprintf(buf, "<unsupported>\n");
647 
648 	return policy->governor->show_setspeed(policy, buf);
649 }
650 
651 /**
652  * show_scaling_driver - show the current cpufreq HW/BIOS limitation
653  */
654 static ssize_t show_bios_limit(struct cpufreq_policy *policy, char *buf)
655 {
656 	unsigned int limit;
657 	int ret;
658 	if (cpufreq_driver->bios_limit) {
659 		ret = cpufreq_driver->bios_limit(policy->cpu, &limit);
660 		if (!ret)
661 			return sprintf(buf, "%u\n", limit);
662 	}
663 	return sprintf(buf, "%u\n", policy->cpuinfo.max_freq);
664 }
665 
666 cpufreq_freq_attr_ro_perm(cpuinfo_cur_freq, 0400);
667 cpufreq_freq_attr_ro(cpuinfo_min_freq);
668 cpufreq_freq_attr_ro(cpuinfo_max_freq);
669 cpufreq_freq_attr_ro(cpuinfo_transition_latency);
670 cpufreq_freq_attr_ro(scaling_available_governors);
671 cpufreq_freq_attr_ro(scaling_driver);
672 cpufreq_freq_attr_ro(scaling_cur_freq);
673 cpufreq_freq_attr_ro(bios_limit);
674 cpufreq_freq_attr_ro(related_cpus);
675 cpufreq_freq_attr_ro(affected_cpus);
676 cpufreq_freq_attr_rw(scaling_min_freq);
677 cpufreq_freq_attr_rw(scaling_max_freq);
678 cpufreq_freq_attr_rw(scaling_governor);
679 cpufreq_freq_attr_rw(scaling_setspeed);
680 
681 static struct attribute *default_attrs[] = {
682 	&cpuinfo_min_freq.attr,
683 	&cpuinfo_max_freq.attr,
684 	&cpuinfo_transition_latency.attr,
685 	&scaling_min_freq.attr,
686 	&scaling_max_freq.attr,
687 	&affected_cpus.attr,
688 	&related_cpus.attr,
689 	&scaling_governor.attr,
690 	&scaling_driver.attr,
691 	&scaling_available_governors.attr,
692 	&scaling_setspeed.attr,
693 	NULL
694 };
695 
696 struct kobject *cpufreq_global_kobject;
697 EXPORT_SYMBOL(cpufreq_global_kobject);
698 
699 #define to_policy(k) container_of(k, struct cpufreq_policy, kobj)
700 #define to_attr(a) container_of(a, struct freq_attr, attr)
701 
702 static ssize_t show(struct kobject *kobj, struct attribute *attr, char *buf)
703 {
704 	struct cpufreq_policy *policy = to_policy(kobj);
705 	struct freq_attr *fattr = to_attr(attr);
706 	ssize_t ret = -EINVAL;
707 	policy = cpufreq_cpu_get(policy->cpu);
708 	if (!policy)
709 		goto no_policy;
710 
711 	if (lock_policy_rwsem_read(policy->cpu) < 0)
712 		goto fail;
713 
714 	if (fattr->show)
715 		ret = fattr->show(policy, buf);
716 	else
717 		ret = -EIO;
718 
719 	unlock_policy_rwsem_read(policy->cpu);
720 fail:
721 	cpufreq_cpu_put(policy);
722 no_policy:
723 	return ret;
724 }
725 
726 static ssize_t store(struct kobject *kobj, struct attribute *attr,
727 		     const char *buf, size_t count)
728 {
729 	struct cpufreq_policy *policy = to_policy(kobj);
730 	struct freq_attr *fattr = to_attr(attr);
731 	ssize_t ret = -EINVAL;
732 	policy = cpufreq_cpu_get(policy->cpu);
733 	if (!policy)
734 		goto no_policy;
735 
736 	if (lock_policy_rwsem_write(policy->cpu) < 0)
737 		goto fail;
738 
739 	if (fattr->store)
740 		ret = fattr->store(policy, buf, count);
741 	else
742 		ret = -EIO;
743 
744 	unlock_policy_rwsem_write(policy->cpu);
745 fail:
746 	cpufreq_cpu_put(policy);
747 no_policy:
748 	return ret;
749 }
750 
751 static void cpufreq_sysfs_release(struct kobject *kobj)
752 {
753 	struct cpufreq_policy *policy = to_policy(kobj);
754 	dprintk("last reference is dropped\n");
755 	complete(&policy->kobj_unregister);
756 }
757 
758 static const struct sysfs_ops sysfs_ops = {
759 	.show	= show,
760 	.store	= store,
761 };
762 
763 static struct kobj_type ktype_cpufreq = {
764 	.sysfs_ops	= &sysfs_ops,
765 	.default_attrs	= default_attrs,
766 	.release	= cpufreq_sysfs_release,
767 };
768 
769 /*
770  * Returns:
771  *   Negative: Failure
772  *   0:        Success
773  *   Positive: When we have a managed CPU and the sysfs got symlinked
774  */
775 static int cpufreq_add_dev_policy(unsigned int cpu,
776 				  struct cpufreq_policy *policy,
777 				  struct sys_device *sys_dev)
778 {
779 	int ret = 0;
780 #ifdef CONFIG_SMP
781 	unsigned long flags;
782 	unsigned int j;
783 #ifdef CONFIG_HOTPLUG_CPU
784 	struct cpufreq_governor *gov;
785 
786 	gov = __find_governor(per_cpu(cpufreq_cpu_governor, cpu));
787 	if (gov) {
788 		policy->governor = gov;
789 		dprintk("Restoring governor %s for cpu %d\n",
790 		       policy->governor->name, cpu);
791 	}
792 #endif
793 
794 	for_each_cpu(j, policy->cpus) {
795 		struct cpufreq_policy *managed_policy;
796 
797 		if (cpu == j)
798 			continue;
799 
800 		/* Check for existing affected CPUs.
801 		 * They may not be aware of it due to CPU Hotplug.
802 		 * cpufreq_cpu_put is called when the device is removed
803 		 * in __cpufreq_remove_dev()
804 		 */
805 		managed_policy = cpufreq_cpu_get(j);
806 		if (unlikely(managed_policy)) {
807 
808 			/* Set proper policy_cpu */
809 			unlock_policy_rwsem_write(cpu);
810 			per_cpu(cpufreq_policy_cpu, cpu) = managed_policy->cpu;
811 
812 			if (lock_policy_rwsem_write(cpu) < 0) {
813 				/* Should not go through policy unlock path */
814 				if (cpufreq_driver->exit)
815 					cpufreq_driver->exit(policy);
816 				cpufreq_cpu_put(managed_policy);
817 				return -EBUSY;
818 			}
819 
820 			spin_lock_irqsave(&cpufreq_driver_lock, flags);
821 			cpumask_copy(managed_policy->cpus, policy->cpus);
822 			per_cpu(cpufreq_cpu_data, cpu) = managed_policy;
823 			spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
824 
825 			dprintk("CPU already managed, adding link\n");
826 			ret = sysfs_create_link(&sys_dev->kobj,
827 						&managed_policy->kobj,
828 						"cpufreq");
829 			if (ret)
830 				cpufreq_cpu_put(managed_policy);
831 			/*
832 			 * Success. We only needed to be added to the mask.
833 			 * Call driver->exit() because only the cpu parent of
834 			 * the kobj needed to call init().
835 			 */
836 			if (cpufreq_driver->exit)
837 				cpufreq_driver->exit(policy);
838 
839 			if (!ret)
840 				return 1;
841 			else
842 				return ret;
843 		}
844 	}
845 #endif
846 	return ret;
847 }
848 
849 
850 /* symlink affected CPUs */
851 static int cpufreq_add_dev_symlink(unsigned int cpu,
852 				   struct cpufreq_policy *policy)
853 {
854 	unsigned int j;
855 	int ret = 0;
856 
857 	for_each_cpu(j, policy->cpus) {
858 		struct cpufreq_policy *managed_policy;
859 		struct sys_device *cpu_sys_dev;
860 
861 		if (j == cpu)
862 			continue;
863 		if (!cpu_online(j))
864 			continue;
865 
866 		dprintk("CPU %u already managed, adding link\n", j);
867 		managed_policy = cpufreq_cpu_get(cpu);
868 		cpu_sys_dev = get_cpu_sysdev(j);
869 		ret = sysfs_create_link(&cpu_sys_dev->kobj, &policy->kobj,
870 					"cpufreq");
871 		if (ret) {
872 			cpufreq_cpu_put(managed_policy);
873 			return ret;
874 		}
875 	}
876 	return ret;
877 }
878 
879 static int cpufreq_add_dev_interface(unsigned int cpu,
880 				     struct cpufreq_policy *policy,
881 				     struct sys_device *sys_dev)
882 {
883 	struct cpufreq_policy new_policy;
884 	struct freq_attr **drv_attr;
885 	unsigned long flags;
886 	int ret = 0;
887 	unsigned int j;
888 
889 	/* prepare interface data */
890 	ret = kobject_init_and_add(&policy->kobj, &ktype_cpufreq,
891 				   &sys_dev->kobj, "cpufreq");
892 	if (ret)
893 		return ret;
894 
895 	/* set up files for this cpu device */
896 	drv_attr = cpufreq_driver->attr;
897 	while ((drv_attr) && (*drv_attr)) {
898 		ret = sysfs_create_file(&policy->kobj, &((*drv_attr)->attr));
899 		if (ret)
900 			goto err_out_kobj_put;
901 		drv_attr++;
902 	}
903 	if (cpufreq_driver->get) {
904 		ret = sysfs_create_file(&policy->kobj, &cpuinfo_cur_freq.attr);
905 		if (ret)
906 			goto err_out_kobj_put;
907 	}
908 	if (cpufreq_driver->target) {
909 		ret = sysfs_create_file(&policy->kobj, &scaling_cur_freq.attr);
910 		if (ret)
911 			goto err_out_kobj_put;
912 	}
913 	if (cpufreq_driver->bios_limit) {
914 		ret = sysfs_create_file(&policy->kobj, &bios_limit.attr);
915 		if (ret)
916 			goto err_out_kobj_put;
917 	}
918 
919 	spin_lock_irqsave(&cpufreq_driver_lock, flags);
920 	for_each_cpu(j, policy->cpus) {
921 	if (!cpu_online(j))
922 		continue;
923 		per_cpu(cpufreq_cpu_data, j) = policy;
924 		per_cpu(cpufreq_policy_cpu, j) = policy->cpu;
925 	}
926 	spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
927 
928 	ret = cpufreq_add_dev_symlink(cpu, policy);
929 	if (ret)
930 		goto err_out_kobj_put;
931 
932 	memcpy(&new_policy, policy, sizeof(struct cpufreq_policy));
933 	/* assure that the starting sequence is run in __cpufreq_set_policy */
934 	policy->governor = NULL;
935 
936 	/* set default policy */
937 	ret = __cpufreq_set_policy(policy, &new_policy);
938 	policy->user_policy.policy = policy->policy;
939 	policy->user_policy.governor = policy->governor;
940 
941 	if (ret) {
942 		dprintk("setting policy failed\n");
943 		if (cpufreq_driver->exit)
944 			cpufreq_driver->exit(policy);
945 	}
946 	return ret;
947 
948 err_out_kobj_put:
949 	kobject_put(&policy->kobj);
950 	wait_for_completion(&policy->kobj_unregister);
951 	return ret;
952 }
953 
954 
955 /**
956  * cpufreq_add_dev - add a CPU device
957  *
958  * Adds the cpufreq interface for a CPU device.
959  *
960  * The Oracle says: try running cpufreq registration/unregistration concurrently
961  * with with cpu hotplugging and all hell will break loose. Tried to clean this
962  * mess up, but more thorough testing is needed. - Mathieu
963  */
964 static int cpufreq_add_dev(struct sys_device *sys_dev)
965 {
966 	unsigned int cpu = sys_dev->id;
967 	int ret = 0, found = 0;
968 	struct cpufreq_policy *policy;
969 	unsigned long flags;
970 	unsigned int j;
971 #ifdef CONFIG_HOTPLUG_CPU
972 	int sibling;
973 #endif
974 
975 	if (cpu_is_offline(cpu))
976 		return 0;
977 
978 	cpufreq_debug_disable_ratelimit();
979 	dprintk("adding CPU %u\n", cpu);
980 
981 #ifdef CONFIG_SMP
982 	/* check whether a different CPU already registered this
983 	 * CPU because it is in the same boat. */
984 	policy = cpufreq_cpu_get(cpu);
985 	if (unlikely(policy)) {
986 		cpufreq_cpu_put(policy);
987 		cpufreq_debug_enable_ratelimit();
988 		return 0;
989 	}
990 #endif
991 
992 	if (!try_module_get(cpufreq_driver->owner)) {
993 		ret = -EINVAL;
994 		goto module_out;
995 	}
996 
997 	ret = -ENOMEM;
998 	policy = kzalloc(sizeof(struct cpufreq_policy), GFP_KERNEL);
999 	if (!policy)
1000 		goto nomem_out;
1001 
1002 	if (!alloc_cpumask_var(&policy->cpus, GFP_KERNEL))
1003 		goto err_free_policy;
1004 
1005 	if (!zalloc_cpumask_var(&policy->related_cpus, GFP_KERNEL))
1006 		goto err_free_cpumask;
1007 
1008 	policy->cpu = cpu;
1009 	cpumask_copy(policy->cpus, cpumask_of(cpu));
1010 
1011 	/* Initially set CPU itself as the policy_cpu */
1012 	per_cpu(cpufreq_policy_cpu, cpu) = cpu;
1013 	ret = (lock_policy_rwsem_write(cpu) < 0);
1014 	WARN_ON(ret);
1015 
1016 	init_completion(&policy->kobj_unregister);
1017 	INIT_WORK(&policy->update, handle_update);
1018 
1019 	/* Set governor before ->init, so that driver could check it */
1020 #ifdef CONFIG_HOTPLUG_CPU
1021 	for_each_online_cpu(sibling) {
1022 		struct cpufreq_policy *cp = per_cpu(cpufreq_cpu_data, sibling);
1023 		if (cp && cp->governor &&
1024 		    (cpumask_test_cpu(cpu, cp->related_cpus))) {
1025 			policy->governor = cp->governor;
1026 			found = 1;
1027 			break;
1028 		}
1029 	}
1030 #endif
1031 	if (!found)
1032 		policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
1033 	/* call driver. From then on the cpufreq must be able
1034 	 * to accept all calls to ->verify and ->setpolicy for this CPU
1035 	 */
1036 	ret = cpufreq_driver->init(policy);
1037 	if (ret) {
1038 		dprintk("initialization failed\n");
1039 		goto err_unlock_policy;
1040 	}
1041 	policy->user_policy.min = policy->min;
1042 	policy->user_policy.max = policy->max;
1043 
1044 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1045 				     CPUFREQ_START, policy);
1046 
1047 	ret = cpufreq_add_dev_policy(cpu, policy, sys_dev);
1048 	if (ret) {
1049 		if (ret > 0)
1050 			/* This is a managed cpu, symlink created,
1051 			   exit with 0 */
1052 			ret = 0;
1053 		goto err_unlock_policy;
1054 	}
1055 
1056 	ret = cpufreq_add_dev_interface(cpu, policy, sys_dev);
1057 	if (ret)
1058 		goto err_out_unregister;
1059 
1060 	unlock_policy_rwsem_write(cpu);
1061 
1062 	kobject_uevent(&policy->kobj, KOBJ_ADD);
1063 	module_put(cpufreq_driver->owner);
1064 	dprintk("initialization complete\n");
1065 	cpufreq_debug_enable_ratelimit();
1066 
1067 	return 0;
1068 
1069 
1070 err_out_unregister:
1071 	spin_lock_irqsave(&cpufreq_driver_lock, flags);
1072 	for_each_cpu(j, policy->cpus)
1073 		per_cpu(cpufreq_cpu_data, j) = NULL;
1074 	spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
1075 
1076 	kobject_put(&policy->kobj);
1077 	wait_for_completion(&policy->kobj_unregister);
1078 
1079 err_unlock_policy:
1080 	unlock_policy_rwsem_write(cpu);
1081 	free_cpumask_var(policy->related_cpus);
1082 err_free_cpumask:
1083 	free_cpumask_var(policy->cpus);
1084 err_free_policy:
1085 	kfree(policy);
1086 nomem_out:
1087 	module_put(cpufreq_driver->owner);
1088 module_out:
1089 	cpufreq_debug_enable_ratelimit();
1090 	return ret;
1091 }
1092 
1093 
1094 /**
1095  * __cpufreq_remove_dev - remove a CPU device
1096  *
1097  * Removes the cpufreq interface for a CPU device.
1098  * Caller should already have policy_rwsem in write mode for this CPU.
1099  * This routine frees the rwsem before returning.
1100  */
1101 static int __cpufreq_remove_dev(struct sys_device *sys_dev)
1102 {
1103 	unsigned int cpu = sys_dev->id;
1104 	unsigned long flags;
1105 	struct cpufreq_policy *data;
1106 	struct kobject *kobj;
1107 	struct completion *cmp;
1108 #ifdef CONFIG_SMP
1109 	struct sys_device *cpu_sys_dev;
1110 	unsigned int j;
1111 #endif
1112 
1113 	cpufreq_debug_disable_ratelimit();
1114 	dprintk("unregistering CPU %u\n", cpu);
1115 
1116 	spin_lock_irqsave(&cpufreq_driver_lock, flags);
1117 	data = per_cpu(cpufreq_cpu_data, cpu);
1118 
1119 	if (!data) {
1120 		spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
1121 		cpufreq_debug_enable_ratelimit();
1122 		unlock_policy_rwsem_write(cpu);
1123 		return -EINVAL;
1124 	}
1125 	per_cpu(cpufreq_cpu_data, cpu) = NULL;
1126 
1127 
1128 #ifdef CONFIG_SMP
1129 	/* if this isn't the CPU which is the parent of the kobj, we
1130 	 * only need to unlink, put and exit
1131 	 */
1132 	if (unlikely(cpu != data->cpu)) {
1133 		dprintk("removing link\n");
1134 		cpumask_clear_cpu(cpu, data->cpus);
1135 		spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
1136 		kobj = &sys_dev->kobj;
1137 		cpufreq_cpu_put(data);
1138 		cpufreq_debug_enable_ratelimit();
1139 		unlock_policy_rwsem_write(cpu);
1140 		sysfs_remove_link(kobj, "cpufreq");
1141 		return 0;
1142 	}
1143 #endif
1144 
1145 #ifdef CONFIG_SMP
1146 
1147 #ifdef CONFIG_HOTPLUG_CPU
1148 	strncpy(per_cpu(cpufreq_cpu_governor, cpu), data->governor->name,
1149 			CPUFREQ_NAME_LEN);
1150 #endif
1151 
1152 	/* if we have other CPUs still registered, we need to unlink them,
1153 	 * or else wait_for_completion below will lock up. Clean the
1154 	 * per_cpu(cpufreq_cpu_data) while holding the lock, and remove
1155 	 * the sysfs links afterwards.
1156 	 */
1157 	if (unlikely(cpumask_weight(data->cpus) > 1)) {
1158 		for_each_cpu(j, data->cpus) {
1159 			if (j == cpu)
1160 				continue;
1161 			per_cpu(cpufreq_cpu_data, j) = NULL;
1162 		}
1163 	}
1164 
1165 	spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
1166 
1167 	if (unlikely(cpumask_weight(data->cpus) > 1)) {
1168 		for_each_cpu(j, data->cpus) {
1169 			if (j == cpu)
1170 				continue;
1171 			dprintk("removing link for cpu %u\n", j);
1172 #ifdef CONFIG_HOTPLUG_CPU
1173 			strncpy(per_cpu(cpufreq_cpu_governor, j),
1174 				data->governor->name, CPUFREQ_NAME_LEN);
1175 #endif
1176 			cpu_sys_dev = get_cpu_sysdev(j);
1177 			kobj = &cpu_sys_dev->kobj;
1178 			unlock_policy_rwsem_write(cpu);
1179 			sysfs_remove_link(kobj, "cpufreq");
1180 			lock_policy_rwsem_write(cpu);
1181 			cpufreq_cpu_put(data);
1182 		}
1183 	}
1184 #else
1185 	spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
1186 #endif
1187 
1188 	if (cpufreq_driver->target)
1189 		__cpufreq_governor(data, CPUFREQ_GOV_STOP);
1190 
1191 	kobj = &data->kobj;
1192 	cmp = &data->kobj_unregister;
1193 	unlock_policy_rwsem_write(cpu);
1194 	kobject_put(kobj);
1195 
1196 	/* we need to make sure that the underlying kobj is actually
1197 	 * not referenced anymore by anybody before we proceed with
1198 	 * unloading.
1199 	 */
1200 	dprintk("waiting for dropping of refcount\n");
1201 	wait_for_completion(cmp);
1202 	dprintk("wait complete\n");
1203 
1204 	lock_policy_rwsem_write(cpu);
1205 	if (cpufreq_driver->exit)
1206 		cpufreq_driver->exit(data);
1207 	unlock_policy_rwsem_write(cpu);
1208 
1209 	free_cpumask_var(data->related_cpus);
1210 	free_cpumask_var(data->cpus);
1211 	kfree(data);
1212 	per_cpu(cpufreq_cpu_data, cpu) = NULL;
1213 
1214 	cpufreq_debug_enable_ratelimit();
1215 	return 0;
1216 }
1217 
1218 
1219 static int cpufreq_remove_dev(struct sys_device *sys_dev)
1220 {
1221 	unsigned int cpu = sys_dev->id;
1222 	int retval;
1223 
1224 	if (cpu_is_offline(cpu))
1225 		return 0;
1226 
1227 	if (unlikely(lock_policy_rwsem_write(cpu)))
1228 		BUG();
1229 
1230 	retval = __cpufreq_remove_dev(sys_dev);
1231 	return retval;
1232 }
1233 
1234 
1235 static void handle_update(struct work_struct *work)
1236 {
1237 	struct cpufreq_policy *policy =
1238 		container_of(work, struct cpufreq_policy, update);
1239 	unsigned int cpu = policy->cpu;
1240 	dprintk("handle_update for cpu %u called\n", cpu);
1241 	cpufreq_update_policy(cpu);
1242 }
1243 
1244 /**
1245  *	cpufreq_out_of_sync - If actual and saved CPU frequency differs, we're in deep trouble.
1246  *	@cpu: cpu number
1247  *	@old_freq: CPU frequency the kernel thinks the CPU runs at
1248  *	@new_freq: CPU frequency the CPU actually runs at
1249  *
1250  *	We adjust to current frequency first, and need to clean up later.
1251  *	So either call to cpufreq_update_policy() or schedule handle_update()).
1252  */
1253 static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq,
1254 				unsigned int new_freq)
1255 {
1256 	struct cpufreq_freqs freqs;
1257 
1258 	dprintk("Warning: CPU frequency out of sync: cpufreq and timing "
1259 	       "core thinks of %u, is %u kHz.\n", old_freq, new_freq);
1260 
1261 	freqs.cpu = cpu;
1262 	freqs.old = old_freq;
1263 	freqs.new = new_freq;
1264 	cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
1265 	cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
1266 }
1267 
1268 
1269 /**
1270  * cpufreq_quick_get - get the CPU frequency (in kHz) from policy->cur
1271  * @cpu: CPU number
1272  *
1273  * This is the last known freq, without actually getting it from the driver.
1274  * Return value will be same as what is shown in scaling_cur_freq in sysfs.
1275  */
1276 unsigned int cpufreq_quick_get(unsigned int cpu)
1277 {
1278 	struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1279 	unsigned int ret_freq = 0;
1280 
1281 	if (policy) {
1282 		ret_freq = policy->cur;
1283 		cpufreq_cpu_put(policy);
1284 	}
1285 
1286 	return ret_freq;
1287 }
1288 EXPORT_SYMBOL(cpufreq_quick_get);
1289 
1290 
1291 static unsigned int __cpufreq_get(unsigned int cpu)
1292 {
1293 	struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
1294 	unsigned int ret_freq = 0;
1295 
1296 	if (!cpufreq_driver->get)
1297 		return ret_freq;
1298 
1299 	ret_freq = cpufreq_driver->get(cpu);
1300 
1301 	if (ret_freq && policy->cur &&
1302 		!(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) {
1303 		/* verify no discrepancy between actual and
1304 					saved value exists */
1305 		if (unlikely(ret_freq != policy->cur)) {
1306 			cpufreq_out_of_sync(cpu, policy->cur, ret_freq);
1307 			schedule_work(&policy->update);
1308 		}
1309 	}
1310 
1311 	return ret_freq;
1312 }
1313 
1314 /**
1315  * cpufreq_get - get the current CPU frequency (in kHz)
1316  * @cpu: CPU number
1317  *
1318  * Get the CPU current (static) CPU frequency
1319  */
1320 unsigned int cpufreq_get(unsigned int cpu)
1321 {
1322 	unsigned int ret_freq = 0;
1323 	struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1324 
1325 	if (!policy)
1326 		goto out;
1327 
1328 	if (unlikely(lock_policy_rwsem_read(cpu)))
1329 		goto out_policy;
1330 
1331 	ret_freq = __cpufreq_get(cpu);
1332 
1333 	unlock_policy_rwsem_read(cpu);
1334 
1335 out_policy:
1336 	cpufreq_cpu_put(policy);
1337 out:
1338 	return ret_freq;
1339 }
1340 EXPORT_SYMBOL(cpufreq_get);
1341 
1342 
1343 /**
1344  *	cpufreq_suspend - let the low level driver prepare for suspend
1345  */
1346 
1347 static int cpufreq_suspend(struct sys_device *sysdev, pm_message_t pmsg)
1348 {
1349 	int ret = 0;
1350 
1351 	int cpu = sysdev->id;
1352 	struct cpufreq_policy *cpu_policy;
1353 
1354 	dprintk("suspending cpu %u\n", cpu);
1355 
1356 	if (!cpu_online(cpu))
1357 		return 0;
1358 
1359 	/* we may be lax here as interrupts are off. Nonetheless
1360 	 * we need to grab the correct cpu policy, as to check
1361 	 * whether we really run on this CPU.
1362 	 */
1363 
1364 	cpu_policy = cpufreq_cpu_get(cpu);
1365 	if (!cpu_policy)
1366 		return -EINVAL;
1367 
1368 	/* only handle each CPU group once */
1369 	if (unlikely(cpu_policy->cpu != cpu))
1370 		goto out;
1371 
1372 	if (cpufreq_driver->suspend) {
1373 		ret = cpufreq_driver->suspend(cpu_policy, pmsg);
1374 		if (ret)
1375 			printk(KERN_ERR "cpufreq: suspend failed in ->suspend "
1376 					"step on CPU %u\n", cpu_policy->cpu);
1377 	}
1378 
1379 out:
1380 	cpufreq_cpu_put(cpu_policy);
1381 	return ret;
1382 }
1383 
1384 /**
1385  *	cpufreq_resume -  restore proper CPU frequency handling after resume
1386  *
1387  *	1.) resume CPUfreq hardware support (cpufreq_driver->resume())
1388  *	2.) schedule call cpufreq_update_policy() ASAP as interrupts are
1389  *	    restored. It will verify that the current freq is in sync with
1390  *	    what we believe it to be. This is a bit later than when it
1391  *	    should be, but nonethteless it's better than calling
1392  *	    cpufreq_driver->get() here which might re-enable interrupts...
1393  */
1394 static int cpufreq_resume(struct sys_device *sysdev)
1395 {
1396 	int ret = 0;
1397 
1398 	int cpu = sysdev->id;
1399 	struct cpufreq_policy *cpu_policy;
1400 
1401 	dprintk("resuming cpu %u\n", cpu);
1402 
1403 	if (!cpu_online(cpu))
1404 		return 0;
1405 
1406 	/* we may be lax here as interrupts are off. Nonetheless
1407 	 * we need to grab the correct cpu policy, as to check
1408 	 * whether we really run on this CPU.
1409 	 */
1410 
1411 	cpu_policy = cpufreq_cpu_get(cpu);
1412 	if (!cpu_policy)
1413 		return -EINVAL;
1414 
1415 	/* only handle each CPU group once */
1416 	if (unlikely(cpu_policy->cpu != cpu))
1417 		goto fail;
1418 
1419 	if (cpufreq_driver->resume) {
1420 		ret = cpufreq_driver->resume(cpu_policy);
1421 		if (ret) {
1422 			printk(KERN_ERR "cpufreq: resume failed in ->resume "
1423 					"step on CPU %u\n", cpu_policy->cpu);
1424 			goto fail;
1425 		}
1426 	}
1427 
1428 	schedule_work(&cpu_policy->update);
1429 
1430 fail:
1431 	cpufreq_cpu_put(cpu_policy);
1432 	return ret;
1433 }
1434 
1435 static struct sysdev_driver cpufreq_sysdev_driver = {
1436 	.add		= cpufreq_add_dev,
1437 	.remove		= cpufreq_remove_dev,
1438 	.suspend	= cpufreq_suspend,
1439 	.resume		= cpufreq_resume,
1440 };
1441 
1442 
1443 /*********************************************************************
1444  *                     NOTIFIER LISTS INTERFACE                      *
1445  *********************************************************************/
1446 
1447 /**
1448  *	cpufreq_register_notifier - register a driver with cpufreq
1449  *	@nb: notifier function to register
1450  *      @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1451  *
1452  *	Add a driver to one of two lists: either a list of drivers that
1453  *      are notified about clock rate changes (once before and once after
1454  *      the transition), or a list of drivers that are notified about
1455  *      changes in cpufreq policy.
1456  *
1457  *	This function may sleep, and has the same return conditions as
1458  *	blocking_notifier_chain_register.
1459  */
1460 int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list)
1461 {
1462 	int ret;
1463 
1464 	WARN_ON(!init_cpufreq_transition_notifier_list_called);
1465 
1466 	switch (list) {
1467 	case CPUFREQ_TRANSITION_NOTIFIER:
1468 		ret = srcu_notifier_chain_register(
1469 				&cpufreq_transition_notifier_list, nb);
1470 		break;
1471 	case CPUFREQ_POLICY_NOTIFIER:
1472 		ret = blocking_notifier_chain_register(
1473 				&cpufreq_policy_notifier_list, nb);
1474 		break;
1475 	default:
1476 		ret = -EINVAL;
1477 	}
1478 
1479 	return ret;
1480 }
1481 EXPORT_SYMBOL(cpufreq_register_notifier);
1482 
1483 
1484 /**
1485  *	cpufreq_unregister_notifier - unregister a driver with cpufreq
1486  *	@nb: notifier block to be unregistered
1487  *      @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1488  *
1489  *	Remove a driver from the CPU frequency notifier list.
1490  *
1491  *	This function may sleep, and has the same return conditions as
1492  *	blocking_notifier_chain_unregister.
1493  */
1494 int cpufreq_unregister_notifier(struct notifier_block *nb, unsigned int list)
1495 {
1496 	int ret;
1497 
1498 	switch (list) {
1499 	case CPUFREQ_TRANSITION_NOTIFIER:
1500 		ret = srcu_notifier_chain_unregister(
1501 				&cpufreq_transition_notifier_list, nb);
1502 		break;
1503 	case CPUFREQ_POLICY_NOTIFIER:
1504 		ret = blocking_notifier_chain_unregister(
1505 				&cpufreq_policy_notifier_list, nb);
1506 		break;
1507 	default:
1508 		ret = -EINVAL;
1509 	}
1510 
1511 	return ret;
1512 }
1513 EXPORT_SYMBOL(cpufreq_unregister_notifier);
1514 
1515 
1516 /*********************************************************************
1517  *                              GOVERNORS                            *
1518  *********************************************************************/
1519 
1520 
1521 int __cpufreq_driver_target(struct cpufreq_policy *policy,
1522 			    unsigned int target_freq,
1523 			    unsigned int relation)
1524 {
1525 	int retval = -EINVAL;
1526 
1527 	dprintk("target for CPU %u: %u kHz, relation %u\n", policy->cpu,
1528 		target_freq, relation);
1529 	if (cpu_online(policy->cpu) && cpufreq_driver->target)
1530 		retval = cpufreq_driver->target(policy, target_freq, relation);
1531 
1532 	return retval;
1533 }
1534 EXPORT_SYMBOL_GPL(__cpufreq_driver_target);
1535 
1536 int cpufreq_driver_target(struct cpufreq_policy *policy,
1537 			  unsigned int target_freq,
1538 			  unsigned int relation)
1539 {
1540 	int ret = -EINVAL;
1541 
1542 	policy = cpufreq_cpu_get(policy->cpu);
1543 	if (!policy)
1544 		goto no_policy;
1545 
1546 	if (unlikely(lock_policy_rwsem_write(policy->cpu)))
1547 		goto fail;
1548 
1549 	ret = __cpufreq_driver_target(policy, target_freq, relation);
1550 
1551 	unlock_policy_rwsem_write(policy->cpu);
1552 
1553 fail:
1554 	cpufreq_cpu_put(policy);
1555 no_policy:
1556 	return ret;
1557 }
1558 EXPORT_SYMBOL_GPL(cpufreq_driver_target);
1559 
1560 int __cpufreq_driver_getavg(struct cpufreq_policy *policy, unsigned int cpu)
1561 {
1562 	int ret = 0;
1563 
1564 	policy = cpufreq_cpu_get(policy->cpu);
1565 	if (!policy)
1566 		return -EINVAL;
1567 
1568 	if (cpu_online(cpu) && cpufreq_driver->getavg)
1569 		ret = cpufreq_driver->getavg(policy, cpu);
1570 
1571 	cpufreq_cpu_put(policy);
1572 	return ret;
1573 }
1574 EXPORT_SYMBOL_GPL(__cpufreq_driver_getavg);
1575 
1576 /*
1577  * when "event" is CPUFREQ_GOV_LIMITS
1578  */
1579 
1580 static int __cpufreq_governor(struct cpufreq_policy *policy,
1581 					unsigned int event)
1582 {
1583 	int ret;
1584 
1585 	/* Only must be defined when default governor is known to have latency
1586 	   restrictions, like e.g. conservative or ondemand.
1587 	   That this is the case is already ensured in Kconfig
1588 	*/
1589 #ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE
1590 	struct cpufreq_governor *gov = &cpufreq_gov_performance;
1591 #else
1592 	struct cpufreq_governor *gov = NULL;
1593 #endif
1594 
1595 	if (policy->governor->max_transition_latency &&
1596 	    policy->cpuinfo.transition_latency >
1597 	    policy->governor->max_transition_latency) {
1598 		if (!gov)
1599 			return -EINVAL;
1600 		else {
1601 			printk(KERN_WARNING "%s governor failed, too long"
1602 			       " transition latency of HW, fallback"
1603 			       " to %s governor\n",
1604 			       policy->governor->name,
1605 			       gov->name);
1606 			policy->governor = gov;
1607 		}
1608 	}
1609 
1610 	if (!try_module_get(policy->governor->owner))
1611 		return -EINVAL;
1612 
1613 	dprintk("__cpufreq_governor for CPU %u, event %u\n",
1614 						policy->cpu, event);
1615 	ret = policy->governor->governor(policy, event);
1616 
1617 	/* we keep one module reference alive for
1618 			each CPU governed by this CPU */
1619 	if ((event != CPUFREQ_GOV_START) || ret)
1620 		module_put(policy->governor->owner);
1621 	if ((event == CPUFREQ_GOV_STOP) && !ret)
1622 		module_put(policy->governor->owner);
1623 
1624 	return ret;
1625 }
1626 
1627 
1628 int cpufreq_register_governor(struct cpufreq_governor *governor)
1629 {
1630 	int err;
1631 
1632 	if (!governor)
1633 		return -EINVAL;
1634 
1635 	mutex_lock(&cpufreq_governor_mutex);
1636 
1637 	err = -EBUSY;
1638 	if (__find_governor(governor->name) == NULL) {
1639 		err = 0;
1640 		list_add(&governor->governor_list, &cpufreq_governor_list);
1641 	}
1642 
1643 	mutex_unlock(&cpufreq_governor_mutex);
1644 	return err;
1645 }
1646 EXPORT_SYMBOL_GPL(cpufreq_register_governor);
1647 
1648 
1649 void cpufreq_unregister_governor(struct cpufreq_governor *governor)
1650 {
1651 #ifdef CONFIG_HOTPLUG_CPU
1652 	int cpu;
1653 #endif
1654 
1655 	if (!governor)
1656 		return;
1657 
1658 #ifdef CONFIG_HOTPLUG_CPU
1659 	for_each_present_cpu(cpu) {
1660 		if (cpu_online(cpu))
1661 			continue;
1662 		if (!strcmp(per_cpu(cpufreq_cpu_governor, cpu), governor->name))
1663 			strcpy(per_cpu(cpufreq_cpu_governor, cpu), "\0");
1664 	}
1665 #endif
1666 
1667 	mutex_lock(&cpufreq_governor_mutex);
1668 	list_del(&governor->governor_list);
1669 	mutex_unlock(&cpufreq_governor_mutex);
1670 	return;
1671 }
1672 EXPORT_SYMBOL_GPL(cpufreq_unregister_governor);
1673 
1674 
1675 
1676 /*********************************************************************
1677  *                          POLICY INTERFACE                         *
1678  *********************************************************************/
1679 
1680 /**
1681  * cpufreq_get_policy - get the current cpufreq_policy
1682  * @policy: struct cpufreq_policy into which the current cpufreq_policy
1683  *	is written
1684  *
1685  * Reads the current cpufreq policy.
1686  */
1687 int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
1688 {
1689 	struct cpufreq_policy *cpu_policy;
1690 	if (!policy)
1691 		return -EINVAL;
1692 
1693 	cpu_policy = cpufreq_cpu_get(cpu);
1694 	if (!cpu_policy)
1695 		return -EINVAL;
1696 
1697 	memcpy(policy, cpu_policy, sizeof(struct cpufreq_policy));
1698 
1699 	cpufreq_cpu_put(cpu_policy);
1700 	return 0;
1701 }
1702 EXPORT_SYMBOL(cpufreq_get_policy);
1703 
1704 
1705 /*
1706  * data   : current policy.
1707  * policy : policy to be set.
1708  */
1709 static int __cpufreq_set_policy(struct cpufreq_policy *data,
1710 				struct cpufreq_policy *policy)
1711 {
1712 	int ret = 0;
1713 
1714 	cpufreq_debug_disable_ratelimit();
1715 	dprintk("setting new policy for CPU %u: %u - %u kHz\n", policy->cpu,
1716 		policy->min, policy->max);
1717 
1718 	memcpy(&policy->cpuinfo, &data->cpuinfo,
1719 				sizeof(struct cpufreq_cpuinfo));
1720 
1721 	if (policy->min > data->max || policy->max < data->min) {
1722 		ret = -EINVAL;
1723 		goto error_out;
1724 	}
1725 
1726 	/* verify the cpu speed can be set within this limit */
1727 	ret = cpufreq_driver->verify(policy);
1728 	if (ret)
1729 		goto error_out;
1730 
1731 	/* adjust if necessary - all reasons */
1732 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1733 			CPUFREQ_ADJUST, policy);
1734 
1735 	/* adjust if necessary - hardware incompatibility*/
1736 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1737 			CPUFREQ_INCOMPATIBLE, policy);
1738 
1739 	/* verify the cpu speed can be set within this limit,
1740 	   which might be different to the first one */
1741 	ret = cpufreq_driver->verify(policy);
1742 	if (ret)
1743 		goto error_out;
1744 
1745 	/* notification of the new policy */
1746 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1747 			CPUFREQ_NOTIFY, policy);
1748 
1749 	data->min = policy->min;
1750 	data->max = policy->max;
1751 
1752 	dprintk("new min and max freqs are %u - %u kHz\n",
1753 					data->min, data->max);
1754 
1755 	if (cpufreq_driver->setpolicy) {
1756 		data->policy = policy->policy;
1757 		dprintk("setting range\n");
1758 		ret = cpufreq_driver->setpolicy(policy);
1759 	} else {
1760 		if (policy->governor != data->governor) {
1761 			/* save old, working values */
1762 			struct cpufreq_governor *old_gov = data->governor;
1763 
1764 			dprintk("governor switch\n");
1765 
1766 			/* end old governor */
1767 			if (data->governor)
1768 				__cpufreq_governor(data, CPUFREQ_GOV_STOP);
1769 
1770 			/* start new governor */
1771 			data->governor = policy->governor;
1772 			if (__cpufreq_governor(data, CPUFREQ_GOV_START)) {
1773 				/* new governor failed, so re-start old one */
1774 				dprintk("starting governor %s failed\n",
1775 							data->governor->name);
1776 				if (old_gov) {
1777 					data->governor = old_gov;
1778 					__cpufreq_governor(data,
1779 							   CPUFREQ_GOV_START);
1780 				}
1781 				ret = -EINVAL;
1782 				goto error_out;
1783 			}
1784 			/* might be a policy change, too, so fall through */
1785 		}
1786 		dprintk("governor: change or update limits\n");
1787 		__cpufreq_governor(data, CPUFREQ_GOV_LIMITS);
1788 	}
1789 
1790 error_out:
1791 	cpufreq_debug_enable_ratelimit();
1792 	return ret;
1793 }
1794 
1795 /**
1796  *	cpufreq_update_policy - re-evaluate an existing cpufreq policy
1797  *	@cpu: CPU which shall be re-evaluated
1798  *
1799  *	Usefull for policy notifiers which have different necessities
1800  *	at different times.
1801  */
1802 int cpufreq_update_policy(unsigned int cpu)
1803 {
1804 	struct cpufreq_policy *data = cpufreq_cpu_get(cpu);
1805 	struct cpufreq_policy policy;
1806 	int ret;
1807 
1808 	if (!data) {
1809 		ret = -ENODEV;
1810 		goto no_policy;
1811 	}
1812 
1813 	if (unlikely(lock_policy_rwsem_write(cpu))) {
1814 		ret = -EINVAL;
1815 		goto fail;
1816 	}
1817 
1818 	dprintk("updating policy for CPU %u\n", cpu);
1819 	memcpy(&policy, data, sizeof(struct cpufreq_policy));
1820 	policy.min = data->user_policy.min;
1821 	policy.max = data->user_policy.max;
1822 	policy.policy = data->user_policy.policy;
1823 	policy.governor = data->user_policy.governor;
1824 
1825 	/* BIOS might change freq behind our back
1826 	  -> ask driver for current freq and notify governors about a change */
1827 	if (cpufreq_driver->get) {
1828 		policy.cur = cpufreq_driver->get(cpu);
1829 		if (!data->cur) {
1830 			dprintk("Driver did not initialize current freq");
1831 			data->cur = policy.cur;
1832 		} else {
1833 			if (data->cur != policy.cur)
1834 				cpufreq_out_of_sync(cpu, data->cur,
1835 								policy.cur);
1836 		}
1837 	}
1838 
1839 	ret = __cpufreq_set_policy(data, &policy);
1840 
1841 	unlock_policy_rwsem_write(cpu);
1842 
1843 fail:
1844 	cpufreq_cpu_put(data);
1845 no_policy:
1846 	return ret;
1847 }
1848 EXPORT_SYMBOL(cpufreq_update_policy);
1849 
1850 static int __cpuinit cpufreq_cpu_callback(struct notifier_block *nfb,
1851 					unsigned long action, void *hcpu)
1852 {
1853 	unsigned int cpu = (unsigned long)hcpu;
1854 	struct sys_device *sys_dev;
1855 
1856 	sys_dev = get_cpu_sysdev(cpu);
1857 	if (sys_dev) {
1858 		switch (action) {
1859 		case CPU_ONLINE:
1860 		case CPU_ONLINE_FROZEN:
1861 			cpufreq_add_dev(sys_dev);
1862 			break;
1863 		case CPU_DOWN_PREPARE:
1864 		case CPU_DOWN_PREPARE_FROZEN:
1865 			if (unlikely(lock_policy_rwsem_write(cpu)))
1866 				BUG();
1867 
1868 			__cpufreq_remove_dev(sys_dev);
1869 			break;
1870 		case CPU_DOWN_FAILED:
1871 		case CPU_DOWN_FAILED_FROZEN:
1872 			cpufreq_add_dev(sys_dev);
1873 			break;
1874 		}
1875 	}
1876 	return NOTIFY_OK;
1877 }
1878 
1879 static struct notifier_block __refdata cpufreq_cpu_notifier = {
1880     .notifier_call = cpufreq_cpu_callback,
1881 };
1882 
1883 /*********************************************************************
1884  *               REGISTER / UNREGISTER CPUFREQ DRIVER                *
1885  *********************************************************************/
1886 
1887 /**
1888  * cpufreq_register_driver - register a CPU Frequency driver
1889  * @driver_data: A struct cpufreq_driver containing the values#
1890  * submitted by the CPU Frequency driver.
1891  *
1892  *   Registers a CPU Frequency driver to this core code. This code
1893  * returns zero on success, -EBUSY when another driver got here first
1894  * (and isn't unregistered in the meantime).
1895  *
1896  */
1897 int cpufreq_register_driver(struct cpufreq_driver *driver_data)
1898 {
1899 	unsigned long flags;
1900 	int ret;
1901 
1902 	if (!driver_data || !driver_data->verify || !driver_data->init ||
1903 	    ((!driver_data->setpolicy) && (!driver_data->target)))
1904 		return -EINVAL;
1905 
1906 	dprintk("trying to register driver %s\n", driver_data->name);
1907 
1908 	if (driver_data->setpolicy)
1909 		driver_data->flags |= CPUFREQ_CONST_LOOPS;
1910 
1911 	spin_lock_irqsave(&cpufreq_driver_lock, flags);
1912 	if (cpufreq_driver) {
1913 		spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
1914 		return -EBUSY;
1915 	}
1916 	cpufreq_driver = driver_data;
1917 	spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
1918 
1919 	ret = sysdev_driver_register(&cpu_sysdev_class,
1920 					&cpufreq_sysdev_driver);
1921 
1922 	if ((!ret) && !(cpufreq_driver->flags & CPUFREQ_STICKY)) {
1923 		int i;
1924 		ret = -ENODEV;
1925 
1926 		/* check for at least one working CPU */
1927 		for (i = 0; i < nr_cpu_ids; i++)
1928 			if (cpu_possible(i) && per_cpu(cpufreq_cpu_data, i)) {
1929 				ret = 0;
1930 				break;
1931 			}
1932 
1933 		/* if all ->init() calls failed, unregister */
1934 		if (ret) {
1935 			dprintk("no CPU initialized for driver %s\n",
1936 							driver_data->name);
1937 			sysdev_driver_unregister(&cpu_sysdev_class,
1938 						&cpufreq_sysdev_driver);
1939 
1940 			spin_lock_irqsave(&cpufreq_driver_lock, flags);
1941 			cpufreq_driver = NULL;
1942 			spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
1943 		}
1944 	}
1945 
1946 	if (!ret) {
1947 		register_hotcpu_notifier(&cpufreq_cpu_notifier);
1948 		dprintk("driver %s up and running\n", driver_data->name);
1949 		cpufreq_debug_enable_ratelimit();
1950 	}
1951 
1952 	return ret;
1953 }
1954 EXPORT_SYMBOL_GPL(cpufreq_register_driver);
1955 
1956 
1957 /**
1958  * cpufreq_unregister_driver - unregister the current CPUFreq driver
1959  *
1960  *    Unregister the current CPUFreq driver. Only call this if you have
1961  * the right to do so, i.e. if you have succeeded in initialising before!
1962  * Returns zero if successful, and -EINVAL if the cpufreq_driver is
1963  * currently not initialised.
1964  */
1965 int cpufreq_unregister_driver(struct cpufreq_driver *driver)
1966 {
1967 	unsigned long flags;
1968 
1969 	cpufreq_debug_disable_ratelimit();
1970 
1971 	if (!cpufreq_driver || (driver != cpufreq_driver)) {
1972 		cpufreq_debug_enable_ratelimit();
1973 		return -EINVAL;
1974 	}
1975 
1976 	dprintk("unregistering driver %s\n", driver->name);
1977 
1978 	sysdev_driver_unregister(&cpu_sysdev_class, &cpufreq_sysdev_driver);
1979 	unregister_hotcpu_notifier(&cpufreq_cpu_notifier);
1980 
1981 	spin_lock_irqsave(&cpufreq_driver_lock, flags);
1982 	cpufreq_driver = NULL;
1983 	spin_unlock_irqrestore(&cpufreq_driver_lock, flags);
1984 
1985 	return 0;
1986 }
1987 EXPORT_SYMBOL_GPL(cpufreq_unregister_driver);
1988 
1989 static int __init cpufreq_core_init(void)
1990 {
1991 	int cpu;
1992 
1993 	for_each_possible_cpu(cpu) {
1994 		per_cpu(cpufreq_policy_cpu, cpu) = -1;
1995 		init_rwsem(&per_cpu(cpu_policy_rwsem, cpu));
1996 	}
1997 
1998 	cpufreq_global_kobject = kobject_create_and_add("cpufreq",
1999 						&cpu_sysdev_class.kset.kobj);
2000 	BUG_ON(!cpufreq_global_kobject);
2001 
2002 	return 0;
2003 }
2004 core_initcall(cpufreq_core_init);
2005