diff options
Diffstat (limited to 'drivers/cpufreq/cpufreq.c')
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 29 |
1 files changed, 24 insertions, 5 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index d3575f5ec6d2..7fce038fa57e 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -583,15 +583,13 @@ out: | |||
583 | i += sprintf(&buf[i], "\n"); | 583 | i += sprintf(&buf[i], "\n"); |
584 | return i; | 584 | return i; |
585 | } | 585 | } |
586 | /** | 586 | |
587 | * show_affected_cpus - show the CPUs affected by each transition | 587 | static ssize_t show_cpus(cpumask_t mask, char *buf) |
588 | */ | ||
589 | static ssize_t show_affected_cpus(struct cpufreq_policy *policy, char *buf) | ||
590 | { | 588 | { |
591 | ssize_t i = 0; | 589 | ssize_t i = 0; |
592 | unsigned int cpu; | 590 | unsigned int cpu; |
593 | 591 | ||
594 | for_each_cpu_mask(cpu, policy->cpus) { | 592 | for_each_cpu_mask(cpu, mask) { |
595 | if (i) | 593 | if (i) |
596 | i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), " "); | 594 | i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), " "); |
597 | i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), "%u", cpu); | 595 | i += scnprintf(&buf[i], (PAGE_SIZE - i - 2), "%u", cpu); |
@@ -602,6 +600,25 @@ static ssize_t show_affected_cpus(struct cpufreq_policy *policy, char *buf) | |||
602 | return i; | 600 | return i; |
603 | } | 601 | } |
604 | 602 | ||
603 | /** | ||
604 | * show_related_cpus - show the CPUs affected by each transition even if | ||
605 | * hw coordination is in use | ||
606 | */ | ||
607 | static ssize_t show_related_cpus(struct cpufreq_policy *policy, char *buf) | ||
608 | { | ||
609 | if (cpus_empty(policy->related_cpus)) | ||
610 | return show_cpus(policy->cpus, buf); | ||
611 | return show_cpus(policy->related_cpus, buf); | ||
612 | } | ||
613 | |||
614 | /** | ||
615 | * show_affected_cpus - show the CPUs affected by each transition | ||
616 | */ | ||
617 | static ssize_t show_affected_cpus(struct cpufreq_policy *policy, char *buf) | ||
618 | { | ||
619 | return show_cpus(policy->cpus, buf); | ||
620 | } | ||
621 | |||
605 | static ssize_t store_scaling_setspeed(struct cpufreq_policy *policy, | 622 | static ssize_t store_scaling_setspeed(struct cpufreq_policy *policy, |
606 | const char *buf, size_t count) | 623 | const char *buf, size_t count) |
607 | { | 624 | { |
@@ -646,6 +663,7 @@ define_one_ro(cpuinfo_max_freq); | |||
646 | define_one_ro(scaling_available_governors); | 663 | define_one_ro(scaling_available_governors); |
647 | define_one_ro(scaling_driver); | 664 | define_one_ro(scaling_driver); |
648 | define_one_ro(scaling_cur_freq); | 665 | define_one_ro(scaling_cur_freq); |
666 | define_one_ro(related_cpus); | ||
649 | define_one_ro(affected_cpus); | 667 | define_one_ro(affected_cpus); |
650 | define_one_rw(scaling_min_freq); | 668 | define_one_rw(scaling_min_freq); |
651 | define_one_rw(scaling_max_freq); | 669 | define_one_rw(scaling_max_freq); |
@@ -658,6 +676,7 @@ static struct attribute *default_attrs[] = { | |||
658 | &scaling_min_freq.attr, | 676 | &scaling_min_freq.attr, |
659 | &scaling_max_freq.attr, | 677 | &scaling_max_freq.attr, |
660 | &affected_cpus.attr, | 678 | &affected_cpus.attr, |
679 | &related_cpus.attr, | ||
661 | &scaling_governor.attr, | 680 | &scaling_governor.attr, |
662 | &scaling_driver.attr, | 681 | &scaling_driver.attr, |
663 | &scaling_available_governors.attr, | 682 | &scaling_available_governors.attr, |