Viresh Kumar
c75de0ac07
cpufreq: Schedule work for the first-online CPU on resume
...
All CPUs leaving the first-online CPU are hotplugged out on suspend and
and cpufreq core stops managing them.
On resume, we need to call cpufreq_update_policy() for this CPU's policy
to make sure its frequency is in sync with cpufreq's cached value, as it
might have got updated by hardware during suspend/resume.
The policies are always added to the top of the policy-list. So, in
normal circumstances, CPU 0's policy will be the last one in the list.
And so the code checks for the last policy.
But there are cases where it will fail. Consider quad-core system, with
policy-per core. If CPU0 is hotplugged out and added back again, the
last policy will be on CPU1 :(
To fix this in a proper way, always look for the policy of the first
online CPU. That way we will be sure that we are calling
cpufreq_update_policy() for the only CPU that wasn't hotplugged out.
Cc: 3.15+ <stable@vger.kernel.org> # 3.15+
Fixes: 2f0aea9363 ("cpufreq: suspend governors on system suspend/hibernate")
Reported-by: Saravana Kannan <skannan@codeaurora.org>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Acked-by: Saravana Kannan <skannan@codeaurora.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2015-04-03 12:59:47 +02:00
..
acpi-cpufreq.c
cpufreq: Use cpufreq_for_each_* macros for frequency table iteration
2014-04-30 00:06:21 +02:00
amd_freq_sensitivity.c
arm_big_little.c
cpufreq: arm_big_little: free OPP table created during ->init()
2014-12-02 00:01:24 +01:00
arm_big_little.h
cpufreq: arm_big_little: free OPP table created during ->init()
2014-12-02 00:01:24 +01:00
arm_big_little_dt.c
Driver core patches for 3.19-rc1
2014-12-14 16:10:09 -08:00
at32ap-cpufreq.c
blackfin-cpufreq.c
cpufreq-dt.c
cpufreq-dt: Drop unnecessary check before cpufreq_cooling_unregister() invocation
2015-02-03 23:28:37 +01:00
cpufreq-nforce2.c
cpufreq: nforce2: remove DEFINE_PCI_DEVICE_TABLE macro
2014-05-17 01:16:15 +02:00
cpufreq.c
cpufreq: Schedule work for the first-online CPU on resume
2015-04-03 12:59:47 +02:00
cpufreq_conservative.c
cpufreq_governor.c
cpufreq: governor: remove copy_prev_load from 'struct cpu_dbs_common_info'
2014-06-09 12:58:21 +02:00
cpufreq_governor.h
cpufreq: governor: remove copy_prev_load from 'struct cpu_dbs_common_info'
2014-06-09 12:58:21 +02:00
cpufreq_ondemand.c
cpufreq: ondemand: Eliminate the deadband effect
2014-07-21 13:43:19 +02:00
cpufreq_opp.c
cpufreq / OPP: Fix the order of arguments for kcalloc()
2014-09-08 00:02:58 +02:00
cpufreq_performance.c
cpufreq_powersave.c
cpufreq_stats.c
cpufreq: stats: drop unnecessary locking
2015-01-23 23:06:45 +01:00
cpufreq_userspace.c
cris-artpec3-cpufreq.c
cpufreq: create another field .flags in cpufreq_frequency_table
2014-04-07 14:43:50 +02:00
cris-etraxfs-cpufreq.c
cpufreq: create another field .flags in cpufreq_frequency_table
2014-04-07 14:43:50 +02:00
davinci-cpufreq.c
cpufreq: drop owner assignment from platform_drivers
2014-10-20 16:20:24 +02:00
dbx500-cpufreq.c
cpufreq: drop owner assignment from platform_drivers
2014-10-20 16:20:24 +02:00
e_powersaver.c
elanfreq.c
cpufreq: Use cpufreq_for_each_* macros for frequency table iteration
2014-04-30 00:06:21 +02:00
exynos-cpufreq.c
cpufreq: exynos: Use simple approach to asses if cpu cooling can be used
2015-03-02 10:04:52 +01:00
exynos-cpufreq.h
ACPI and power management updates for 3.16-rc1
2014-06-04 08:57:16 -07:00
exynos4x12-cpufreq.c
cpufreq: cpu0: rename driver and internals to 'cpufreq_dt'
2014-10-03 15:37:54 +02:00
exynos4210-cpufreq.c
cpufreq: cpu0: rename driver and internals to 'cpufreq_dt'
2014-10-03 15:37:54 +02:00
exynos5250-cpufreq.c
cpufreq: cpu0: rename driver and internals to 'cpufreq_dt'
2014-10-03 15:37:54 +02:00
exynos5440-cpufreq.c
Driver core patches for 3.19-rc1
2014-12-14 16:10:09 -08:00
freq_table.c
cpufreq: Introduce new relation for freq selection
2014-07-21 13:43:19 +02:00
gx-suspmod.c
highbank-cpufreq.c
Merge branch 'mailbox-for-linus' of git://git.linaro.org/landing-teams/working/fujitsu/integration
2014-10-21 11:21:19 -07:00
ia64-acpi-cpufreq.c
imx6q-cpufreq.c
Driver core patches for 3.19-rc1
2014-12-14 16:10:09 -08:00
integrator-cpufreq.c
cpufreq: drop owner assignment from platform_drivers
2014-10-20 16:20:24 +02:00
intel_pstate.c
intel_pstate: provide option to only use intel_pstate with HWP
2015-02-06 22:54:18 +01:00
Kconfig
rcu: Make SRCU optional by using CONFIG_SRCU
2015-01-06 11:04:29 -08:00
Kconfig.arm
cpufreq: exynos: allow modular build
2015-01-31 14:56:27 -04:00
Kconfig.powerpc
clk: ppc-corenet: rename driver to clk-qoriq
2015-01-20 10:09:12 -08:00
Kconfig.x86
cpufreq: Add SFI based cpufreq driver support
2014-12-20 13:37:37 -05:00
kirkwood-cpufreq.c
cpufreq: drop owner assignment from platform_drivers
2014-10-20 16:20:24 +02:00
longhaul.c
Update/Remove soon-to-be-dead email address
2014-12-19 12:56:15 -08:00
longhaul.h
longrun.c
loongson2_cpufreq.c
cpufreq: drop owner assignment from platform_drivers
2014-10-20 16:20:24 +02:00
ls1x-cpufreq.c
cpufreq: drop owner assignment from platform_drivers
2015-01-23 22:19:15 +01:00
Makefile
Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/evalenti/linux-soc-thermal
2015-02-19 17:51:22 -08:00
maple-cpufreq.c
cpufreq: create another field .flags in cpufreq_frequency_table
2014-04-07 14:43:50 +02:00
omap-cpufreq.c
cpufreq: drop owner assignment from platform_drivers
2014-10-20 16:20:24 +02:00
p4-clockmod.c
cpufreq: create another field .flags in cpufreq_frequency_table
2014-04-07 14:43:50 +02:00
pasemi-cpufreq.c
cpufreq: Use cpufreq_for_each_* macros for frequency table iteration
2014-04-30 00:06:21 +02:00
pcc-cpufreq.c
cpufreq: pcc: Enable autoload of pcc-cpufreq for ACPI processors
2014-11-14 00:16:25 +01:00
pmac32-cpufreq.c
powerpc: Remove powerpc specific cmd_line
2014-10-02 17:33:55 +10:00
pmac64-cpufreq.c
of: Migrate of_find_node_by_name() users to for_each_node_by_name()
2014-06-26 17:12:24 +01:00
powernow-k6.c
Update/Remove soon-to-be-dead email address
2014-12-19 12:56:15 -08:00
powernow-k7.c
Update/Remove soon-to-be-dead email address
2014-12-19 12:56:15 -08:00
powernow-k7.h
powernow-k8.c
cpufreq: powernow-k8: Suppress checkpatch warnings
2014-05-17 01:27:01 +02:00
powernow-k8.h
cpufreq: powernow-k8: Suppress checkpatch warnings
2014-05-17 01:27:01 +02:00
powernv-cpufreq.c
cpufreq: powernv: Set the cpus to nominal frequency during reboot/kexec
2014-09-29 15:53:04 +02:00
ppc-corenet-cpufreq.c
cpufreq: ppc: Add missing #include <asm/smp.h>
2015-03-04 14:14:54 +01:00
ppc_cbe_cpufreq.c
cpufreq: Use cpufreq_for_each_* macros for frequency table iteration
2014-04-30 00:06:21 +02:00
ppc_cbe_cpufreq.h
ppc_cbe_cpufreq_pervasive.c
ppc_cbe_cpufreq_pmi.c
pxa2xx-cpufreq.c
pxa3xx-cpufreq.c
s3c24xx-cpufreq-debugfs.c
s3c24xx-cpufreq.c
cpufreq: s3c: remove last use of resume_clocks callback
2015-02-19 06:36:53 +01:00
s3c64xx-cpufreq.c
cpufreq: Use cpufreq_for_each_* macros for frequency table iteration
2014-04-30 00:06:21 +02:00
s3c2410-cpufreq.c
cpufreq: s3c24xx: Remove some dead code
2014-07-19 04:24:59 +09:00
s3c2412-cpufreq.c
cpufreq: s3c24xx: Remove some dead code
2014-07-19 04:24:59 +09:00
s3c2416-cpufreq.c
cpufreq: s3c: remove incorrect __init annotations
2015-02-19 06:36:53 +01:00
s3c2440-cpufreq.c
cpufreq: s3c24xx: Remove some dead code
2014-07-19 04:24:59 +09:00
s5pv210-cpufreq.c
cpufreq: drop owner assignment from platform_drivers
2014-10-20 16:20:24 +02:00
sa1100-cpufreq.c
sa1110-cpufreq.c
cpufreq: sa1110: set memory type for h3600
2014-07-16 14:30:17 +02:00
sc520_freq.c
cpufreq: create another field .flags in cpufreq_frequency_table
2014-04-07 14:43:50 +02:00
sfi-cpufreq.c
cpufreq: Add SFI based cpufreq driver support
2014-12-20 13:37:37 -05:00
sh-cpufreq.c
sparc-us2e-cpufreq.c
sparc-us3-cpufreq.c
spear-cpufreq.c
cpufreq: drop owner assignment from platform_drivers
2014-10-20 16:20:24 +02:00
speedstep-centrino.c
cpufreq: Make linux-pm@vger.kernel.org official mailing list
2014-05-01 01:15:32 +02:00
speedstep-ich.c
Update/Remove soon-to-be-dead email address
2014-12-19 12:56:15 -08:00
speedstep-lib.c
cpufreq: speedstep-smi: enable interrupts when waiting
2015-02-12 02:02:52 +01:00
speedstep-lib.h
speedstep-smi.c
cpufreq: speedstep-smi: enable interrupts when waiting
2015-02-12 02:02:52 +01:00
tegra-cpufreq.c
cpufreq: tegra: update comment for clarity
2014-06-10 22:50:50 +02:00
unicore2-cpufreq.c
cpufreq: unicore32: replace IS_ERR and PTR_ERR with PTR_ERR_OR_ZERO
2014-04-21 23:42:27 +02:00
vexpress-spc-cpufreq.c
cpufreq: drop owner assignment from platform_drivers
2014-10-20 16:20:24 +02:00