History

Merge branches 'pm-sleep' and 'pm-cpufreq'

* pm-sleep: Revert "PM / sleep / ACPI: Use the ACPI_FADT_LOW_POWER_S0 flag" * pm-cpufreq: cpufreq: intel_pstate: Fix sysfs limits enforcement for performance policy

Rafael J. Wysocki committed 9 years ago

Commit ff7e5933 parents 7a308bb e326ce0 1443ebb5 files · +16 −16Browse files

Unified · Split

5 files
  1. Documentation/power/states.txt +1 −3
  2. drivers/acpi/sleep.c +0 −8
  3. drivers/cpufreq/intel_pstate.c +13 −1
  4. include/linux/suspend.h +0 −2
  5. kernel/power/suspend.c +2 −2
Documentation/power/states.txt+1−3
@@ -35,9 +35,7 @@ only one way to cause the system to go into the Suspend-To-RAM state (write · 34 unmodified lines
35The default suspend mode (ie. the one to be used without writing anything into35The default suspend mode (ie. the one to be used without writing anything into
36/sys/power/mem_sleep) is either "deep" (if Suspend-To-RAM is supported) or36/sys/power/mem_sleep) is either "deep" (if Suspend-To-RAM is supported) or
37"s2idle", but it can be overridden by the value of the "mem_sleep_default"37"s2idle", but it can be overridden by the value of the "mem_sleep_default"
38parameter in the kernel command line. On some ACPI-based systems, depending on38parameter in the kernel command line.
39the information in the FADT, the default may be "s2idle" even if Suspend-To-RAM
40is supported.
41 39
42The properties of all of the sleep states are described below.40The properties of all of the sleep states are described below.
43 41
drivers/acpi/sleep.c+0−8
@@ -674,14 +674,6 @@ static void acpi_sleep_suspend_setup(void) · 673 unmodified lines
674 if (acpi_sleep_state_supported(i))674 if (acpi_sleep_state_supported(i))
675 sleep_states[i] = 1;675 sleep_states[i] = 1;
676 676
677 /*
678 * Use suspend-to-idle by default if ACPI_FADT_LOW_POWER_S0 is set and
679 * the default suspend mode was not selected from the command line.
680 */
681 if (acpi_gbl_FADT.flags & ACPI_FADT_LOW_POWER_S0 &&
682 mem_sleep_default > PM_SUSPEND_MEM)
683 mem_sleep_default = PM_SUSPEND_FREEZE;
684
685 suspend_set_ops(old_suspend_ordering ?677 suspend_set_ops(old_suspend_ordering ?
686 &acpi_suspend_ops_old : &acpi_suspend_ops);678 &acpi_suspend_ops_old : &acpi_suspend_ops);
687 freeze_set_ops(&acpi_freeze_ops);679 freeze_set_ops(&acpi_freeze_ops);
drivers/cpufreq/intel_pstate.c+13−1
@@ -2005,7 +2005,8 @@ static int intel_pstate_set_policy(struct cpufreq_policy *policy) · 2004 unmodified lines
2005 limits = &performance_limits;2005 limits = &performance_limits;
2006 perf_limits = limits;2006 perf_limits = limits;
2007 }2007 }
2008 if (policy->max >= policy->cpuinfo.max_freq) {2008 if (policy->max >= policy->cpuinfo.max_freq &&
2009 !limits->no_turbo) {
2009 pr_debug("set performance\n");2010 pr_debug("set performance\n");
2010 intel_pstate_set_performance_limits(perf_limits);2011 intel_pstate_set_performance_limits(perf_limits);
2011 goto out;2012 goto out;
@@ -2047,6 +2048,17 @@ static int intel_pstate_verify_policy(struct cpufreq_policy *policy) · 35 unmodified lines
2047 policy->policy != CPUFREQ_POLICY_PERFORMANCE)2048 policy->policy != CPUFREQ_POLICY_PERFORMANCE)
2048 return -EINVAL;2049 return -EINVAL;
2049 2050
2051 /* When per-CPU limits are used, sysfs limits are not used */
2052 if (!per_cpu_limits) {
2053 unsigned int max_freq, min_freq;
2054
2055 max_freq = policy->cpuinfo.max_freq *
2056 limits->max_sysfs_pct / 100;
2057 min_freq = policy->cpuinfo.max_freq *
2058 limits->min_sysfs_pct / 100;
2059 cpufreq_verify_within_limits(policy, min_freq, max_freq);
2060 }
2061
2050 return 0;2062 return 0;
2051}2063}
2052 2064
include/linux/suspend.h+0−2
@@ -194,8 +194,6 @@ struct platform_freeze_ops { · 193 unmodified lines
194};194};
195 195
196#ifdef CONFIG_SUSPEND196#ifdef CONFIG_SUSPEND
197extern suspend_state_t mem_sleep_default;
198
199/**197/**
200 * suspend_set_ops - set platform dependent suspend operations198 * suspend_set_ops - set platform dependent suspend operations
201 * @ops: The new suspend operations to set.199 * @ops: The new suspend operations to set.
kernel/power/suspend.c+2−2
@@ -46,7 +46,7 @@ static const char * const mem_sleep_labels[] = { · 45 unmodified lines
46const char *mem_sleep_states[PM_SUSPEND_MAX];46const char *mem_sleep_states[PM_SUSPEND_MAX];
47 47
48suspend_state_t mem_sleep_current = PM_SUSPEND_FREEZE;48suspend_state_t mem_sleep_current = PM_SUSPEND_FREEZE;
49suspend_state_t mem_sleep_default = PM_SUSPEND_MAX;49static suspend_state_t mem_sleep_default = PM_SUSPEND_MEM;
50 50
51unsigned int pm_suspend_global_flags;51unsigned int pm_suspend_global_flags;
52EXPORT_SYMBOL_GPL(pm_suspend_global_flags);52EXPORT_SYMBOL_GPL(pm_suspend_global_flags);
@@ -168,7 +168,7 @@ void suspend_set_ops(const struct platform_suspend_ops *ops) · 115 unmodified lines
168 }168 }
169 if (valid_state(PM_SUSPEND_MEM)) {169 if (valid_state(PM_SUSPEND_MEM)) {
170 mem_sleep_states[PM_SUSPEND_MEM] = mem_sleep_labels[PM_SUSPEND_MEM];170 mem_sleep_states[PM_SUSPEND_MEM] = mem_sleep_labels[PM_SUSPEND_MEM];
171 if (mem_sleep_default >= PM_SUSPEND_MEM)171 if (mem_sleep_default == PM_SUSPEND_MEM)
172 mem_sleep_current = PM_SUSPEND_MEM;172 mem_sleep_current = PM_SUSPEND_MEM;
173 }173 }
174 174