linux/arch/powerpc
Greg Kurz 5706d14d2a KVM: PPC: Book3S HV: XICS: Replace the 'destroy' method by a 'release' method
Similarly to what was done with XICS-on-XIVE and XIVE native KVM devices
with commit 5422e95103 ("KVM: PPC: Book3S HV: XIVE: Replace the 'destroy'
method by a 'release' method"), convert the historical XICS KVM device to
implement the 'release' method. This is needed to run nested guests with
an in-kernel IRQ chip. A typical POWER9 guest can select XICS or XIVE
during boot, which requires to be able to destroy and to re-create the
KVM device. Only the historical XICS KVM device is available under pseries
at the current time and it still uses the legacy 'destroy' method.

Switching to 'release' means that vCPUs might still be running when the
device is destroyed. In order to avoid potential use-after-free, the
kvmppc_xics structure is allocated on first usage and kept around until
the VM exits. The same pointer is used each time a KVM XICS device is
being created, but this is okay since we only have one per VM.

Clear the ICP of each vCPU with vcpu->mutex held. This ensures that the
next time the vCPU resumes execution, it won't be going into the XICS
code anymore.

Signed-off-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Tested-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2020-09-03 14:12:48 +10:00
..
boot Kbuild updates for v5.9 2020-08-09 14:10:26 -07:00
configs powerpc/configs: Add BLK_DEV_NVME to pseries_defconfig 2020-07-29 23:47:53 +10:00
crypto powerpc: Replace HTTP links with HTTPS ones 2020-07-22 00:01:23 +10:00
include KVM: PPC: Book3S HV: XICS: Replace the 'destroy' method by a 'release' method 2020-09-03 14:12:48 +10:00
kernel powerpc/kernel: Cleanup machine check function declarations 2020-08-17 14:13:18 +10:00
kexec powerpc/kexec_file: Enable early kernel OPAL calls 2020-07-29 23:47:55 +10:00
kvm KVM: PPC: Book3S HV: XICS: Replace the 'destroy' method by a 'release' method 2020-09-03 14:12:48 +10:00
lib powerpc/test_emulate_step: Add testcases for divde[.] and divdeu[.] instructions 2020-07-29 23:47:52 +10:00
math-emu
mm powerpc/32s: Fix module loading failure when VMALLOC_END is over 0xf0000000 2020-08-21 23:30:25 +10:00
net powerpc/ppc-opcode: Consolidate powerpc instructions from bpf_jit.h 2020-07-16 13:12:42 +10:00
oprofile maccess: rename probe_user_{read,write} to copy_{from,to}_user_nofault 2020-06-17 10:57:41 -07:00
perf powerpc/perf/hv-24x7: Move cpumask file to top folder of hv-24x7 driver 2020-08-21 23:35:27 +10:00
platforms powerpc/pseries: Do not initiate shutdown when system is running on UPS 2020-08-20 22:55:54 +10:00
purgatory powerpc/kexec_file: Enable early kernel OPAL calls 2020-07-29 23:47:55 +10:00
sysdev powerpc: fix function annotations to avoid section mismatch warnings with gcc-10 2020-07-30 10:50:07 +10:00
tools powerpc/64s: allow for clang's objdump differences 2020-07-27 00:01:29 +10:00
xmon Kbuild updates for v5.9 2020-08-09 14:10:26 -07:00
Kbuild powerpc/kexec: Move kexec files into a dedicated subdir. 2019-11-21 15:41:34 +11:00
Kconfig powerpc updates for 5.9 2020-08-07 10:33:50 -07:00
Kconfig.debug powerpc: Remove Xilinx PPC405/PPC440 support 2020-05-28 23:24:34 +10:00
Makefile powerpc/4xx: ppc4xx compile flag optimizations 2020-06-22 14:19:12 +10:00
Makefile.postlink powerpc: Do not consider weak unresolved symbol relocations as bad 2020-01-31 20:17:22 +11:00