diff options
author | Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com> | 2013-07-29 18:55:25 -0400 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-08-07 17:02:49 -0400 |
commit | 5302c3fb2e62f4ca5e43e060491ba299f58c5231 (patch) | |
tree | e76c3698959994ac9587a9ef063361cf91577cf5 /drivers | |
parent | 8414809c6a1e8479e331e09254adb58b33a36d25 (diff) |
cpufreq: Perform light-weight init/teardown during suspend/resume
Now that we have the infrastructure to perform a light-weight init/tear-down,
use that in the cpufreq CPU hotplug notifier when invoked from the
suspend/resume path.
This also ensures that the file permissions of the cpufreq sysfs files are
preserved across suspend/resume, something which commit a66b2e (cpufreq:
Preserve sysfs files across suspend/resume) originally intended to do, but
had to be reverted due to other problems.
Signed-off-by: Srivatsa S. Bhat <srivatsa.bhat@linux.vnet.ibm.com>
Acked-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/cpufreq/cpufreq.c | 18 | ||||
-rw-r--r-- | drivers/cpufreq/cpufreq_stats.c | 2 |
2 files changed, 11 insertions, 9 deletions
diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c index e0ace3d9382c..370abb66babc 100644 --- a/drivers/cpufreq/cpufreq.c +++ b/drivers/cpufreq/cpufreq.c | |||
@@ -2040,22 +2040,26 @@ static int cpufreq_cpu_callback(struct notifier_block *nfb, | |||
2040 | { | 2040 | { |
2041 | unsigned int cpu = (unsigned long)hcpu; | 2041 | unsigned int cpu = (unsigned long)hcpu; |
2042 | struct device *dev; | 2042 | struct device *dev; |
2043 | bool frozen = false; | ||
2043 | 2044 | ||
2044 | dev = get_cpu_device(cpu); | 2045 | dev = get_cpu_device(cpu); |
2045 | if (dev) { | 2046 | if (dev) { |
2046 | switch (action) { | 2047 | |
2048 | if (action & CPU_TASKS_FROZEN) | ||
2049 | frozen = true; | ||
2050 | |||
2051 | switch (action & ~CPU_TASKS_FROZEN) { | ||
2047 | case CPU_ONLINE: | 2052 | case CPU_ONLINE: |
2048 | case CPU_ONLINE_FROZEN: | 2053 | __cpufreq_add_dev(dev, NULL, frozen); |
2049 | cpufreq_add_dev(dev, NULL); | ||
2050 | cpufreq_update_policy(cpu); | 2054 | cpufreq_update_policy(cpu); |
2051 | break; | 2055 | break; |
2056 | |||
2052 | case CPU_DOWN_PREPARE: | 2057 | case CPU_DOWN_PREPARE: |
2053 | case CPU_DOWN_PREPARE_FROZEN: | 2058 | __cpufreq_remove_dev(dev, NULL, frozen); |
2054 | __cpufreq_remove_dev(dev, NULL, false); | ||
2055 | break; | 2059 | break; |
2060 | |||
2056 | case CPU_DOWN_FAILED: | 2061 | case CPU_DOWN_FAILED: |
2057 | case CPU_DOWN_FAILED_FROZEN: | 2062 | __cpufreq_add_dev(dev, NULL, frozen); |
2058 | cpufreq_add_dev(dev, NULL); | ||
2059 | break; | 2063 | break; |
2060 | } | 2064 | } |
2061 | } | 2065 | } |
diff --git a/drivers/cpufreq/cpufreq_stats.c b/drivers/cpufreq/cpufreq_stats.c index bc73be225be5..cb3841355454 100644 --- a/drivers/cpufreq/cpufreq_stats.c +++ b/drivers/cpufreq/cpufreq_stats.c | |||
@@ -349,11 +349,9 @@ static int cpufreq_stat_cpu_callback(struct notifier_block *nfb, | |||
349 | 349 | ||
350 | switch (action) { | 350 | switch (action) { |
351 | case CPU_DOWN_PREPARE: | 351 | case CPU_DOWN_PREPARE: |
352 | case CPU_DOWN_PREPARE_FROZEN: | ||
353 | cpufreq_stats_free_sysfs(cpu); | 352 | cpufreq_stats_free_sysfs(cpu); |
354 | break; | 353 | break; |
355 | case CPU_DEAD: | 354 | case CPU_DEAD: |
356 | case CPU_DEAD_FROZEN: | ||
357 | cpufreq_stats_free_table(cpu); | 355 | cpufreq_stats_free_table(cpu); |
358 | break; | 356 | break; |
359 | } | 357 | } |