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