mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-01 14:44:12 +00:00
12acb348fa
A switch from OSI to PC mode is only possible if all CPUs other than the
calling one are OFF, either through a call to CPU_OFF or not yet booted.
Currently OSI mode is enabled before power domains are created. In cases
where CPUidle states are not using hierarchical CPU topology the bail out
path tries to switch back to PC mode which gets denied by firmware since
other CPUs are online at this point and creates inconsistent state as
firmware is in OSI mode and Linux in PC mode.
This change moves enabling OSI mode after power domains are created,
this would makes sure that hierarchical CPU topology is used before
switching firmware to OSI mode.
Cc: stable@vger.kernel.org
Fixes:
|
||
---|---|---|
.. | ||
governors | ||
coupled.c | ||
cpuidle-arm.c | ||
cpuidle-at91.c | ||
cpuidle-big_little.c | ||
cpuidle-calxeda.c | ||
cpuidle-clps711x.c | ||
cpuidle-cps.c | ||
cpuidle-exynos.c | ||
cpuidle-haltpoll.c | ||
cpuidle-kirkwood.c | ||
cpuidle-mvebu-v7.c | ||
cpuidle-powernv.c | ||
cpuidle-psci-domain.c | ||
cpuidle-psci.c | ||
cpuidle-psci.h | ||
cpuidle-pseries.c | ||
cpuidle-qcom-spm.c | ||
cpuidle-riscv-sbi.c | ||
cpuidle-tegra.c | ||
cpuidle-ux500.c | ||
cpuidle-zynq.c | ||
cpuidle.c | ||
cpuidle.h | ||
driver.c | ||
dt_idle_genpd.c | ||
dt_idle_genpd.h | ||
dt_idle_states.c | ||
dt_idle_states.h | ||
governor.c | ||
Kconfig | ||
Kconfig.arm | ||
Kconfig.mips | ||
Kconfig.powerpc | ||
Kconfig.riscv | ||
Makefile | ||
poll_state.c | ||
sysfs.c |