aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-11-09 14:16:28 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2017-11-09 14:16:28 -0500
commit3fefc31843cfe2b5f072efe11ed9ccaf6a7a5092 (patch)
tree972363ae187c21bb3d4ec8948bf06603973dd163 /kernel
parentd93d4ce103fdd6c6689e94cfbd0316b027d6ead2 (diff)
parente029b9bf1221f200319541cd6861912b89345665 (diff)
Merge tag 'pm-final-4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull final power management fixes from Rafael Wysocki: "These fix a regression in the schedutil cpufreq governor introduced by a recent change and blacklist Dell XPS13 9360 from using the Low Power S0 Idle _DSM interface which triggers serious problems on one of these machines. Specifics: - Prevent the schedutil cpufreq governor from using the utilization of a wrong CPU in some cases which started to happen after one of the recent changes in it (Chris Redpath). - Blacklist Dell XPS13 9360 from using the Low Power S0 Idle _DSM interface as that causes serious issue (related to NVMe) to appear on one of these machines, even though the other Dells XPS13 9360 in somewhat different HW configurations behave correctly (Rafael Wysocki)" * tag 'pm-final-4.14' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: ACPI / PM: Blacklist Low Power S0 Idle _DSM for Dell XPS13 9360 cpufreq: schedutil: Examine the correct CPU when we update util
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched/cpufreq_schedutil.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/kernel/sched/cpufreq_schedutil.c b/kernel/sched/cpufreq_schedutil.c
index 9209d83ecdcf..ba0da243fdd8 100644
--- a/kernel/sched/cpufreq_schedutil.c
+++ b/kernel/sched/cpufreq_schedutil.c
@@ -649,6 +649,7 @@ static int sugov_start(struct cpufreq_policy *policy)
649 struct sugov_cpu *sg_cpu = &per_cpu(sugov_cpu, cpu); 649 struct sugov_cpu *sg_cpu = &per_cpu(sugov_cpu, cpu);
650 650
651 memset(sg_cpu, 0, sizeof(*sg_cpu)); 651 memset(sg_cpu, 0, sizeof(*sg_cpu));
652 sg_cpu->cpu = cpu;
652 sg_cpu->sg_policy = sg_policy; 653 sg_cpu->sg_policy = sg_policy;
653 sg_cpu->flags = SCHED_CPUFREQ_RT; 654 sg_cpu->flags = SCHED_CPUFREQ_RT;
654 sg_cpu->iowait_boost_max = policy->cpuinfo.max_freq; 655 sg_cpu->iowait_boost_max = policy->cpuinfo.max_freq;
@@ -714,11 +715,6 @@ struct cpufreq_governor *cpufreq_default_governor(void)
714 715
715static int __init sugov_register(void) 716static int __init sugov_register(void)
716{ 717{
717 int cpu;
718
719 for_each_possible_cpu(cpu)
720 per_cpu(sugov_cpu, cpu).cpu = cpu;
721
722 return cpufreq_register_governor(&schedutil_gov); 718 return cpufreq_register_governor(&schedutil_gov);
723} 719}
724fs_initcall(sugov_register); 720fs_initcall(sugov_register);