From: "Gautham R. Shenoy" <e...@linux.vnet.ibm.com> Hi,
This patch set aims at cleaning up the powernv idle initialization code mainly covering the following a) Currently there is redundant code for parsing the device-tree for idle states. We do it in two places, once during the platform idle initialization, once more when the cpidle driver initializes. In this patchset the device-tree is parsed only once and we maintain an in-kernel data structure with the details of each platform idle state. The cpu-idle initialization code looks at this data structure for initializing cpuidle states. This makes the cpuidle driver initialization more streamlined. b) Currently the idle initialzation code for power8 and power9 are mixed up. In this patchset we segregate them into their respective functions for improved readability. c) The current code has a bug when the Sleep-Winkle-Engine is unable to restore the hypervisor states for the deep idle states that lose full hypervisor context, since in such cases we don't disable such deep states. Thus, the CPUs that enter such deep states don't wakeup correctly. Patch 1 in the series addresses a). Patches 2,3,4 address b) Patch 5 fixes the bug c) These patches are applied on top of next branch of the powerpc-linux git tree. The patches have been tested on POWER8 and POWER9. Gautham R. Shenoy (5): powernv:idle: Move device-tree parsing to one place. powernv:idle: Change return type of pnv_probe_idle_states to int powernv:idle: Define idle init function for power8 powernv:idle: Move initialization of sibling pacas to pnv_alloc_idle_core_states powernv:idle: Disable LOSE_FULL_CONTEXT states when stop-api fails. arch/powerpc/include/asm/cpuidle.h | 32 +- arch/powerpc/platforms/powernv/idle.c | 576 ++++++++++++++++++++++++++-------- drivers/cpuidle/cpuidle-powernv.c | 233 ++++---------- 3 files changed, 521 insertions(+), 320 deletions(-) -- 1.9.4