linux_dsm_epyc7002/arch/powerpc
Shreyas B. Prabhu 77b54e9f21 powernv/powerpc: Add winkle support for offline cpus
Winkle is a deep idle state supported in power8 chips. A core enters
winkle when all the threads of the core enter winkle. In this state
power supply to the entire chiplet i.e core, private L2 and private L3
is turned off. As a result it gives higher powersavings compared to
sleep.

But entering winkle results in a total hypervisor state loss. Hence the
hypervisor context has to be preserved before entering winkle and
restored upon wake up.

Power-on Reset Engine (PORE) is a dedicated engine which is responsible
for powering on the chiplet during wake up. It can be programmed to
restore the register contests of a few specific registers. This patch
uses PORE to restore register state wherever possible and uses stack to
save and restore rest of the necessary registers.

With hypervisor state restore things fall under three categories-
per-core state, per-subcore state and per-thread state. To manage this,
extend the infrastructure introduced for sleep. Mainly we add a paca
variable subcore_sibling_mask. Using this and the core_idle_state we can
distingush first thread in core and subcore.

Signed-off-by: Shreyas B. Prabhu <shreyas@linux.vnet.ibm.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2014-12-15 10:46:41 +11:00
..
boot Merge remote-tracking branch 'scottwood/next' into next 2014-11-18 17:00:38 +11:00
configs powerpc/config: Enable memory driver 2014-11-17 19:36:42 -06:00
crypto powerpc: Fix compile of sha1-powerpc-asm.S on 32-bit 2013-03-05 16:56:26 +11:00
include powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
kernel powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
kvm powerpc/powernv: Return to cpu offline loop when finished in KVM guest 2014-12-08 13:16:31 +11:00
lib powerpc: Remove more traces of bootmem 2014-11-19 21:41:51 +11:00
math-emu powerpc: Correct emulated mtfsf instruction 2014-04-07 10:33:11 +10:00
mm powerpc/mm: don't do tlbie for updatepp request with NO HPTE fault 2014-12-05 16:26:15 +11:00
net net: bpf: be friendly to kmemcheck 2014-09-09 16:58:56 -07:00
oprofile powerpc/oprofile: Disable pagefaults during user stack read 2014-12-02 14:10:08 +11:00
perf power/perf/hv-24x7: Use kmem_cache_free() instead of kfree 2014-12-12 16:06:13 +11:00
platforms powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
sysdev powerpc: Remove more traces of bootmem 2014-11-19 21:41:51 +11:00
xmon powerpc/xmon: Cleanup the breakpoint flags 2014-12-02 14:23:04 +11:00
Kconfig Merge remote-tracking branch 'scottwood/next' into next 2014-11-18 17:00:38 +11:00
Kconfig.debug Patch queue for ppc - 2014-08-01 2014-08-05 09:58:11 +02:00
Makefile powerpc: Add POWER8 CPU selection 2014-09-25 23:14:49 +10:00
relocs_check.pl Fix warning typo "CONFIG_RELCOATABLE" 2013-05-29 15:11:30 +02:00