linux-brain/drivers/cpuidle
Zhenzhong Duan 9c4aca8b2a cpuidle: Do not unset the driver if it is there already
commit 918c1fe9fbbe46fcf56837ff21f0ef96424e8b29 upstream.

Fix __cpuidle_set_driver() to check if any of the CPUs in the mask has
a driver different from drv already and, if so, return -EBUSY before
updating any cpuidle_drivers per-CPU pointers.

Fixes: 82467a5a88 ("cpuidle: simplify multiple driver support")
Cc: 3.11+ <stable@vger.kernel.org> # 3.11+
Signed-off-by: Zhenzhong Duan <zhenzhong.duan@oracle.com>
[ rjw: Subject & changelog ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2019-12-17 20:39:33 +01:00
..
governors cpuidle: Eliminate the CPUIDLE_DRIVER_STATE_START symbol 2017-08-30 03:05:29 +02:00
coupled.c smp: Avoid using two cache lines for struct call_single_data 2017-08-29 15:14:38 +02:00
cpuidle-arm.c ARM: cpuidle: Correct driver unregistration if init fails 2017-12-10 13:40:41 +01:00
cpuidle-at91.c drivers/cpuidle: Convert non-modular drivers to use builtin_platform_driver 2015-06-16 14:12:38 -04:00
cpuidle-big_little.c cpuidle: big.LITTLE: fix refcount leak 2019-02-12 19:46:03 +01:00
cpuidle-calxeda.c ARM: migrate to common PSCI client code 2015-08-03 15:38:39 +01:00
cpuidle-clps711x.c drivers/cpuidle: make cpuidle-clps711x.c explicitly non-modular 2015-12-15 00:22:21 +01:00
cpuidle-cps.c Update MIPS email addresses 2017-11-03 09:02:30 -07:00
cpuidle-exynos.c drivers/cpuidle: make cpuidle-exynos.c explicitly non-modular 2015-12-15 00:22:22 +01:00
cpuidle-kirkwood.c ARM: cpuidle: Remove duplicate header inclusion 2015-03-23 18:03:11 +01:00
cpuidle-mvebu-v7.c cpuidle: mvebu: disable the bind/unbind attributes and use builtin_platform_driver 2015-10-23 12:40:48 +02:00
cpuidle-powernv.c cpuidle: powernv: Fix promotion from snooze if next state disabled 2018-07-03 11:24:51 +02:00
cpuidle-pseries.c powerpc/pseries/cpuidle: Fix preempt warning 2019-01-26 09:37:02 +01:00
cpuidle-ux500.c drivers/cpuidle: make cpuidle-ux500.c explicitly non-modular 2015-12-15 00:22:22 +01:00
cpuidle-zynq.c drivers/cpuidle: Convert non-modular drivers to use builtin_platform_driver 2015-06-16 14:12:38 -04:00
cpuidle.c cpuidle: fix broadcast control when broadcast can not be entered 2017-12-25 14:26:30 +01:00
cpuidle.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
driver.c cpuidle: Do not unset the driver if it is there already 2019-12-17 20:39:33 +01:00
dt_idle_states.c Merge branch 'pm-sleep' 2017-09-04 00:06:02 +02:00
dt_idle_states.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
governor.c cpuidle: governors: Remove remaining old module code 2016-10-21 14:49:51 +02:00
Kconfig cpuidle: Don't enable all governors by default 2016-01-15 22:39:58 +01:00
Kconfig.arm ARM: cpuidle: Support asymmetric idle definition 2017-06-24 01:51:00 +02:00
Kconfig.mips cpuidle: cpuidle-cps: Enable use with MIPSr6 CPUs. 2016-10-04 16:13:57 +02:00
Kconfig.powerpc powerpc/powernv/cpuidle: Back-end cpuidle driver for powernv platform. 2014-01-29 17:02:24 +11:00
Makefile License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
poll_state.c cpuidle: Make drivers initialize polling state 2017-08-30 03:06:33 +02:00
sysfs.c cpuidle: Validate cpu_dev in cpuidle_add_sysfs() 2017-03-21 22:26:37 +01:00