OpenCloudOS-Kernel/arch/powerpc/platforms/powernv
Gautham R. Shenoy 5d298baa41 powerpc/powernv: Clear LPCR[PECE1] via stop-api only for deep state offline
Commit 24be85a23d ("powerpc/powernv: Clear PECE1 in LPCR via
stop-api only on Hotplug") clears the PECE1 bit of the LPCR via
stop-api during CPU-Hotplug to prevent wakeup due to a decrementer on
an offlined CPU which is in a deep stop state.

In the case where the stop-api support is found to be lacking, the
commit 785a12afdb ("powerpc/powernv/idle: Disable LOSE_FULL_CONTEXT
states when stop-api fails") disables deep states that lose hypervisor
context. Thus in this case, the offlined CPU will be put to some
shallow idle state.

However, we currently unconditionally clear the PECE1 in LPCR via
stop-api during CPU-Hotplug even when deep states are disabled due to
stop-api failure.

Fix this by clearing PECE1 of LPCR via stop-api during CPU-Hotplug
*only* when the offlined CPU will be put to a deep state that loses
hypervisor context.

Fixes: 24be85a23d ("powerpc/powernv: Clear PECE1 in LPCR via stop-api only on Hotplug")
Reported-by: Pavithra Prakash <pavirampu@linux.vnet.ibm.com>
Signed-off-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Reviewed-by: Nicholas Piggin <npiggin@gmail.com>
Tested-by: Pavithra Prakash <pavrampu@linux.vnet.ibm.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2017-09-20 13:30:09 +10:00
..
Kconfig powerpc/powernv/vas: Define vas_init() and vas_exit() 2017-08-31 14:26:26 +10:00
Makefile powerpc/powernv/vas: Define vas_init() and vas_exit() 2017-08-31 14:26:26 +10:00
copy-paste.h powerpc/powernv/vas: Define copy/paste interfaces 2017-08-31 14:26:38 +10:00
eeh-powernv.c powerpc/eeh: Remove unnecessary config_addr from eeh_dev 2017-08-31 14:26:09 +10:00
idle.c powerpc/powernv: Clear LPCR[PECE1] via stop-api only for deep state offline 2017-09-20 13:30:09 +10:00
memtrace.c powerpc/powernv: Enable removal of memory for in memory tracing 2017-08-24 22:14:38 +10:00
npu-dma.c powerpc updates for 4.14 2017-09-07 10:15:40 -07:00
opal-async.c powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
opal-dump.c powerpc/powernv : Drop reference added by kset_find_obj() 2016-08-29 12:48:21 +10:00
opal-elog.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
opal-flash.c powerpc: Add const to bin_attribute structures 2017-08-17 21:56:26 +10:00
opal-hmi.c powerpc/powernv: Flush console before platform error reboot 2017-08-31 14:26:03 +10:00
opal-imc.c powerpc/powernv: Fix build error in opal-imc.c when NUMA=n 2017-08-28 22:09:57 +10:00
opal-irqchip.c powerpc/opal-irqchip: Use interrupt names if present 2017-02-09 10:31:37 +11:00
opal-kmsg.c powerpc/powernv: Fix OPAL_CONSOLE_FLUSH prototype and usages 2016-01-13 12:35:17 +11:00
opal-lpc.c powerpc: Create asm/debugfs.h and move powerpc_debugfs_root there 2017-04-11 07:46:03 +10:00
opal-memory-errors.c powerpc/powernv: Fix spelling mistake "Retrived" -> "Retrieved" 2016-06-28 13:52:18 +10:00
opal-msglog.c powerpc/powernv: Report size of OPAL memcons log 2017-01-25 13:33:55 +11:00
opal-nvram.c powerpc/powernv: Add pstore support on powernv 2015-03-23 14:06:10 +11:00
opal-power.c powerpc/powernv: Add poweroff (EPOW, DPO) events support for PowerNV platform 2015-07-16 13:34:36 +10:00
opal-powercap.c powerpc/powernv: Add support for powercap framework 2017-08-10 22:39:53 +10:00
opal-prd.c powerpc/powernv: use memdup_user 2017-07-24 21:48:42 +10:00
opal-psr.c powerpc/powernv: Add support to set power-shifting-ratio 2017-08-10 22:40:01 +10:00
opal-rtc.c powerpc/powernv: Only delay opal_rtc_read() retry when necessary 2015-12-27 19:12:40 +11:00
opal-sensor-groups.c powerpc/powernv: Add support to clear sensor groups data 2017-08-10 22:40:05 +10:00
opal-sensor.c powerpc/powernv: Handle OPAL_WRONG_STATE in opal_get_sensor_data() 2017-03-31 15:22:56 +11:00
opal-sysparam.c powerpc/opal: Add inline function to get rc from an ASYNC_COMP opal_msg 2016-06-29 17:33:18 +10:00
opal-tracepoints.c tracing: Have the reg function allow to fail 2016-12-09 09:13:30 -05:00
opal-wrappers.S powerpc/asm: Convert .llong directives to .8byte 2017-08-31 14:26:47 +10:00
opal-xscom.c powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
opal.c powerpc/powernv: Use kernel crash path for machine checks 2017-08-31 14:26:04 +10:00
pci-cxl.c powerpc: Remove all usages of NO_IRQ 2016-09-20 20:57:12 +10:00
pci-ioda.c powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
pci.c powerpc/powernv: Enable PCI peer-to-peer 2017-08-08 11:27:30 +10:00
pci.h powerpc/powernv: Enable PCI peer-to-peer 2017-08-08 11:27:30 +10:00
powernv.h powerpc/powernv: Flush console before platform error reboot 2017-08-31 14:26:03 +10:00
rng.c powerpc: Convert to using %pOF instead of full_name 2017-08-23 22:27:04 +10:00
setup.c powerpc/powernv: Tell OPAL about our MMU mode on POWER9 2017-07-10 21:12:27 +10:00
smp.c powerpc/powernv: Clear PECE1 in LPCR via stop-api only on Hotplug 2017-08-01 21:01:28 +10:00
subcore-asm.S powerpc/powernv: Add support for POWER8 split core on powernv 2014-05-28 13:35:37 +10:00
subcore.c powerpc updates for 4.13 2017-07-07 13:55:45 -07:00
subcore.h powernv/powerpc: Add winkle support for offline cpus 2014-12-15 10:46:41 +11:00
vas-window.c powerpc/powernv/vas: Define copy/paste interfaces 2017-08-31 14:26:38 +10:00
vas.c powerpc/powernv/vas: Define vas_init() and vas_exit() 2017-08-31 14:26:26 +10:00
vas.h powerpc/powernv/vas: Define copy/paste interfaces 2017-08-31 14:26:38 +10:00