linux/arch/powerpc
Paul Mackerras 19f8a5b5be powerpc/powernv: Don't reprogram SLW image on every KVM guest entry/exit
Commit 24be85a23d ("powerpc/powernv: Clear PECE1 in LPCR via stop-api
only on Hotplug", 2017-07-21) added two calls to opal_slw_set_reg()
inside pnv_cpu_offline(), with the aim of changing the LPCR value in
the SLW image to disable wakeups from the decrementer while a CPU is
offline.  However, pnv_cpu_offline() gets called each time a secondary
CPU thread is woken up to participate in running a KVM guest, that is,
not just when a CPU is offlined.

Since opal_slw_set_reg() is a very slow operation (with observed
execution times around 20 milliseconds), this means that an offline
secondary CPU can often be busy doing the opal_slw_set_reg() call
when the primary CPU wants to grab all the secondary threads so that
it can run a KVM guest.  This leads to messages like "KVM: couldn't
grab CPU n" being printed and guest execution failing.

There is no need to reprogram the SLW image on every KVM guest entry
and exit.  So that we do it only when a CPU is really transitioning
between online and offline, this moves the calls to
pnv_program_cpu_hotplug_lpcr() into pnv_smp_cpu_kill_self().

Fixes: 24be85a23d ("powerpc/powernv: Clear PECE1 in LPCR via stop-api only on Hotplug")
Cc: stable@vger.kernel.org # v4.14+
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2019-02-22 00:10:15 +11:00
..
boot powerpc/dts: Standardize DTS status assignments from "ok" to "okay" 2019-02-22 00:10:15 +11:00
configs powerpc/configs: Add PPC4xx_OCM to ppc40x_defconfig 2018-12-30 14:00:47 +11:00
crypto powerpc updates for 4.19 2018-08-17 11:32:50 -07:00
include powerpc/powernv: Don't reprogram SLW image on every KVM guest entry/exit 2019-02-22 00:10:15 +11:00
kernel powerpc/64s: Fix logic when handling unknown CPU features 2019-02-22 00:10:15 +11:00
kvm Merge branch 'topic/ppc-kvm' into next 2019-02-22 00:09:56 +11:00
lib Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
math-emu powerpc: math-emu: remove unneeded header search paths 2019-01-14 20:39:27 +11:00
mm powerpc/64s/hash: Fix assert_slb_presence() use of the slbfee. instruction 2019-02-22 00:10:14 +11:00
net Merge git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next 2018-12-10 18:00:43 -08:00
oprofile Remove 'type' argument from access_ok() function 2019-01-03 18:57:57 -08:00
perf Merge branch 'fixes' into next 2019-02-19 19:56:26 +11:00
platforms powerpc/powernv: Don't reprogram SLW image on every KVM guest entry/exit 2019-02-22 00:10:15 +11:00
purgatory powerpc updates for 4.19 2018-08-17 11:32:50 -07:00
sysdev Merge branch 'topic/dma' into next 2019-02-21 23:15:10 +11:00
tools powerpc/tools/checkpatch: Ignore DT_SPLIT_BINDING_PATCH 2018-12-04 19:45:01 +11:00
xmon powerpc/xmon: fix dump_segments() 2018-12-19 18:56:32 +11:00
Kbuild powerpc: Add -Werror at arch/powerpc level 2018-10-19 00:56:17 +11:00
Kconfig powerpc: Make PPC_64K_PAGES depend on only 44x or PPC_BOOK3S_64 2019-02-22 00:10:15 +11:00
Kconfig.debug powerpc: remove redundant 'default n' from Kconfig-s 2018-10-13 22:21:25 +11:00
Makefile powerpc: remove redundant header search path additions 2019-01-14 20:39:27 +11:00
Makefile.postlink