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