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