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