[PATCH 0/9] powerpc/powernv: Support for fastsleep and winkle
Shreyas B. Prabhu
shreyas at linux.vnet.ibm.com
Tue Aug 26 03:57:52 EST 2014
Fast sleep is an idle state, where the core and the L1 and L2
caches are brought down to a threshold voltage. This also means that
the communication between L2 and L3 caches have to be fenced. However
the current P8 chips have a bug wherein this fencing between L2 and
L3 caches get delayed by a cpu cycle. This can delay L3 response to
the other cpus if they request for data during this time. Thus they
would fetch the same data from the memory which could lead to data
corruption if L3 cache is not flushed.
Patch 4 adds support to work around this.
'Deep Winkle' is a deeper idle state where core and private L2 are powered
off. While it offers higher power savings, it is at the cost of losing
hypervisor register state and higher latency.
Patch 5-9 adds support for winkle and uses it for offline cpus.
Patch 1 - Moves parameters required discover idle states to a location
common to both cpuidle driver and powernv core code
Patch 2 - Populates idle state details from device tree
Patch 3 - Enables cpus to run guest after waking up from fastsleep/winkle
Cc: Benjamin Herrenschmidt <benh at kernel.crashing.org>
Cc: Paul Mackerras <paulus at samba.org>
Cc: Michael Ellerman <mpe at ellerman.id.au>
Cc: Rafael J. Wysocki <rjw at rjwysocki.net>
Cc: Srivatsa S. Bhat <srivatsa at MIT.EDU>
Cc: Preeti U. Murthy <preeti at linux.vnet.ibm.com>
Cc: Vaidyanathan Srinivasan <svaidy at linux.vnet.ibm.com>
Cc: Rob Herring <robh+dt at kernel.org>
Cc: Grant Likely <grant.likely at linaro.org>
Cc: devicetree at vger.kernel.org
Cc: linux-pm at vger.kernel.org
Cc: linuxppc-dev at lists.ozlabs.org
Preeti U Murthy (2):
cpuidle/powernv: Populate cpuidle state details by querying the
device-tree
powerpc/powernv/cpuidle: Add workaround to enable fastsleep
Shreyas B. Prabhu (6):
powerpc/kvm/book3s_hv: Enable CPUs to run guest after waking up from
fast-sleep
powerpc/powernv: Add OPAL call to save and restore
powerpc: Adding macro for accessing Thread Switch Control Register
powerpc/powernv: Add winkle infrastructure
powerpc/powernv: Discover and enable winkle
powerpc/powernv: Enter deepest supported idle state in offline
Srivatsa S. Bhat (1):
powerpc/powernv: Enable Offline CPUs to enter deep idle states
arch/powerpc/include/asm/machdep.h | 4 +
arch/powerpc/include/asm/opal.h | 10 ++
arch/powerpc/include/asm/paca.h | 3 +
arch/powerpc/include/asm/ppc-opcode.h | 2 +
arch/powerpc/include/asm/processor.h | 6 +-
arch/powerpc/include/asm/reg.h | 1 +
arch/powerpc/kernel/asm-offsets.c | 1 +
arch/powerpc/kernel/exceptions-64s.S | 37 ++---
arch/powerpc/kernel/idle.c | 30 ++++
arch/powerpc/kernel/idle_power7.S | 83 +++++++++-
arch/powerpc/platforms/powernv/opal-wrappers.S | 2 +
arch/powerpc/platforms/powernv/powernv.h | 8 +
arch/powerpc/platforms/powernv/setup.c | 217 +++++++++++++++++++++++++
arch/powerpc/platforms/powernv/smp.c | 13 +-
arch/powerpc/platforms/powernv/subcore.c | 15 ++
drivers/cpuidle/cpuidle-powernv.c | 40 ++++-
16 files changed, 439 insertions(+), 33 deletions(-)
--
1.9.0
More information about the Linuxppc-dev
mailing list