[PATCH 0/5] powernv:idle: Cleanup idle states initialization

From: Gautham R. Shenoy
Date: Wed Jul 05 2017 - 12:39:17 EST

From: "Gautham R. Shenoy" <ego@xxxxxxxxxxxxxxxxxx>


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
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(-)