linux_dsm_epyc7002/arch/powerpc
Gautham R. Shenoy 9006123157 powerpc/powernv/smp: Add busy-wait loop as fall back for CPU-Hotplug
Currently, the powernv cpu-offline function assumes that platform idle
states such as stop on POWER9, winkle/sleep/nap on POWER8 are always
available. On POWER8, it picks nap as the default state if other deep
idle states like sleep/winkle are not available and enabled in the
platform.

On POWER9, nap is not available and all idle states are managed by
STOP instruction.  The parameters to the idle state are passed through
processor stop status control register (PSSCR).  Hence as such
executing STOP would take parameters from current PSSCR. We do not
want to make any assumptions in kernel on what STOP states and PSSCR
features are configured by the platform.

Ideally platform will configure a good set of stop states that can be
used in the kernel.  We would like to start with a clean slate, if the
platform choose to not configure any state or there is an error in
platform firmware that lead to no stop states being configured or
allowed to be requested.

This patch adds a fallback method for CPU-Hotplug that is similar to
snooze loop at idle where the threads are left to spin at low priority
and hence reduce the cycles consumed.

This is a safe fallback mechanism in the case when no stop state would
be requested if the platform firmware did not configure them most
likely due to an error condition.

Requesting a stop state when the platform has not configured them or
enabled them would lead to further error conditions which could be
difficult to debug.

[Changelog written with inputs from svaidy@linux.vnet.ibm.com]
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Signed-off-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-04-11 08:45:09 +10:00
..
boot powerpc/boot: Fix zImage TOC alignment 2017-03-08 10:39:32 +11:00
configs powerpc/configs: Re-enable POWER8 crc32c 2017-03-28 10:52:04 +11:00
crypto crypto: powerpc - Fix initialisation of crc32c context 2017-03-08 14:01:08 +08:00
include powerpc/powernv: Move CPU-Offline idle state invocation from smp.c to idle.c 2017-04-11 08:45:09 +10:00
kernel powerpc: Remove unnecessary includes of asm/debug.h 2017-04-11 07:46:04 +10:00
kvm powerpc: Remove unnecessary includes of asm/debug.h 2017-04-11 07:46:04 +10:00
lib powerpc fixes for 4.11 #3 2017-03-07 10:46:10 -08:00
math-emu Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
mm powerpc/mm: Remove reduntant initmem information from log 2017-04-11 07:46:05 +10:00
net powerpc updates for 4.11 part 1. 2017-02-22 10:30:38 -08:00
oprofile ktime: Cleanup ktime_set() usage 2016-12-25 17:21:22 +01:00
perf powerpc/perf: Handle sdar_mode for marked event in power9 2017-03-09 13:34:54 +11:00
platforms powerpc/powernv/smp: Add busy-wait loop as fall back for CPU-Hotplug 2017-04-11 08:45:09 +10:00
purgatory kexec, x86/purgatory: Unbreak it and clean it up 2017-03-10 20:55:09 +01:00
scripts powerpc/ftrace: Add Kconfig & Make glue for mprofile-kernel 2016-03-07 14:53:56 +11:00
sysdev powerpc: Create asm/debugfs.h and move powerpc_debugfs_root there 2017-04-11 07:46:03 +10:00
xmon powerpc: Create asm/debugfs.h and move powerpc_debugfs_root there 2017-04-11 07:46:03 +10:00
Kconfig powerpc: Make sparsemem the default on 64-bit Book3S 2017-04-11 07:46:05 +10:00
Kconfig.debug powerpc/xmon: Enable disassembly files (compilation changes) 2017-02-15 20:02:42 +11:00
Makefile powerpc: Fix compiling a BE kernel with a powerpc64le toolchain 2017-03-03 11:24:50 +11:00
relocs_check.sh powerpc/64: whitelist unresolved modversions CRCs 2016-09-22 14:46:31 +02:00