linux_dsm_epyc7002/arch/powerpc/include/asm
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
..
8xx_immap.h
agp.h
archrandom.h
asm-compat.h PPC: Add asm helpers for BE 32bit load/store 2014-07-28 15:22:21 +02:00
asm-offsets.h
async_tx.h
atomic.h locking,arch,powerpc: Fold atomic_ops 2014-08-14 12:48:11 +02:00
backlight.h
barrier.h
bitops.h powerpc: Fix comment typos in arch/powerpc/include/asm/bitops.h 2014-11-12 16:31:46 +11:00
bootx.h
btext.h
bug.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
bugs.h
cache.h Use the POWER8 Micro Partition Prefetch Engine in KVM HV on POWER8 2014-07-28 15:23:17 +02:00
cacheflush.h
cell-pmu.h
cell-regs.h
checksum.h
cmpxchg.h
code-patching.h powerpc: Add ppc_global_function_entry() 2014-06-24 14:05:32 +10:00
compat.h
context_tracking.h
copro.h powerpc/cell: Make spu_flush_all_slbs() generic 2014-10-08 20:15:37 +11:00
cpm1.h
cpm2.h powerpc/cpm: Remove duplicate FCC_GFMR_TTX define 2014-06-11 17:03:28 +10:00
cpm.h
cpuidle.h powernv/cpuidle: Redesign idle states management 2014-12-15 10:46:40 +11:00
cputable.h powerpc: Remove unused CPU_FTRS_A2 2014-11-10 09:59:29 +11:00
cputhreads.h
cputime.h Merge branch 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu 2014-10-15 07:48:18 +02:00
current.h
dbdma.h
dbell.h
dcr-generic.h
dcr-mmio.h
dcr-native.h
dcr-regs.h
dcr.h
debug.h
delay.h
device.h
disassemble.h
div64.h
dma-mapping.h powerpc/powernv: Override dma_get_required_mask() 2014-09-30 17:15:20 +10:00
dma.h
edac.h
eeh_event.h powerpc/powernv: Fix killed EEH event 2014-06-11 17:04:33 +10:00
eeh.h powerpc/eeh: Dump PHB diag-data early 2014-12-02 11:03:26 +11:00
ehv_pic.h
elf.h powerpc: Use generic PIE randomization 2014-11-17 17:55:11 +11:00
emergency-restart.h
emulated_ops.h
epapr_hcalls.h
exception-64e.h
exception-64s.h powerpc/book3s: Add basic infrastructure to handle HMI in Linux. 2014-08-05 16:33:48 +10:00
exec.h
fadump.h powerpc/fadump: Fix endianess issues in firmware assisted dump handling 2014-10-30 16:52:46 +11:00
fb.h
feature-fixups.h
firmware.h
fixmap.h
floppy.h
fs_pd.h powerpc/8xx: Remove empty asm/mpc8xx.h 2014-06-25 18:49:40 -05:00
fsl_85xx_cache_sram.h
fsl_gtm.h
fsl_guts.h powerpc/fsl: Added rcw registers to global utility registers 2014-11-07 18:10:47 -06:00
fsl_hcalls.h
fsl_lbc.h
fsl_pamu_stash.h
ftrace.h
futex.h
gpio.h
grackle.h
hardirq.h powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
heathrow.h
highmem.h
hugetlb.h powerpc/mm: Switch to generic RCU get_user_pages_fast 2014-11-14 17:24:21 +11:00
hvcall.h KVM: PPC: Book3S HV: Add H_SET_MODE hcall handling 2014-07-28 15:22:19 +02:00
hvconsole.h
hvcserver.h
hvsi.h
hw_breakpoint.h
hw_irq.h powerpc/book3s: Add basic infrastructure to handle HMI in Linux. 2014-08-05 16:33:48 +10:00
hydra.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
i8259.h
ibmebus.h
ide.h
immap_cpm2.h
immap_qe.h
io_event_irq.h
io-defs.h
io-workarounds.h
io.h powerpc: Remove unused devm_ioremap_prot() 2014-11-10 09:59:28 +11:00
iommu.h
ipic.h
irq_regs.h
irq.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
irqflags.h powerpc: Update comments in irqflags.h 2014-07-28 14:11:23 +10:00
jump_label.h powerpc/pseries: Use jump labels for hcall tracepoints 2014-07-11 16:05:58 +10:00
Kbuild irq_work: Introduce arch_irq_work_has_interrupt() 2014-09-13 18:38:07 +02:00
kdebug.h
kdump.h
kexec.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
keylargo.h
kgdb.h
kmap_types.h
kprobes.h
kvm_asm.h KVM: PPC: Remove shared defines for SPE and AltiVec interrupts 2014-09-22 10:11:34 +02:00
kvm_book3s_32.h
kvm_book3s_64.h Patch queue for ppc - 2014-08-01 2014-08-05 09:58:11 +02:00
kvm_book3s_asm.h
kvm_book3s.h KVM: PPC: PR: Handle FSCR feature deselects 2014-07-31 10:23:46 +02:00
kvm_booke_hv_asm.h
kvm_booke.h powerpc/kvm: common sw breakpoint instr across ppc 2014-09-22 10:11:36 +02:00
kvm_fpu.h
kvm_host.h Patch queue for ppc - 2014-09-24 2014-09-24 23:19:45 +02:00
kvm_para.h
kvm_ppc.h Patch queue for ppc - 2014-09-24 2014-09-24 23:19:45 +02:00
libata-portmap.h
linkage.h
local64.h
local.h
lppaca.h
lv1call.h
machdep.h powerpc/mm: don't do tlbie for updatepp request with NO HPTE fault 2014-12-05 16:26:15 +11:00
macio.h
mc146818rtc.h
mce.h
mediabay.h
mman.h
mmu_context.h powerpc: Remove MMU_FTR_SLB 2014-07-28 14:10:23 +10:00
mmu-8xx.h powerpc/8xx: Implement 16k pages 2014-11-07 18:10:42 -06:00
mmu-40x.h
mmu-44x.h
mmu-book3e.h KVM: PPC: Book3e: Add TLBSEL/TSIZE defines for MAS0/1 2014-07-28 15:23:13 +02:00
mmu-hash32.h
mmu-hash64.h powerpc/mm: don't do tlbie for updatepp request with NO HPTE fault 2014-12-05 16:26:15 +11:00
mmu.h powerpc: Remove MMU_FTR_SLB 2014-07-28 14:10:23 +10:00
mmzone.h
module.h
mpc5xxx.h
mpc6xx.h
mpc52xx_psc.h
mpc52xx.h
mpc85xx.h powerpc/fsl-booke: Add support for T2080/T2081 SoC 2014-07-02 17:32:41 -05:00
mpc5121.h
mpc8260.h
mpic_msgr.h
mpic_timer.h
mpic.h
msi_bitmap.h Revert "powerpc/fsl_msi: spread msi ints across different MSIRs" 2014-09-19 15:20:42 -05:00
mutex.h
nvram.h
ohare.h
opal.h powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
oprofile_impl.h powerpc: Remove oprofile RS64 support 2014-07-28 14:10:25 +10:00
paca.h powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
page_32.h
page_64.h powerpc: Speed up clear_page by unrolling it 2014-10-02 16:04:21 +10:00
page.h powerpc/mm: Switch to generic RCU get_user_pages_fast 2014-11-14 17:24:21 +11:00
parport.h
pasemi_dma.h
pci-bridge.h
pci.h
percpu.h
perf_event_fsl_emb.h
perf_event_server.h powerpc/perf: Pass the struct perf_events down to compute_mmcr() 2014-07-28 14:30:47 +10:00
perf_event.h powerpc: Rename __get_SP() to current_stack_pointer() 2014-10-15 11:23:20 +11:00
pgalloc-32.h
pgalloc-64.h
pgalloc.h
pgtable-ppc32.h powerpc/8xx: set PTE bit 22 off TLBmiss 2014-11-07 18:10:43 -06:00
pgtable-ppc64-4k.h powerpc/mm: Add missing pmd accessors 2014-11-14 17:24:21 +11:00
pgtable-ppc64-64k.h powerpc/mm: Add missing pmd accessors 2014-11-14 17:24:21 +11:00
pgtable-ppc64.h powerpc/mm: Switch to generic RCU get_user_pages_fast 2014-11-14 17:24:21 +11:00
pgtable.h powerpc/mm: Switch to generic RCU get_user_pages_fast 2014-11-14 17:24:21 +11:00
plpar_wrappers.h powerpc/pseries: Use new defines when calling H_SET_MODE 2014-10-07 22:01:56 +11:00
pmac_feature.h
pmac_low_i2c.h
pmac_pfunc.h
pmc.h
pmi.h
pnv-pci.h powerpc/powerpc: Add new PCIe functions for allocating cxl interrupts 2014-10-08 20:15:44 +11:00
ppc4xx_ocm.h
ppc4xx.h
ppc_asm.h PPC: Add _GLOBAL_TOC for 32bit 2014-06-26 13:19:42 +02:00
ppc-opcode.h powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
ppc-pci.h
probes.h
processor.h powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
prom.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
ps3.h
ps3av.h
ps3gpu.h
ps3stor.h
pte-8xx.h powerpc/8xx: set PTE bit 22 off TLBmiss 2014-11-07 18:10:43 -06:00
pte-40x.h
pte-44x.h
pte-book3e.h
pte-common.h mm: remove misleading ARCH_USES_NUMA_PROT_NONE 2014-10-09 22:25:52 -04:00
pte-fsl-booke.h booke/powerpc: define wimge shift mask to fix compilation error 2014-06-25 18:49:39 -05:00
pte-hash32.h
pte-hash64-4k.h
pte-hash64-64k.h powerpc/mm: Use read barrier when creating real_pte 2014-08-13 18:20:41 +10:00
pte-hash64.h
ptrace.h powerpc/perf: Fix ABIv2 kernel backtraces 2014-09-09 19:02:45 +10:00
qe_ic.h
qe.h
reg_8xx.h
reg_a2.h powerpc: Remove platforms/wsp and associated pieces 2014-06-11 16:35:38 +10:00
reg_booke.h KVM: PPC: BOOKE: Emulate debug registers and exception 2014-09-22 10:11:33 +02:00
reg_fsl_emb.h
reg.h powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
rheap.h
rio.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
rtas.h
rtc.h
runlatch.h
scom.h
sections.h Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2014-06-10 18:54:22 -07:00
serial.h
setjmp.h
setup.h powerpc: Remove bootmem allocator 2014-11-10 09:59:25 +11:00
sfp-machine.h
shmparam.h
signal.h
smp.h
smu.h
sparsemem.h
spinlock_types.h
spinlock.h powerpc: Add smp_mb() to arch_spin_is_locked() 2014-08-13 15:13:26 +10:00
spu_csa.h
spu_info.h
spu_priv1.h
spu.h powerpc/cell: Move spu_handle_mm_fault() out of cell platform 2014-10-08 20:14:54 +11:00
sstep.h powerpc: Emulate icbi, mcrf and conditional-trap instructions 2014-09-25 23:14:51 +10:00
string.h
swab.h powerpc: Remove __arch_swab* 2014-06-24 12:43:15 +10:00
swiotlb.h
switch_to.h powerpc/perf: Ensure all EBB register state is cleared on fork() 2014-06-11 17:03:41 +10:00
synch.h
syscall.h powerpc: add little endian flag to syscall_get_arch() 2014-12-12 20:14:08 +11:00
syscalls.h
systbl.h powerpc: Wire up sys_bpf() syscall 2014-10-22 14:03:06 +11:00
tce.h
termios.h
thread_info.h powerpc: Don't use local named register variable in current_thread_info 2014-11-10 09:59:31 +11:00
time.h KVM: PPC: BOOK3S: PR: Emulate virtual timebase register 2014-07-28 15:21:50 +02:00
timex.h
tlb.h
tlbflush.h powerpc/mm: don't do tlbie for updatepp request with NO HPTE fault 2014-12-05 16:26:15 +11:00
tm.h
topology.h Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2014-06-10 18:54:22 -07:00
trace.h powernv: Add OPAL tracepoints 2014-07-11 16:06:08 +10:00
tsi108_irq.h
tsi108_pci.h
tsi108.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
types.h
uaccess.h
ucc_fast.h
ucc_slow.h
ucc.h
udbg.h powerpc: Remove stale function prototypes 2014-09-25 23:14:43 +10:00
uic.h
unaligned.h
uninorth.h
unistd.h powerpc: Wire up sys_bpf() syscall 2014-10-22 14:03:06 +11:00
uprobes.h
user.h
vdso_datapage.h
vdso.h
vga.h powerpc: Remove unused vgacon_remap_base & fix build break 2014-11-10 09:59:31 +11:00
vio.h
word-at-a-time.h powerpc: ppc64le optimised word at a time 2014-09-30 14:59:13 +10:00
xics.h powerpc: Replace __get_cpu_var uses 2014-11-03 12:12:32 +11:00
xilinx_intc.h
xilinx_pci.h
xmon.h
xor.h