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