: cpuidle-big.little fix when mcpm is not available
Hi Rafael,
This pull request has a single patch which is a fix for the cpuidle-big.little driver. If the mcpm backend is not available because the CCI is not defined in the DT, the cpuidle driver will unconditionally assume it is and call the mcpm functions leading to a kernel WARNING.
Sudeep Holla fixed that by checking at the init time the mcpm is available before initializing the deeper idle states.
Thanks
-- Daniel
The following changes since commit ec6f34e5b552fb0a52e6aae1a5afbbb1605cc6cc:
Linux 3.19-rc5 (2015-01-18 18:02:20 +1200)
are available in the git repository at:
http://git.linaro.org/people/daniel.lezcano/linux.git cpuidle/3.20
for you to fetch changes up to 194fe6f28e2819d3f50fbed24c3b72f21501dbfa:
drivers: cpuidle: Don't initialize big.LITTLE driver if MCPM is
unavailable (2015-01-23 15:05:48 +0100)
----------------------------------------------------------------
Sudeep Holla (1):
drivers: cpuidle: Don't initialize big.LITTLE driver if MCPM is
unavailable
drivers/cpuidle/cpuidle-big_little.c | 4 ++++ 1 file changed, 4 insertions(+)
Signature · 5 lines
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook | <http://twitter.com/#!/linaroorg> Twitter | <http://www.linaro.org/linaro-blog/> Blog
PATCH 1/1 drivers: cpuidle: Don't initialize big.LITTLE driver if MCPM is unavailable
From: Sudeep Holla <[email protected]>
If big.LITTLE driver is initialized even when MCPM is unavailable, we get the below warning the first time cpu tries to enter deeper C-states.
------------[ cut here ]------------ WARNING: CPU: 4 PID: 0 at kernel/arch/arm/common/mcpm_entry.c:130 mcpm_cpu_suspend+0x6d/0x74() Modules linked in: CPU: 4 PID: 0 Comm: swapper/4 Not tainted 3.19.0-rc3-00007-gaf5a2cb1ad5c-dirty #11 Hardware name: ARM-Versatile Express [<c0013fa5>] (unwind_backtrace) from [<c001084d>] (show_stack+0x11/0x14) [<c001084d>] (show_stack) from [<c04fe7f1>] (dump_stack+0x6d/0x78) [<c04fe7f1>] (dump_stack) from [<c0020645>] (warn_slowpath_common+0x69/0x90) [<c0020645>] (warn_slowpath_common) from [<c00206db>] (warn_slowpath_null+0x17/0x1c) [<c00206db>] (warn_slowpath_null) from [<c001cbdd>] (mcpm_cpu_suspend+0x6d/0x74) [<c001cbdd>] (mcpm_cpu_suspend) from [<c03c6919>] (bl_powerdown_finisher+0x21/0x24) [<c03c6919>] (bl_powerdown_finisher) from [<c001218d>] (cpu_suspend_abort+0x1/0x14) [<c001218d>] (cpu_suspend_abort) from [<00000000>] ( (null)) ---[ end trace d098e3fd00000008 ]---
This patch fixes the issue by checking for the availability of MCPM before initializing the big.LITTLE cpuidle driver
--- drivers/cpuidle/cpuidle-big_little.c | 4 ++++ 1 file changed, 4 insertions(+)
drivers/cpuidle/cpuidle-big_little.c +4 -0
@@ -182,6 +182,10 @@ static int __init bl_idle_init(void)*/ if (!of_match_node (compatible_machine_match, root))return -ENODEV ; + +if (!mcpm_is_available ()) +return -EUNATCH ; +/* * For now the differentiation between little and big cores * is based on the part number. A7 cores are considered little
Signature · 1 line
1.9.1
Quoted 27 lines · Daniel Lezcano
Hi Rafael,
This pull request has a single patch which is a fix for the cpuidle-big.little driver. If the mcpm backend is not available because the CCI is not defined in the DT, the cpuidle driver will unconditionally assume it is and call the mcpm functions leading to a kernel WARNING.
Sudeep Holla fixed that by checking at the init time the mcpm is available before initializing the deeper idle states.
Thanks
-- DanielThe following changes since commit
ec6f34e5b552fb0a52e6aae1a5afbbb1605cc6cc:Linux 3.19-rc5 (2015-01-18 18:02:20 +1200)are available in the git repository at:
http://git.linaro.org/people/daniel.lezcano/linux.git cpuidle/3.20
for you to fetch changes up to
194fe6f28e2819d3f50fbed24c3b72f21501dbfa:drivers: cpuidle: Don't initialize big.LITTLE driver if MCPM is
unavailable (2015-01-23 15:05:48 +0100)
Quoted 7 lines
----------------------------------------------------------------
Sudeep Holla (1):
drivers: cpuidle: Don't initialize big.LITTLE driver if MCPM is
unavailabledrivers/cpuidle/cpuidle-big_little.c | 4 ++++ 1 file changed, 4 insertions(+)
Pulled, thanks!
Signature · 2 lines
I speak only for myself. Rafael J. Wysocki, Intel Open Source Technology Center.