xref: /linux/drivers/cpufreq/cpufreq.c (revision 5070158804b5339c71809f5e673cea1cfacd804d)
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 #define to_policy(k) container_of(k, struct cpufreq_policy, kobj)
682 #define to_attr(a) container_of(a, struct freq_attr, attr)
683 
684 static ssize_t show(struct kobject *kobj, struct attribute *attr, char *buf)
685 {
686 	struct cpufreq_policy *policy = to_policy(kobj);
687 	struct freq_attr *fattr = to_attr(attr);
688 	ssize_t ret = -EINVAL;
689 	policy = cpufreq_cpu_get_sysfs(policy->cpu);
690 	if (!policy)
691 		goto no_policy;
692 
693 	if (lock_policy_rwsem_read(policy->cpu) < 0)
694 		goto fail;
695 
696 	if (fattr->show)
697 		ret = fattr->show(policy, buf);
698 	else
699 		ret = -EIO;
700 
701 	unlock_policy_rwsem_read(policy->cpu);
702 fail:
703 	cpufreq_cpu_put_sysfs(policy);
704 no_policy:
705 	return ret;
706 }
707 
708 static ssize_t store(struct kobject *kobj, struct attribute *attr,
709 		     const char *buf, size_t count)
710 {
711 	struct cpufreq_policy *policy = to_policy(kobj);
712 	struct freq_attr *fattr = to_attr(attr);
713 	ssize_t ret = -EINVAL;
714 	policy = cpufreq_cpu_get_sysfs(policy->cpu);
715 	if (!policy)
716 		goto no_policy;
717 
718 	if (lock_policy_rwsem_write(policy->cpu) < 0)
719 		goto fail;
720 
721 	if (fattr->store)
722 		ret = fattr->store(policy, buf, count);
723 	else
724 		ret = -EIO;
725 
726 	unlock_policy_rwsem_write(policy->cpu);
727 fail:
728 	cpufreq_cpu_put_sysfs(policy);
729 no_policy:
730 	return ret;
731 }
732 
733 static void cpufreq_sysfs_release(struct kobject *kobj)
734 {
735 	struct cpufreq_policy *policy = to_policy(kobj);
736 	pr_debug("last reference is dropped\n");
737 	complete(&policy->kobj_unregister);
738 }
739 
740 static const struct sysfs_ops sysfs_ops = {
741 	.show	= show,
742 	.store	= store,
743 };
744 
745 static struct kobj_type ktype_cpufreq = {
746 	.sysfs_ops	= &sysfs_ops,
747 	.default_attrs	= default_attrs,
748 	.release	= cpufreq_sysfs_release,
749 };
750 
751 struct kobject *cpufreq_global_kobject;
752 EXPORT_SYMBOL(cpufreq_global_kobject);
753 
754 static int cpufreq_global_kobject_usage;
755 
756 int cpufreq_get_global_kobject(void)
757 {
758 	if (!cpufreq_global_kobject_usage++)
759 		return kobject_add(cpufreq_global_kobject,
760 				&cpu_subsys.dev_root->kobj, "%s", "cpufreq");
761 
762 	return 0;
763 }
764 EXPORT_SYMBOL(cpufreq_get_global_kobject);
765 
766 void cpufreq_put_global_kobject(void)
767 {
768 	if (!--cpufreq_global_kobject_usage)
769 		kobject_del(cpufreq_global_kobject);
770 }
771 EXPORT_SYMBOL(cpufreq_put_global_kobject);
772 
773 int cpufreq_sysfs_create_file(const struct attribute *attr)
774 {
775 	int ret = cpufreq_get_global_kobject();
776 
777 	if (!ret) {
778 		ret = sysfs_create_file(cpufreq_global_kobject, attr);
779 		if (ret)
780 			cpufreq_put_global_kobject();
781 	}
782 
783 	return ret;
784 }
785 EXPORT_SYMBOL(cpufreq_sysfs_create_file);
786 
787 void cpufreq_sysfs_remove_file(const struct attribute *attr)
788 {
789 	sysfs_remove_file(cpufreq_global_kobject, attr);
790 	cpufreq_put_global_kobject();
791 }
792 EXPORT_SYMBOL(cpufreq_sysfs_remove_file);
793 
794 /* symlink affected CPUs */
795 static int cpufreq_add_dev_symlink(unsigned int cpu,
796 				   struct cpufreq_policy *policy)
797 {
798 	unsigned int j;
799 	int ret = 0;
800 
801 	for_each_cpu(j, policy->cpus) {
802 		struct cpufreq_policy *managed_policy;
803 		struct device *cpu_dev;
804 
805 		if (j == cpu)
806 			continue;
807 
808 		pr_debug("CPU %u already managed, adding link\n", j);
809 		managed_policy = cpufreq_cpu_get(cpu);
810 		cpu_dev = get_cpu_device(j);
811 		ret = sysfs_create_link(&cpu_dev->kobj, &policy->kobj,
812 					"cpufreq");
813 		if (ret) {
814 			cpufreq_cpu_put(managed_policy);
815 			return ret;
816 		}
817 	}
818 	return ret;
819 }
820 
821 static int cpufreq_add_dev_interface(unsigned int cpu,
822 				     struct cpufreq_policy *policy,
823 				     struct device *dev)
824 {
825 	struct cpufreq_policy new_policy;
826 	struct freq_attr **drv_attr;
827 	unsigned long flags;
828 	int ret = 0;
829 	unsigned int j;
830 
831 	/* prepare interface data */
832 	ret = kobject_init_and_add(&policy->kobj, &ktype_cpufreq,
833 				   &dev->kobj, "cpufreq");
834 	if (ret)
835 		return ret;
836 
837 	/* set up files for this cpu device */
838 	drv_attr = cpufreq_driver->attr;
839 	while ((drv_attr) && (*drv_attr)) {
840 		ret = sysfs_create_file(&policy->kobj, &((*drv_attr)->attr));
841 		if (ret)
842 			goto err_out_kobj_put;
843 		drv_attr++;
844 	}
845 	if (cpufreq_driver->get) {
846 		ret = sysfs_create_file(&policy->kobj, &cpuinfo_cur_freq.attr);
847 		if (ret)
848 			goto err_out_kobj_put;
849 	}
850 	if (cpufreq_driver->target) {
851 		ret = sysfs_create_file(&policy->kobj, &scaling_cur_freq.attr);
852 		if (ret)
853 			goto err_out_kobj_put;
854 	}
855 	if (cpufreq_driver->bios_limit) {
856 		ret = sysfs_create_file(&policy->kobj, &bios_limit.attr);
857 		if (ret)
858 			goto err_out_kobj_put;
859 	}
860 
861 	write_lock_irqsave(&cpufreq_driver_lock, flags);
862 	for_each_cpu(j, policy->cpus) {
863 		per_cpu(cpufreq_cpu_data, j) = policy;
864 		per_cpu(cpufreq_policy_cpu, j) = policy->cpu;
865 	}
866 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
867 
868 	ret = cpufreq_add_dev_symlink(cpu, policy);
869 	if (ret)
870 		goto err_out_kobj_put;
871 
872 	memcpy(&new_policy, policy, sizeof(struct cpufreq_policy));
873 	/* assure that the starting sequence is run in __cpufreq_set_policy */
874 	policy->governor = NULL;
875 
876 	/* set default policy */
877 	ret = __cpufreq_set_policy(policy, &new_policy);
878 	policy->user_policy.policy = policy->policy;
879 	policy->user_policy.governor = policy->governor;
880 
881 	if (ret) {
882 		pr_debug("setting policy failed\n");
883 		if (cpufreq_driver->exit)
884 			cpufreq_driver->exit(policy);
885 	}
886 	return ret;
887 
888 err_out_kobj_put:
889 	kobject_put(&policy->kobj);
890 	wait_for_completion(&policy->kobj_unregister);
891 	return ret;
892 }
893 
894 #ifdef CONFIG_HOTPLUG_CPU
895 static int cpufreq_add_policy_cpu(unsigned int cpu, unsigned int sibling,
896 				  struct device *dev)
897 {
898 	struct cpufreq_policy *policy;
899 	int ret = 0, has_target = !!cpufreq_driver->target;
900 	unsigned long flags;
901 
902 	policy = cpufreq_cpu_get(sibling);
903 	WARN_ON(!policy);
904 
905 	if (has_target)
906 		__cpufreq_governor(policy, CPUFREQ_GOV_STOP);
907 
908 	lock_policy_rwsem_write(sibling);
909 
910 	write_lock_irqsave(&cpufreq_driver_lock, flags);
911 
912 	cpumask_set_cpu(cpu, policy->cpus);
913 	per_cpu(cpufreq_policy_cpu, cpu) = policy->cpu;
914 	per_cpu(cpufreq_cpu_data, cpu) = policy;
915 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
916 
917 	unlock_policy_rwsem_write(sibling);
918 
919 	if (has_target) {
920 		__cpufreq_governor(policy, CPUFREQ_GOV_START);
921 		__cpufreq_governor(policy, CPUFREQ_GOV_LIMITS);
922 	}
923 
924 	ret = sysfs_create_link(&dev->kobj, &policy->kobj, "cpufreq");
925 	if (ret) {
926 		cpufreq_cpu_put(policy);
927 		return ret;
928 	}
929 
930 	return 0;
931 }
932 #endif
933 
934 /**
935  * cpufreq_add_dev - add a CPU device
936  *
937  * Adds the cpufreq interface for a CPU device.
938  *
939  * The Oracle says: try running cpufreq registration/unregistration concurrently
940  * with with cpu hotplugging and all hell will break loose. Tried to clean this
941  * mess up, but more thorough testing is needed. - Mathieu
942  */
943 static int cpufreq_add_dev(struct device *dev, struct subsys_interface *sif)
944 {
945 	unsigned int j, cpu = dev->id;
946 	int ret = -ENOMEM;
947 	struct cpufreq_policy *policy;
948 	unsigned long flags;
949 #ifdef CONFIG_HOTPLUG_CPU
950 	struct cpufreq_governor *gov;
951 	int sibling;
952 #endif
953 
954 	if (cpu_is_offline(cpu))
955 		return 0;
956 
957 	pr_debug("adding CPU %u\n", cpu);
958 
959 #ifdef CONFIG_SMP
960 	/* check whether a different CPU already registered this
961 	 * CPU because it is in the same boat. */
962 	policy = cpufreq_cpu_get(cpu);
963 	if (unlikely(policy)) {
964 		cpufreq_cpu_put(policy);
965 		return 0;
966 	}
967 
968 #ifdef CONFIG_HOTPLUG_CPU
969 	/* Check if this cpu was hot-unplugged earlier and has siblings */
970 	read_lock_irqsave(&cpufreq_driver_lock, flags);
971 	for_each_online_cpu(sibling) {
972 		struct cpufreq_policy *cp = per_cpu(cpufreq_cpu_data, sibling);
973 		if (cp && cpumask_test_cpu(cpu, cp->related_cpus)) {
974 			read_unlock_irqrestore(&cpufreq_driver_lock, flags);
975 			return cpufreq_add_policy_cpu(cpu, sibling, dev);
976 		}
977 	}
978 	read_unlock_irqrestore(&cpufreq_driver_lock, flags);
979 #endif
980 #endif
981 
982 	if (!try_module_get(cpufreq_driver->owner)) {
983 		ret = -EINVAL;
984 		goto module_out;
985 	}
986 
987 	policy = kzalloc(sizeof(struct cpufreq_policy), GFP_KERNEL);
988 	if (!policy)
989 		goto nomem_out;
990 
991 	if (!alloc_cpumask_var(&policy->cpus, GFP_KERNEL))
992 		goto err_free_policy;
993 
994 	if (!zalloc_cpumask_var(&policy->related_cpus, GFP_KERNEL))
995 		goto err_free_cpumask;
996 
997 	policy->cpu = cpu;
998 	policy->governor = CPUFREQ_DEFAULT_GOVERNOR;
999 	cpumask_copy(policy->cpus, cpumask_of(cpu));
1000 
1001 	/* Initially set CPU itself as the policy_cpu */
1002 	per_cpu(cpufreq_policy_cpu, cpu) = cpu;
1003 
1004 	init_completion(&policy->kobj_unregister);
1005 	INIT_WORK(&policy->update, handle_update);
1006 
1007 	/* call driver. From then on the cpufreq must be able
1008 	 * to accept all calls to ->verify and ->setpolicy for this CPU
1009 	 */
1010 	ret = cpufreq_driver->init(policy);
1011 	if (ret) {
1012 		pr_debug("initialization failed\n");
1013 		goto err_set_policy_cpu;
1014 	}
1015 
1016 	/* related cpus should atleast have policy->cpus */
1017 	cpumask_or(policy->related_cpus, policy->related_cpus, policy->cpus);
1018 
1019 	/*
1020 	 * affected cpus must always be the one, which are online. We aren't
1021 	 * managing offline cpus here.
1022 	 */
1023 	cpumask_and(policy->cpus, policy->cpus, cpu_online_mask);
1024 
1025 	policy->user_policy.min = policy->min;
1026 	policy->user_policy.max = policy->max;
1027 
1028 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1029 				     CPUFREQ_START, policy);
1030 
1031 #ifdef CONFIG_HOTPLUG_CPU
1032 	gov = __find_governor(per_cpu(cpufreq_cpu_governor, cpu));
1033 	if (gov) {
1034 		policy->governor = gov;
1035 		pr_debug("Restoring governor %s for cpu %d\n",
1036 		       policy->governor->name, cpu);
1037 	}
1038 #endif
1039 
1040 	ret = cpufreq_add_dev_interface(cpu, policy, dev);
1041 	if (ret)
1042 		goto err_out_unregister;
1043 
1044 	kobject_uevent(&policy->kobj, KOBJ_ADD);
1045 	module_put(cpufreq_driver->owner);
1046 	pr_debug("initialization complete\n");
1047 
1048 	return 0;
1049 
1050 err_out_unregister:
1051 	write_lock_irqsave(&cpufreq_driver_lock, flags);
1052 	for_each_cpu(j, policy->cpus)
1053 		per_cpu(cpufreq_cpu_data, j) = NULL;
1054 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1055 
1056 	kobject_put(&policy->kobj);
1057 	wait_for_completion(&policy->kobj_unregister);
1058 
1059 err_set_policy_cpu:
1060 	per_cpu(cpufreq_policy_cpu, cpu) = -1;
1061 	free_cpumask_var(policy->related_cpus);
1062 err_free_cpumask:
1063 	free_cpumask_var(policy->cpus);
1064 err_free_policy:
1065 	kfree(policy);
1066 nomem_out:
1067 	module_put(cpufreq_driver->owner);
1068 module_out:
1069 	return ret;
1070 }
1071 
1072 static void update_policy_cpu(struct cpufreq_policy *policy, unsigned int cpu)
1073 {
1074 	int j;
1075 
1076 	policy->last_cpu = policy->cpu;
1077 	policy->cpu = cpu;
1078 
1079 	for_each_cpu(j, policy->cpus)
1080 		per_cpu(cpufreq_policy_cpu, j) = cpu;
1081 
1082 #ifdef CONFIG_CPU_FREQ_TABLE
1083 	cpufreq_frequency_table_update_policy_cpu(policy);
1084 #endif
1085 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1086 			CPUFREQ_UPDATE_POLICY_CPU, policy);
1087 }
1088 
1089 /**
1090  * __cpufreq_remove_dev - remove a CPU device
1091  *
1092  * Removes the cpufreq interface for a CPU device.
1093  * Caller should already have policy_rwsem in write mode for this CPU.
1094  * This routine frees the rwsem before returning.
1095  */
1096 static int __cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
1097 {
1098 	unsigned int cpu = dev->id, ret, cpus;
1099 	unsigned long flags;
1100 	struct cpufreq_policy *data;
1101 	struct kobject *kobj;
1102 	struct completion *cmp;
1103 	struct device *cpu_dev;
1104 
1105 	pr_debug("%s: unregistering CPU %u\n", __func__, cpu);
1106 
1107 	write_lock_irqsave(&cpufreq_driver_lock, flags);
1108 
1109 	data = per_cpu(cpufreq_cpu_data, cpu);
1110 	per_cpu(cpufreq_cpu_data, cpu) = NULL;
1111 
1112 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1113 
1114 	if (!data) {
1115 		pr_debug("%s: No cpu_data found\n", __func__);
1116 		return -EINVAL;
1117 	}
1118 
1119 	if (cpufreq_driver->target)
1120 		__cpufreq_governor(data, CPUFREQ_GOV_STOP);
1121 
1122 #ifdef CONFIG_HOTPLUG_CPU
1123 	if (!cpufreq_driver->setpolicy)
1124 		strncpy(per_cpu(cpufreq_cpu_governor, cpu),
1125 			data->governor->name, CPUFREQ_NAME_LEN);
1126 #endif
1127 
1128 	WARN_ON(lock_policy_rwsem_write(cpu));
1129 	cpus = cpumask_weight(data->cpus);
1130 
1131 	if (cpus > 1)
1132 		cpumask_clear_cpu(cpu, data->cpus);
1133 	unlock_policy_rwsem_write(cpu);
1134 
1135 	if (cpu != data->cpu) {
1136 		sysfs_remove_link(&dev->kobj, "cpufreq");
1137 	} else if (cpus > 1) {
1138 		/* first sibling now owns the new sysfs dir */
1139 		cpu_dev = get_cpu_device(cpumask_first(data->cpus));
1140 		sysfs_remove_link(&cpu_dev->kobj, "cpufreq");
1141 		ret = kobject_move(&data->kobj, &cpu_dev->kobj);
1142 		if (ret) {
1143 			pr_err("%s: Failed to move kobj: %d", __func__, ret);
1144 
1145 			WARN_ON(lock_policy_rwsem_write(cpu));
1146 			cpumask_set_cpu(cpu, data->cpus);
1147 
1148 			write_lock_irqsave(&cpufreq_driver_lock, flags);
1149 			per_cpu(cpufreq_cpu_data, cpu) = data;
1150 			write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1151 
1152 			unlock_policy_rwsem_write(cpu);
1153 
1154 			ret = sysfs_create_link(&cpu_dev->kobj, &data->kobj,
1155 					"cpufreq");
1156 			return -EINVAL;
1157 		}
1158 
1159 		WARN_ON(lock_policy_rwsem_write(cpu));
1160 		update_policy_cpu(data, cpu_dev->id);
1161 		unlock_policy_rwsem_write(cpu);
1162 		pr_debug("%s: policy Kobject moved to cpu: %d from: %d\n",
1163 				__func__, cpu_dev->id, cpu);
1164 	}
1165 
1166 	if ((cpus == 1) && (cpufreq_driver->target))
1167 		__cpufreq_governor(data, CPUFREQ_GOV_POLICY_EXIT);
1168 
1169 	pr_debug("%s: removing link, cpu: %d\n", __func__, cpu);
1170 	cpufreq_cpu_put(data);
1171 
1172 	/* If cpu is last user of policy, free policy */
1173 	if (cpus == 1) {
1174 		lock_policy_rwsem_read(cpu);
1175 		kobj = &data->kobj;
1176 		cmp = &data->kobj_unregister;
1177 		unlock_policy_rwsem_read(cpu);
1178 		kobject_put(kobj);
1179 
1180 		/* we need to make sure that the underlying kobj is actually
1181 		 * not referenced anymore by anybody before we proceed with
1182 		 * unloading.
1183 		 */
1184 		pr_debug("waiting for dropping of refcount\n");
1185 		wait_for_completion(cmp);
1186 		pr_debug("wait complete\n");
1187 
1188 		if (cpufreq_driver->exit)
1189 			cpufreq_driver->exit(data);
1190 
1191 		free_cpumask_var(data->related_cpus);
1192 		free_cpumask_var(data->cpus);
1193 		kfree(data);
1194 	} else if (cpufreq_driver->target) {
1195 		__cpufreq_governor(data, CPUFREQ_GOV_START);
1196 		__cpufreq_governor(data, CPUFREQ_GOV_LIMITS);
1197 	}
1198 
1199 	per_cpu(cpufreq_policy_cpu, cpu) = -1;
1200 	return 0;
1201 }
1202 
1203 
1204 static int cpufreq_remove_dev(struct device *dev, struct subsys_interface *sif)
1205 {
1206 	unsigned int cpu = dev->id;
1207 	int retval;
1208 
1209 	if (cpu_is_offline(cpu))
1210 		return 0;
1211 
1212 	retval = __cpufreq_remove_dev(dev, sif);
1213 	return retval;
1214 }
1215 
1216 
1217 static void handle_update(struct work_struct *work)
1218 {
1219 	struct cpufreq_policy *policy =
1220 		container_of(work, struct cpufreq_policy, update);
1221 	unsigned int cpu = policy->cpu;
1222 	pr_debug("handle_update for cpu %u called\n", cpu);
1223 	cpufreq_update_policy(cpu);
1224 }
1225 
1226 /**
1227  *	cpufreq_out_of_sync - If actual and saved CPU frequency differs, we're in deep trouble.
1228  *	@cpu: cpu number
1229  *	@old_freq: CPU frequency the kernel thinks the CPU runs at
1230  *	@new_freq: CPU frequency the CPU actually runs at
1231  *
1232  *	We adjust to current frequency first, and need to clean up later.
1233  *	So either call to cpufreq_update_policy() or schedule handle_update()).
1234  */
1235 static void cpufreq_out_of_sync(unsigned int cpu, unsigned int old_freq,
1236 				unsigned int new_freq)
1237 {
1238 	struct cpufreq_policy *policy;
1239 	struct cpufreq_freqs freqs;
1240 	unsigned long flags;
1241 
1242 
1243 	pr_debug("Warning: CPU frequency out of sync: cpufreq and timing "
1244 	       "core thinks of %u, is %u kHz.\n", old_freq, new_freq);
1245 
1246 	freqs.old = old_freq;
1247 	freqs.new = new_freq;
1248 
1249 	read_lock_irqsave(&cpufreq_driver_lock, flags);
1250 	policy = per_cpu(cpufreq_cpu_data, cpu);
1251 	read_unlock_irqrestore(&cpufreq_driver_lock, flags);
1252 
1253 	cpufreq_notify_transition(policy, &freqs, CPUFREQ_PRECHANGE);
1254 	cpufreq_notify_transition(policy, &freqs, CPUFREQ_POSTCHANGE);
1255 }
1256 
1257 
1258 /**
1259  * cpufreq_quick_get - get the CPU frequency (in kHz) from policy->cur
1260  * @cpu: CPU number
1261  *
1262  * This is the last known freq, without actually getting it from the driver.
1263  * Return value will be same as what is shown in scaling_cur_freq in sysfs.
1264  */
1265 unsigned int cpufreq_quick_get(unsigned int cpu)
1266 {
1267 	struct cpufreq_policy *policy;
1268 	unsigned int ret_freq = 0;
1269 
1270 	if (cpufreq_driver && cpufreq_driver->setpolicy && cpufreq_driver->get)
1271 		return cpufreq_driver->get(cpu);
1272 
1273 	policy = cpufreq_cpu_get(cpu);
1274 	if (policy) {
1275 		ret_freq = policy->cur;
1276 		cpufreq_cpu_put(policy);
1277 	}
1278 
1279 	return ret_freq;
1280 }
1281 EXPORT_SYMBOL(cpufreq_quick_get);
1282 
1283 /**
1284  * cpufreq_quick_get_max - get the max reported CPU frequency for this CPU
1285  * @cpu: CPU number
1286  *
1287  * Just return the max possible frequency for a given CPU.
1288  */
1289 unsigned int cpufreq_quick_get_max(unsigned int cpu)
1290 {
1291 	struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1292 	unsigned int ret_freq = 0;
1293 
1294 	if (policy) {
1295 		ret_freq = policy->max;
1296 		cpufreq_cpu_put(policy);
1297 	}
1298 
1299 	return ret_freq;
1300 }
1301 EXPORT_SYMBOL(cpufreq_quick_get_max);
1302 
1303 
1304 static unsigned int __cpufreq_get(unsigned int cpu)
1305 {
1306 	struct cpufreq_policy *policy = per_cpu(cpufreq_cpu_data, cpu);
1307 	unsigned int ret_freq = 0;
1308 
1309 	if (!cpufreq_driver->get)
1310 		return ret_freq;
1311 
1312 	ret_freq = cpufreq_driver->get(cpu);
1313 
1314 	if (ret_freq && policy->cur &&
1315 		!(cpufreq_driver->flags & CPUFREQ_CONST_LOOPS)) {
1316 		/* verify no discrepancy between actual and
1317 					saved value exists */
1318 		if (unlikely(ret_freq != policy->cur)) {
1319 			cpufreq_out_of_sync(cpu, policy->cur, ret_freq);
1320 			schedule_work(&policy->update);
1321 		}
1322 	}
1323 
1324 	return ret_freq;
1325 }
1326 
1327 /**
1328  * cpufreq_get - get the current CPU frequency (in kHz)
1329  * @cpu: CPU number
1330  *
1331  * Get the CPU current (static) CPU frequency
1332  */
1333 unsigned int cpufreq_get(unsigned int cpu)
1334 {
1335 	unsigned int ret_freq = 0;
1336 	struct cpufreq_policy *policy = cpufreq_cpu_get(cpu);
1337 
1338 	if (!policy)
1339 		goto out;
1340 
1341 	if (unlikely(lock_policy_rwsem_read(cpu)))
1342 		goto out_policy;
1343 
1344 	ret_freq = __cpufreq_get(cpu);
1345 
1346 	unlock_policy_rwsem_read(cpu);
1347 
1348 out_policy:
1349 	cpufreq_cpu_put(policy);
1350 out:
1351 	return ret_freq;
1352 }
1353 EXPORT_SYMBOL(cpufreq_get);
1354 
1355 static struct subsys_interface cpufreq_interface = {
1356 	.name		= "cpufreq",
1357 	.subsys		= &cpu_subsys,
1358 	.add_dev	= cpufreq_add_dev,
1359 	.remove_dev	= cpufreq_remove_dev,
1360 };
1361 
1362 
1363 /**
1364  * cpufreq_bp_suspend - Prepare the boot CPU for system suspend.
1365  *
1366  * This function is only executed for the boot processor.  The other CPUs
1367  * have been put offline by means of CPU hotplug.
1368  */
1369 static int cpufreq_bp_suspend(void)
1370 {
1371 	int ret = 0;
1372 
1373 	int cpu = smp_processor_id();
1374 	struct cpufreq_policy *cpu_policy;
1375 
1376 	pr_debug("suspending cpu %u\n", cpu);
1377 
1378 	/* If there's no policy for the boot CPU, we have nothing to do. */
1379 	cpu_policy = cpufreq_cpu_get(cpu);
1380 	if (!cpu_policy)
1381 		return 0;
1382 
1383 	if (cpufreq_driver->suspend) {
1384 		ret = cpufreq_driver->suspend(cpu_policy);
1385 		if (ret)
1386 			printk(KERN_ERR "cpufreq: suspend failed in ->suspend "
1387 					"step on CPU %u\n", cpu_policy->cpu);
1388 	}
1389 
1390 	cpufreq_cpu_put(cpu_policy);
1391 	return ret;
1392 }
1393 
1394 /**
1395  * cpufreq_bp_resume - Restore proper frequency handling of the boot CPU.
1396  *
1397  *	1.) resume CPUfreq hardware support (cpufreq_driver->resume())
1398  *	2.) schedule call cpufreq_update_policy() ASAP as interrupts are
1399  *	    restored. It will verify that the current freq is in sync with
1400  *	    what we believe it to be. This is a bit later than when it
1401  *	    should be, but nonethteless it's better than calling
1402  *	    cpufreq_driver->get() here which might re-enable interrupts...
1403  *
1404  * This function is only executed for the boot CPU.  The other CPUs have not
1405  * been turned on yet.
1406  */
1407 static void cpufreq_bp_resume(void)
1408 {
1409 	int ret = 0;
1410 
1411 	int cpu = smp_processor_id();
1412 	struct cpufreq_policy *cpu_policy;
1413 
1414 	pr_debug("resuming cpu %u\n", cpu);
1415 
1416 	/* If there's no policy for the boot CPU, we have nothing to do. */
1417 	cpu_policy = cpufreq_cpu_get(cpu);
1418 	if (!cpu_policy)
1419 		return;
1420 
1421 	if (cpufreq_driver->resume) {
1422 		ret = cpufreq_driver->resume(cpu_policy);
1423 		if (ret) {
1424 			printk(KERN_ERR "cpufreq: resume failed in ->resume "
1425 					"step on CPU %u\n", cpu_policy->cpu);
1426 			goto fail;
1427 		}
1428 	}
1429 
1430 	schedule_work(&cpu_policy->update);
1431 
1432 fail:
1433 	cpufreq_cpu_put(cpu_policy);
1434 }
1435 
1436 static struct syscore_ops cpufreq_syscore_ops = {
1437 	.suspend	= cpufreq_bp_suspend,
1438 	.resume		= cpufreq_bp_resume,
1439 };
1440 
1441 /**
1442  *	cpufreq_get_current_driver - return current driver's name
1443  *
1444  *	Return the name string of the currently loaded cpufreq driver
1445  *	or NULL, if none.
1446  */
1447 const char *cpufreq_get_current_driver(void)
1448 {
1449 	if (cpufreq_driver)
1450 		return cpufreq_driver->name;
1451 
1452 	return NULL;
1453 }
1454 EXPORT_SYMBOL_GPL(cpufreq_get_current_driver);
1455 
1456 /*********************************************************************
1457  *                     NOTIFIER LISTS INTERFACE                      *
1458  *********************************************************************/
1459 
1460 /**
1461  *	cpufreq_register_notifier - register a driver with cpufreq
1462  *	@nb: notifier function to register
1463  *      @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1464  *
1465  *	Add a driver to one of two lists: either a list of drivers that
1466  *      are notified about clock rate changes (once before and once after
1467  *      the transition), or a list of drivers that are notified about
1468  *      changes in cpufreq policy.
1469  *
1470  *	This function may sleep, and has the same return conditions as
1471  *	blocking_notifier_chain_register.
1472  */
1473 int cpufreq_register_notifier(struct notifier_block *nb, unsigned int list)
1474 {
1475 	int ret;
1476 
1477 	if (cpufreq_disabled())
1478 		return -EINVAL;
1479 
1480 	WARN_ON(!init_cpufreq_transition_notifier_list_called);
1481 
1482 	switch (list) {
1483 	case CPUFREQ_TRANSITION_NOTIFIER:
1484 		ret = srcu_notifier_chain_register(
1485 				&cpufreq_transition_notifier_list, nb);
1486 		break;
1487 	case CPUFREQ_POLICY_NOTIFIER:
1488 		ret = blocking_notifier_chain_register(
1489 				&cpufreq_policy_notifier_list, nb);
1490 		break;
1491 	default:
1492 		ret = -EINVAL;
1493 	}
1494 
1495 	return ret;
1496 }
1497 EXPORT_SYMBOL(cpufreq_register_notifier);
1498 
1499 
1500 /**
1501  *	cpufreq_unregister_notifier - unregister a driver with cpufreq
1502  *	@nb: notifier block to be unregistered
1503  *      @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER
1504  *
1505  *	Remove a driver from the CPU frequency notifier list.
1506  *
1507  *	This function may sleep, and has the same return conditions as
1508  *	blocking_notifier_chain_unregister.
1509  */
1510 int cpufreq_unregister_notifier(struct notifier_block *nb, unsigned int list)
1511 {
1512 	int ret;
1513 
1514 	if (cpufreq_disabled())
1515 		return -EINVAL;
1516 
1517 	switch (list) {
1518 	case CPUFREQ_TRANSITION_NOTIFIER:
1519 		ret = srcu_notifier_chain_unregister(
1520 				&cpufreq_transition_notifier_list, nb);
1521 		break;
1522 	case CPUFREQ_POLICY_NOTIFIER:
1523 		ret = blocking_notifier_chain_unregister(
1524 				&cpufreq_policy_notifier_list, nb);
1525 		break;
1526 	default:
1527 		ret = -EINVAL;
1528 	}
1529 
1530 	return ret;
1531 }
1532 EXPORT_SYMBOL(cpufreq_unregister_notifier);
1533 
1534 
1535 /*********************************************************************
1536  *                              GOVERNORS                            *
1537  *********************************************************************/
1538 
1539 
1540 int __cpufreq_driver_target(struct cpufreq_policy *policy,
1541 			    unsigned int target_freq,
1542 			    unsigned int relation)
1543 {
1544 	int retval = -EINVAL;
1545 	unsigned int old_target_freq = target_freq;
1546 
1547 	if (cpufreq_disabled())
1548 		return -ENODEV;
1549 
1550 	/* Make sure that target_freq is within supported range */
1551 	if (target_freq > policy->max)
1552 		target_freq = policy->max;
1553 	if (target_freq < policy->min)
1554 		target_freq = policy->min;
1555 
1556 	pr_debug("target for CPU %u: %u kHz, relation %u, requested %u kHz\n",
1557 			policy->cpu, target_freq, relation, old_target_freq);
1558 
1559 	if (target_freq == policy->cur)
1560 		return 0;
1561 
1562 	if (cpufreq_driver->target)
1563 		retval = cpufreq_driver->target(policy, target_freq, relation);
1564 
1565 	return retval;
1566 }
1567 EXPORT_SYMBOL_GPL(__cpufreq_driver_target);
1568 
1569 int cpufreq_driver_target(struct cpufreq_policy *policy,
1570 			  unsigned int target_freq,
1571 			  unsigned int relation)
1572 {
1573 	int ret = -EINVAL;
1574 
1575 	policy = cpufreq_cpu_get(policy->cpu);
1576 	if (!policy)
1577 		goto no_policy;
1578 
1579 	if (unlikely(lock_policy_rwsem_write(policy->cpu)))
1580 		goto fail;
1581 
1582 	ret = __cpufreq_driver_target(policy, target_freq, relation);
1583 
1584 	unlock_policy_rwsem_write(policy->cpu);
1585 
1586 fail:
1587 	cpufreq_cpu_put(policy);
1588 no_policy:
1589 	return ret;
1590 }
1591 EXPORT_SYMBOL_GPL(cpufreq_driver_target);
1592 
1593 int __cpufreq_driver_getavg(struct cpufreq_policy *policy, unsigned int cpu)
1594 {
1595 	int ret = 0;
1596 
1597 	if (cpufreq_disabled())
1598 		return ret;
1599 
1600 	if (!cpufreq_driver->getavg)
1601 		return 0;
1602 
1603 	policy = cpufreq_cpu_get(policy->cpu);
1604 	if (!policy)
1605 		return -EINVAL;
1606 
1607 	ret = cpufreq_driver->getavg(policy, cpu);
1608 
1609 	cpufreq_cpu_put(policy);
1610 	return ret;
1611 }
1612 EXPORT_SYMBOL_GPL(__cpufreq_driver_getavg);
1613 
1614 /*
1615  * when "event" is CPUFREQ_GOV_LIMITS
1616  */
1617 
1618 static int __cpufreq_governor(struct cpufreq_policy *policy,
1619 					unsigned int event)
1620 {
1621 	int ret;
1622 
1623 	/* Only must be defined when default governor is known to have latency
1624 	   restrictions, like e.g. conservative or ondemand.
1625 	   That this is the case is already ensured in Kconfig
1626 	*/
1627 #ifdef CONFIG_CPU_FREQ_GOV_PERFORMANCE
1628 	struct cpufreq_governor *gov = &cpufreq_gov_performance;
1629 #else
1630 	struct cpufreq_governor *gov = NULL;
1631 #endif
1632 
1633 	if (policy->governor->max_transition_latency &&
1634 	    policy->cpuinfo.transition_latency >
1635 	    policy->governor->max_transition_latency) {
1636 		if (!gov)
1637 			return -EINVAL;
1638 		else {
1639 			printk(KERN_WARNING "%s governor failed, too long"
1640 			       " transition latency of HW, fallback"
1641 			       " to %s governor\n",
1642 			       policy->governor->name,
1643 			       gov->name);
1644 			policy->governor = gov;
1645 		}
1646 	}
1647 
1648 	if (!try_module_get(policy->governor->owner))
1649 		return -EINVAL;
1650 
1651 	pr_debug("__cpufreq_governor for CPU %u, event %u\n",
1652 						policy->cpu, event);
1653 	ret = policy->governor->governor(policy, event);
1654 
1655 	if (!ret) {
1656 		if (event == CPUFREQ_GOV_POLICY_INIT)
1657 			policy->governor->initialized++;
1658 		else if (event == CPUFREQ_GOV_POLICY_EXIT)
1659 			policy->governor->initialized--;
1660 	}
1661 
1662 	/* we keep one module reference alive for
1663 			each CPU governed by this CPU */
1664 	if ((event != CPUFREQ_GOV_START) || ret)
1665 		module_put(policy->governor->owner);
1666 	if ((event == CPUFREQ_GOV_STOP) && !ret)
1667 		module_put(policy->governor->owner);
1668 
1669 	return ret;
1670 }
1671 
1672 
1673 int cpufreq_register_governor(struct cpufreq_governor *governor)
1674 {
1675 	int err;
1676 
1677 	if (!governor)
1678 		return -EINVAL;
1679 
1680 	if (cpufreq_disabled())
1681 		return -ENODEV;
1682 
1683 	mutex_lock(&cpufreq_governor_mutex);
1684 
1685 	governor->initialized = 0;
1686 	err = -EBUSY;
1687 	if (__find_governor(governor->name) == NULL) {
1688 		err = 0;
1689 		list_add(&governor->governor_list, &cpufreq_governor_list);
1690 	}
1691 
1692 	mutex_unlock(&cpufreq_governor_mutex);
1693 	return err;
1694 }
1695 EXPORT_SYMBOL_GPL(cpufreq_register_governor);
1696 
1697 
1698 void cpufreq_unregister_governor(struct cpufreq_governor *governor)
1699 {
1700 #ifdef CONFIG_HOTPLUG_CPU
1701 	int cpu;
1702 #endif
1703 
1704 	if (!governor)
1705 		return;
1706 
1707 	if (cpufreq_disabled())
1708 		return;
1709 
1710 #ifdef CONFIG_HOTPLUG_CPU
1711 	for_each_present_cpu(cpu) {
1712 		if (cpu_online(cpu))
1713 			continue;
1714 		if (!strcmp(per_cpu(cpufreq_cpu_governor, cpu), governor->name))
1715 			strcpy(per_cpu(cpufreq_cpu_governor, cpu), "\0");
1716 	}
1717 #endif
1718 
1719 	mutex_lock(&cpufreq_governor_mutex);
1720 	list_del(&governor->governor_list);
1721 	mutex_unlock(&cpufreq_governor_mutex);
1722 	return;
1723 }
1724 EXPORT_SYMBOL_GPL(cpufreq_unregister_governor);
1725 
1726 
1727 
1728 /*********************************************************************
1729  *                          POLICY INTERFACE                         *
1730  *********************************************************************/
1731 
1732 /**
1733  * cpufreq_get_policy - get the current cpufreq_policy
1734  * @policy: struct cpufreq_policy into which the current cpufreq_policy
1735  *	is written
1736  *
1737  * Reads the current cpufreq policy.
1738  */
1739 int cpufreq_get_policy(struct cpufreq_policy *policy, unsigned int cpu)
1740 {
1741 	struct cpufreq_policy *cpu_policy;
1742 	if (!policy)
1743 		return -EINVAL;
1744 
1745 	cpu_policy = cpufreq_cpu_get(cpu);
1746 	if (!cpu_policy)
1747 		return -EINVAL;
1748 
1749 	memcpy(policy, cpu_policy, sizeof(struct cpufreq_policy));
1750 
1751 	cpufreq_cpu_put(cpu_policy);
1752 	return 0;
1753 }
1754 EXPORT_SYMBOL(cpufreq_get_policy);
1755 
1756 
1757 /*
1758  * data   : current policy.
1759  * policy : policy to be set.
1760  */
1761 static int __cpufreq_set_policy(struct cpufreq_policy *data,
1762 				struct cpufreq_policy *policy)
1763 {
1764 	int ret = 0, failed = 1;
1765 
1766 	pr_debug("setting new policy for CPU %u: %u - %u kHz\n", policy->cpu,
1767 		policy->min, policy->max);
1768 
1769 	memcpy(&policy->cpuinfo, &data->cpuinfo,
1770 				sizeof(struct cpufreq_cpuinfo));
1771 
1772 	if (policy->min > data->max || policy->max < data->min) {
1773 		ret = -EINVAL;
1774 		goto error_out;
1775 	}
1776 
1777 	/* verify the cpu speed can be set within this limit */
1778 	ret = cpufreq_driver->verify(policy);
1779 	if (ret)
1780 		goto error_out;
1781 
1782 	/* adjust if necessary - all reasons */
1783 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1784 			CPUFREQ_ADJUST, policy);
1785 
1786 	/* adjust if necessary - hardware incompatibility*/
1787 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1788 			CPUFREQ_INCOMPATIBLE, policy);
1789 
1790 	/* verify the cpu speed can be set within this limit,
1791 	   which might be different to the first one */
1792 	ret = cpufreq_driver->verify(policy);
1793 	if (ret)
1794 		goto error_out;
1795 
1796 	/* notification of the new policy */
1797 	blocking_notifier_call_chain(&cpufreq_policy_notifier_list,
1798 			CPUFREQ_NOTIFY, policy);
1799 
1800 	data->min = policy->min;
1801 	data->max = policy->max;
1802 
1803 	pr_debug("new min and max freqs are %u - %u kHz\n",
1804 					data->min, data->max);
1805 
1806 	if (cpufreq_driver->setpolicy) {
1807 		data->policy = policy->policy;
1808 		pr_debug("setting range\n");
1809 		ret = cpufreq_driver->setpolicy(policy);
1810 	} else {
1811 		if (policy->governor != data->governor) {
1812 			/* save old, working values */
1813 			struct cpufreq_governor *old_gov = data->governor;
1814 
1815 			pr_debug("governor switch\n");
1816 
1817 			/* end old governor */
1818 			if (data->governor) {
1819 				__cpufreq_governor(data, CPUFREQ_GOV_STOP);
1820 				unlock_policy_rwsem_write(policy->cpu);
1821 				__cpufreq_governor(data,
1822 						CPUFREQ_GOV_POLICY_EXIT);
1823 				lock_policy_rwsem_write(policy->cpu);
1824 			}
1825 
1826 			/* start new governor */
1827 			data->governor = policy->governor;
1828 			if (!__cpufreq_governor(data, CPUFREQ_GOV_POLICY_INIT)) {
1829 				if (!__cpufreq_governor(data, CPUFREQ_GOV_START)) {
1830 					failed = 0;
1831 				} else {
1832 					unlock_policy_rwsem_write(policy->cpu);
1833 					__cpufreq_governor(data,
1834 							CPUFREQ_GOV_POLICY_EXIT);
1835 					lock_policy_rwsem_write(policy->cpu);
1836 				}
1837 			}
1838 
1839 			if (failed) {
1840 				/* new governor failed, so re-start old one */
1841 				pr_debug("starting governor %s failed\n",
1842 							data->governor->name);
1843 				if (old_gov) {
1844 					data->governor = old_gov;
1845 					__cpufreq_governor(data,
1846 							CPUFREQ_GOV_POLICY_INIT);
1847 					__cpufreq_governor(data,
1848 							   CPUFREQ_GOV_START);
1849 				}
1850 				ret = -EINVAL;
1851 				goto error_out;
1852 			}
1853 			/* might be a policy change, too, so fall through */
1854 		}
1855 		pr_debug("governor: change or update limits\n");
1856 		__cpufreq_governor(data, CPUFREQ_GOV_LIMITS);
1857 	}
1858 
1859 error_out:
1860 	return ret;
1861 }
1862 
1863 /**
1864  *	cpufreq_update_policy - re-evaluate an existing cpufreq policy
1865  *	@cpu: CPU which shall be re-evaluated
1866  *
1867  *	Useful for policy notifiers which have different necessities
1868  *	at different times.
1869  */
1870 int cpufreq_update_policy(unsigned int cpu)
1871 {
1872 	struct cpufreq_policy *data = cpufreq_cpu_get(cpu);
1873 	struct cpufreq_policy policy;
1874 	int ret;
1875 
1876 	if (!data) {
1877 		ret = -ENODEV;
1878 		goto no_policy;
1879 	}
1880 
1881 	if (unlikely(lock_policy_rwsem_write(cpu))) {
1882 		ret = -EINVAL;
1883 		goto fail;
1884 	}
1885 
1886 	pr_debug("updating policy for CPU %u\n", cpu);
1887 	memcpy(&policy, data, sizeof(struct cpufreq_policy));
1888 	policy.min = data->user_policy.min;
1889 	policy.max = data->user_policy.max;
1890 	policy.policy = data->user_policy.policy;
1891 	policy.governor = data->user_policy.governor;
1892 
1893 	/* BIOS might change freq behind our back
1894 	  -> ask driver for current freq and notify governors about a change */
1895 	if (cpufreq_driver->get) {
1896 		policy.cur = cpufreq_driver->get(cpu);
1897 		if (!data->cur) {
1898 			pr_debug("Driver did not initialize current freq");
1899 			data->cur = policy.cur;
1900 		} else {
1901 			if (data->cur != policy.cur && cpufreq_driver->target)
1902 				cpufreq_out_of_sync(cpu, data->cur,
1903 								policy.cur);
1904 		}
1905 	}
1906 
1907 	ret = __cpufreq_set_policy(data, &policy);
1908 
1909 	unlock_policy_rwsem_write(cpu);
1910 
1911 fail:
1912 	cpufreq_cpu_put(data);
1913 no_policy:
1914 	return ret;
1915 }
1916 EXPORT_SYMBOL(cpufreq_update_policy);
1917 
1918 static int __cpuinit cpufreq_cpu_callback(struct notifier_block *nfb,
1919 					unsigned long action, void *hcpu)
1920 {
1921 	unsigned int cpu = (unsigned long)hcpu;
1922 	struct device *dev;
1923 
1924 	dev = get_cpu_device(cpu);
1925 	if (dev) {
1926 		switch (action) {
1927 		case CPU_ONLINE:
1928 			cpufreq_add_dev(dev, NULL);
1929 			break;
1930 		case CPU_DOWN_PREPARE:
1931 		case CPU_UP_CANCELED_FROZEN:
1932 			__cpufreq_remove_dev(dev, NULL);
1933 			break;
1934 		case CPU_DOWN_FAILED:
1935 			cpufreq_add_dev(dev, NULL);
1936 			break;
1937 		}
1938 	}
1939 	return NOTIFY_OK;
1940 }
1941 
1942 static struct notifier_block __refdata cpufreq_cpu_notifier = {
1943     .notifier_call = cpufreq_cpu_callback,
1944 };
1945 
1946 /*********************************************************************
1947  *               REGISTER / UNREGISTER CPUFREQ DRIVER                *
1948  *********************************************************************/
1949 
1950 /**
1951  * cpufreq_register_driver - register a CPU Frequency driver
1952  * @driver_data: A struct cpufreq_driver containing the values#
1953  * submitted by the CPU Frequency driver.
1954  *
1955  *   Registers a CPU Frequency driver to this core code. This code
1956  * returns zero on success, -EBUSY when another driver got here first
1957  * (and isn't unregistered in the meantime).
1958  *
1959  */
1960 int cpufreq_register_driver(struct cpufreq_driver *driver_data)
1961 {
1962 	unsigned long flags;
1963 	int ret;
1964 
1965 	if (cpufreq_disabled())
1966 		return -ENODEV;
1967 
1968 	if (!driver_data || !driver_data->verify || !driver_data->init ||
1969 	    ((!driver_data->setpolicy) && (!driver_data->target)))
1970 		return -EINVAL;
1971 
1972 	pr_debug("trying to register driver %s\n", driver_data->name);
1973 
1974 	if (driver_data->setpolicy)
1975 		driver_data->flags |= CPUFREQ_CONST_LOOPS;
1976 
1977 	write_lock_irqsave(&cpufreq_driver_lock, flags);
1978 	if (cpufreq_driver) {
1979 		write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1980 		return -EBUSY;
1981 	}
1982 	cpufreq_driver = driver_data;
1983 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
1984 
1985 	ret = subsys_interface_register(&cpufreq_interface);
1986 	if (ret)
1987 		goto err_null_driver;
1988 
1989 	if (!(cpufreq_driver->flags & CPUFREQ_STICKY)) {
1990 		int i;
1991 		ret = -ENODEV;
1992 
1993 		/* check for at least one working CPU */
1994 		for (i = 0; i < nr_cpu_ids; i++)
1995 			if (cpu_possible(i) && per_cpu(cpufreq_cpu_data, i)) {
1996 				ret = 0;
1997 				break;
1998 			}
1999 
2000 		/* if all ->init() calls failed, unregister */
2001 		if (ret) {
2002 			pr_debug("no CPU initialized for driver %s\n",
2003 							driver_data->name);
2004 			goto err_if_unreg;
2005 		}
2006 	}
2007 
2008 	register_hotcpu_notifier(&cpufreq_cpu_notifier);
2009 	pr_debug("driver %s up and running\n", driver_data->name);
2010 
2011 	return 0;
2012 err_if_unreg:
2013 	subsys_interface_unregister(&cpufreq_interface);
2014 err_null_driver:
2015 	write_lock_irqsave(&cpufreq_driver_lock, flags);
2016 	cpufreq_driver = NULL;
2017 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2018 	return ret;
2019 }
2020 EXPORT_SYMBOL_GPL(cpufreq_register_driver);
2021 
2022 
2023 /**
2024  * cpufreq_unregister_driver - unregister the current CPUFreq driver
2025  *
2026  *    Unregister the current CPUFreq driver. Only call this if you have
2027  * the right to do so, i.e. if you have succeeded in initialising before!
2028  * Returns zero if successful, and -EINVAL if the cpufreq_driver is
2029  * currently not initialised.
2030  */
2031 int cpufreq_unregister_driver(struct cpufreq_driver *driver)
2032 {
2033 	unsigned long flags;
2034 
2035 	if (!cpufreq_driver || (driver != cpufreq_driver))
2036 		return -EINVAL;
2037 
2038 	pr_debug("unregistering driver %s\n", driver->name);
2039 
2040 	subsys_interface_unregister(&cpufreq_interface);
2041 	unregister_hotcpu_notifier(&cpufreq_cpu_notifier);
2042 
2043 	write_lock_irqsave(&cpufreq_driver_lock, flags);
2044 	cpufreq_driver = NULL;
2045 	write_unlock_irqrestore(&cpufreq_driver_lock, flags);
2046 
2047 	return 0;
2048 }
2049 EXPORT_SYMBOL_GPL(cpufreq_unregister_driver);
2050 
2051 static int __init cpufreq_core_init(void)
2052 {
2053 	int cpu;
2054 
2055 	if (cpufreq_disabled())
2056 		return -ENODEV;
2057 
2058 	for_each_possible_cpu(cpu) {
2059 		per_cpu(cpufreq_policy_cpu, cpu) = -1;
2060 		init_rwsem(&per_cpu(cpu_policy_rwsem, cpu));
2061 	}
2062 
2063 	cpufreq_global_kobject = kobject_create();
2064 	BUG_ON(!cpufreq_global_kobject);
2065 	register_syscore_ops(&cpufreq_syscore_ops);
2066 
2067 	return 0;
2068 }
2069 core_initcall(cpufreq_core_init);
2070