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