qemu-e2k/include/hw
Greg Kurz 401774387a ppc: Deassert the external interrupt pin in KVM on reset
When a CPU is reset, QEMU makes sure no interrupt is pending by clearing
CPUPPCstate::pending_interrupts in ppc_cpu_reset(). In the case of a
complete machine emulation, eg. a sPAPR machine, an external interrupt
request could still be pending in KVM though, eg. an IPI. It will be
eventually presented to the guest, which is supposed to acknowledge it at
the interrupt controller. If the interrupt controller is emulated in QEMU,
either XICS or XIVE, ppc_set_irq() won't deassert the external interrupt
pin in KVM since it isn't pending anymore for QEMU. When the vCPU re-enters
the guest, the interrupt request is still pending and the vCPU will try
again to acknowledge it. This causes an infinite loop and eventually hangs
the guest.

The code has been broken since the beginning. The issue wasn't hit before
because accel=kvm,kernel-irqchip=off is an awkward setup that never got
used until recently with the LC92x IBM systems (aka, Boston).

Add a ppc_irq_reset() function to do the necessary cleanup, ie. deassert
the IRQ pins of the CPU in QEMU and most importantly the external interrupt
pin for this vCPU in KVM.

Reported-by: Satheesh Rajendran <sathnaga@linux.vnet.ibm.com>
Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <157548861740.3650476.16879693165328764758.stgit@bahia.lan>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2019-12-17 10:39:48 +11:00
..
acpi piix4: Add a MC146818 RTC Controller as specified in datasheet 2019-11-05 23:33:12 +01:00
adc
arm hw/arm/virt: Simplify by moving the gic in the machine state 2019-12-16 10:46:35 +00:00
audio
block block: Support providing LCHS from user 2019-10-31 11:47:11 -04:00
char
core Remove unassigned_access CPU hook 2019-11-11 13:44:16 +00:00
cpu
cris
display hw/m68k: add Nubus macfb video card 2019-10-28 19:06:49 +01:00
dma
firmware
gpio
hyperv
i2c aspeed/i2c: Add support for DMA transfers 2019-12-16 10:46:34 +00:00
i386 hw: add compat machines for 5.0 2019-12-14 10:25:50 +01:00
ide
input
intc
ipack
ipmi ipmi: Add support to customize OEM functions 2019-12-17 10:39:47 +11:00
isa piix4: Rename PIIX4 object to piix4-isa 2019-11-05 23:33:12 +01:00
kvm
lm32
m68k
mem
mips
misc hw/m68k: implement ADB bus support for via 2019-10-28 19:06:45 +01:00
net aspeed: add support for the Aspeed MII controller of the AST2600 2019-10-15 18:09:05 +01:00
nubus hw/m68k: add Nubus support 2019-10-28 19:06:47 +01:00
nvram fw_cfg: add "modify" functions for all types 2019-10-22 09:39:54 +02:00
pci pci: mark devices partially unplugged 2019-10-29 18:55:26 -04:00
pci-bridge
pci-host hw/pci-host/i440fx: Remove the last PIIX3 traces 2019-11-05 23:33:12 +01:00
ppc ppc: Deassert the external interrupt pin in KVM on reset 2019-12-17 10:39:48 +11:00
rdma
riscv hw/riscv: Add optional symbol callback ptr to riscv_load_kernel() 2019-11-25 12:34:52 -08:00
rtc Merge commit 'df84f17' into HEAD 2019-10-26 15:38:02 +02:00
s390x
scsi scsi: Propagate unrealize() callback to scsi-hd 2019-10-31 11:47:25 -04:00
sd hw/sd/sdhci: Add dummy Samsung SDHCI controller 2019-10-22 17:44:00 +01:00
semihosting
sh4
southbridge hw/pci-host/piix: Extract PIIX3 functions to hw/isa/piix3.c 2019-11-05 23:33:12 +01:00
sparc
ssi aspeed/smc: Add AST2600 timings registers 2019-12-16 10:46:34 +00:00
timer Fix typos and docs, trivial changes and RTC devices split 2019-10-25 14:17:08 +01:00
tricore
unicore32
usb
vfio
virtio Pull request 2019-12-13 18:14:07 +00:00
watchdog watchdog/aspeed: Fix AST2600 frequency behaviour 2019-12-16 10:46:34 +00:00
xen global: Squash 'the the' 2019-11-06 17:19:40 +01:00
xtensa
boards.h virtio-blk: advertise F_WCE (F_FLUSH) if F_CONFIG_WCE is advertised 2019-12-13 11:22:06 +00:00
bt.h
elf_ops.h
empty_slot.h
fw-path-provider.h
hotplug.h
hw.h
ide.h
irq.h Revert "irq: introduce qemu_irq_proxy()" 2019-11-05 23:33:12 +01:00
loader-fit.h
loader.h
nmi.h
or-irq.h
pcmcia.h
platform-bus.h
ptimer.h ptimer: Remove old ptimer_init_with_bh() API 2019-11-11 13:44:16 +00:00
qdev-core.h migration: allow unplug during migration for failover devices 2019-10-29 18:55:26 -04:00
qdev-dma.h
qdev-properties.h
register.h
registerfields.h
stream.h
sysbus.h
usb.h