linux/drivers/cpufreq
Rafael J. Wysocki 798282a871 Revert "cpufreq: make sure frequency transitions are serialized"
Commit 7c30ed5 (cpufreq: make sure frequency transitions are
serialized) attempted to serialize frequency transitions by
adding checks to the CPUFREQ_PRECHANGE and CPUFREQ_POSTCHANGE
notifications.  However, it assumed that the notifications will
always originate from the driver's .target() callback, but they
also can be triggered by cpufreq_out_of_sync() and that leads to
warnings like this on some systems:

 WARNING: CPU: 0 PID: 14543 at drivers/cpufreq/cpufreq.c:317
 __cpufreq_notify_transition+0x238/0x260()
 In middle of another frequency transition

accompanied by a call trace similar to this one:

 [<ffffffff81720daa>] dump_stack+0x46/0x58
 [<ffffffff8106534c>] warn_slowpath_common+0x8c/0xc0
 [<ffffffff815b8560>] ? acpi_cpufreq_target+0x320/0x320
 [<ffffffff81065436>] warn_slowpath_fmt+0x46/0x50
 [<ffffffff815b1ec8>] __cpufreq_notify_transition+0x238/0x260
 [<ffffffff815b33be>] cpufreq_notify_transition+0x3e/0x70
 [<ffffffff815b345d>] cpufreq_out_of_sync+0x6d/0xb0
 [<ffffffff815b370c>] cpufreq_update_policy+0x10c/0x160
 [<ffffffff815b3760>] ? cpufreq_update_policy+0x160/0x160
 [<ffffffff81413813>] cpufreq_set_cur_state+0x8c/0xb5
 [<ffffffff814138df>] processor_set_cur_state+0xa3/0xcf
 [<ffffffff8158e13c>] thermal_cdev_update+0x9c/0xb0
 [<ffffffff8159046a>] step_wise_throttle+0x5a/0x90
 [<ffffffff8158e21f>] handle_thermal_trip+0x4f/0x140
 [<ffffffff8158e377>] thermal_zone_device_update+0x57/0xa0
 [<ffffffff81415b36>] acpi_thermal_check+0x2e/0x30
 [<ffffffff81415ca0>] acpi_thermal_notify+0x40/0xdc
 [<ffffffff813e7dbd>] acpi_device_notify+0x19/0x1b
 [<ffffffff813f8241>] acpi_ev_notify_dispatch+0x41/0x5c
 [<ffffffff813e3fbe>] acpi_os_execute_deferred+0x25/0x32
 [<ffffffff81081060>] process_one_work+0x170/0x4a0
 [<ffffffff81082121>] worker_thread+0x121/0x390
 [<ffffffff81082000>] ? manage_workers.isra.20+0x170/0x170
 [<ffffffff81088fe0>] kthread+0xc0/0xd0
 [<ffffffff81088f20>] ? flush_kthread_worker+0xb0/0xb0
 [<ffffffff8173582c>] ret_from_fork+0x7c/0xb0
 [<ffffffff81088f20>] ? flush_kthread_worker+0xb0/0xb0

For this reason, revert commit 7c30ed5 along with the fix 266c13d
(cpufreq: Fix serialization of frequency transitions) on top of it
and we will revisit the serialization problem later.

Reported-by: Alessandro Bono <alessandro.bono@gmail.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
2013-09-10 02:54:50 +02:00
..
acpi-cpufreq.c acpi-cpufreq: Use cpufreq_freq_attr_rw to define the cpb attribute 2013-08-14 22:24:22 +02:00
amd_freq_sensitivity.c cpufreq: AMD "frequency sensitivity feedback" powersave bias for ondemand governor 2013-04-10 13:19:26 +02:00
arm_big_little_dt.c cpufreq: arm_big_little: remove device tree parsing for cpu nodes 2013-08-21 10:29:55 +01:00
arm_big_little.c cpufreq: arm-big-little: call CPUFREQ_POSTCHANGE notfier in error cases 2013-06-24 18:18:58 +05:30
arm_big_little.h cpufreq: ARM big LITTLE: Move cpu_to_cluster() to arm_big_little.h 2013-05-12 14:04:15 +02:00
at32ap-cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
blackfin-cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
cpufreq_conservative.c cpufreq: governors: Remove duplicate check of target freq in supported range 2013-08-28 22:03:02 +02:00
cpufreq_governor.c cpufreq: Don't use smp_processor_id() in preemptible context 2013-08-29 22:19:23 +02:00
cpufreq_governor.h cpufreq: governor: Fix typos in comments 2013-08-28 22:04:54 +02:00
cpufreq_ondemand.c cpufreq: governors: Remove duplicate check of target freq in supported range 2013-08-28 22:03:02 +02:00
cpufreq_performance.c cpufreq: Clean up header files included in the core 2013-08-07 23:34:09 +02:00
cpufreq_powersave.c cpufreq: Clean up header files included in the core 2013-08-07 23:34:09 +02:00
cpufreq_stats.c cpufreq: Fix wrong time unit conversion 2013-09-10 02:49:46 +02:00
cpufreq_userspace.c cpufreq: Fix minor formatting issues 2013-06-21 01:06:34 +02:00
cpufreq-cpu0.c Merge branch 'cpu_of_node' of git://linux-arm.org/linux-skn into pm-cpufreq-next 2013-08-23 00:57:19 +02:00
cpufreq-nforce2.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
cpufreq.c Revert "cpufreq: make sure frequency transitions are serialized" 2013-09-10 02:54:50 +02:00
cris-artpec3-cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
cris-etraxfs-cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
davinci-cpufreq.c cpufreq: davinci: call CPUFREQ_POSTCHANGE notfier in error cases 2013-06-24 18:18:58 +05:30
dbx500-cpufreq.c cpufreq: delete __cpuinit usage from all cpufreq files 2013-07-14 19:36:57 -04:00
e_powersaver.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
elanfreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
exynos4x12-cpufreq.c arm-soc: cleanups 2013-02-21 14:58:40 -08:00
exynos4210-cpufreq.c arm-soc: cleanups 2013-02-21 14:58:40 -08:00
exynos5250-cpufreq.c arm-soc: cleanups 2013-02-21 14:58:40 -08:00
exynos5440-cpufreq.c cpufreq: exynos5440: Fix to skip when new frequency same as current 2013-08-12 12:00:18 +05:30
exynos-cpufreq.c Merge branch 'cpufreq-fixes' of git://git.linaro.org/people/vireshk/linux into pm-cpufreq 2013-08-14 22:22:57 +02:00
exynos-cpufreq.h cpufreq: fix EXYNOS drivers selection 2013-08-12 12:00:21 +05:30
freq_table.c cpufreq: Clean up header files included in the core 2013-08-07 23:34:09 +02:00
gx-suspmod.c cpufreq / gx: Fix gx_detect_chipset() __init attribute location 2013-08-14 22:24:23 +02:00
highbank-cpufreq.c cpufreq: highbank-cpufreq: remove device tree parsing for cpu nodes 2013-08-21 10:29:54 +01:00
ia64-acpi-cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
imx6q-cpufreq.c Merge branch 'cpufreq-fixes' of git://git.linaro.org/people/vireshk/linux into pm-cpufreq 2013-08-27 02:37:54 +02:00
integrator-cpufreq.c cpufreq: integrator: move cpufreq driver to drivers/cpufreq 2013-04-08 13:02:31 +02:00
intel_pstate.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
Kconfig cpufreq: Fix incorrect dependecies for ARM SA11xx drivers 2013-05-12 14:04:16 +02:00
Kconfig.arm cpufreq: fix EXYNOS drivers selection 2013-08-12 12:00:21 +05:30
Kconfig.powerpc Merge branch 'pm-cpufreq-assorted' into pm-cpufreq 2013-06-27 21:46:45 +02:00
Kconfig.x86 cpufreq: X86_AMD_FREQ_SENSITIVITY: select CPU_FREQ_TABLE 2013-06-18 13:53:11 +05:30
kirkwood-cpufreq.c Merge branch 'cpu_of_node' of git://linux-arm.org/linux-skn into pm-cpufreq-next 2013-08-23 00:57:19 +02:00
longhaul.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
longhaul.h cpufreq: delete __cpuinit usage from all cpufreq files 2013-07-14 19:36:57 -04:00
longrun.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
loongson2_cpufreq.c Merge back earlier 'pm-cpufreq' material 2013-08-14 22:21:16 +02:00
Makefile cpufreq: Remove unused APERF/MPERF support 2013-07-26 01:06:43 +02:00
maple-cpufreq.c Merge branch 'cpu_of_node' of git://linux-arm.org/linux-skn into pm-cpufreq-next 2013-08-23 00:57:19 +02:00
omap-cpufreq.c cpufreq: delete __cpuinit usage from all cpufreq files 2013-07-14 19:36:57 -04:00
p4-clockmod.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
pasemi-cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
pcc-cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
pmac32-cpufreq.c Merge branch 'cpu_of_node' of git://linux-arm.org/linux-skn into pm-cpufreq-next 2013-08-23 00:57:19 +02:00
pmac64-cpufreq.c Merge branch 'cpu_of_node' of git://linux-arm.org/linux-skn into pm-cpufreq-next 2013-08-23 00:57:19 +02:00
powernow-k6.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
powernow-k7.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
powernow-k7.h [CPUFREQ] Move x86 drivers to drivers/cpufreq/ 2011-05-19 18:51:07 -04:00
powernow-k8.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
powernow-k8.h cpufreq: Remove support for hardware P-state chips from powernow-k8 2012-09-09 22:05:30 +02:00
ppc_cbe_cpufreq_pervasive.c cpufreq: powerpc/platforms/cell: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:26 +02:00
ppc_cbe_cpufreq_pmi.c cpufreq: powerpc/platforms/cell: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:26 +02:00
ppc_cbe_cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
ppc_cbe_cpufreq.h cpufreq: powerpc/platforms/cell: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:26 +02:00
ppc-corenet-cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
pxa2xx-cpufreq.c cpufreq / pxa2xx: Fix pxa_cpufreq_init_voltages() __init attribute location 2013-08-14 22:24:23 +02:00
pxa3xx-cpufreq.c pxa3xx-cpufreq.c: Avoid using ARRAY_AND_SIZE(e) as a function argument 2013-08-14 22:24:23 +02:00
s3c24xx-cpufreq-debugfs.c cpufreq: s3c24xx: move cpufreq driver to drivers/cpufreq 2013-05-20 23:04:28 +09:00
s3c24xx-cpufreq.c cpufreq / s3c24xx: Fix s3c_cpufreq_initclks() __init attribute location 2013-08-14 22:24:24 +02:00
s3c64xx-cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
s3c2410-cpufreq.c cpufreq: s3c24xx: move cpufreq driver to drivers/cpufreq 2013-05-20 23:04:28 +09:00
s3c2412-cpufreq.c cpufreq: s3c24xx: move cpufreq driver to drivers/cpufreq 2013-05-20 23:04:28 +09:00
s3c2416-cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
s3c2440-cpufreq.c cpufreq: s3c24xx: move cpufreq driver to drivers/cpufreq 2013-05-20 23:04:28 +09:00
s5pv210-cpufreq.c cpufreq: Notify all policy->cpus in cpufreq_notify_transition() 2013-04-02 15:24:00 +02:00
sa1100-cpufreq.c cpufreq: sa11x0: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:24 +02:00
sa1110-cpufreq.c cpufreq: sa11x0: move cpufreq driver to drivers/cpufreq 2013-04-10 13:19:24 +02:00
sc520_freq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
sh-cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
sparc-us2e-cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
sparc-us3-cpufreq.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
spear-cpufreq.c cpufreq: spear-cpufreq: remove device tree parsing for cpu nodes 2013-08-21 10:29:54 +01:00
speedstep-centrino.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
speedstep-ich.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
speedstep-lib.c cpufreq: Add support for x86 cpuinfo auto loading v4 2012-01-26 16:49:06 -08:00
speedstep-lib.h [CPUFREQ] Move x86 drivers to drivers/cpufreq/ 2011-05-19 18:51:07 -04:00
speedstep-smi.c cpufreq: Drop the owner field from struct cpufreq_driver 2013-08-10 03:24:47 +02:00
tegra-cpufreq.c cpufreq: tegra: fix the wrong clock name 2013-08-23 21:58:28 +05:30
unicore2-cpufreq.c cpufreq: unicore2: Staticize local symbol 2013-08-14 22:24:24 +02:00