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