qemu/hw
Greg Kurz 930ef3b5c2 spapr: Fix reset of transient DR connectors
Documentation of object_property_iter_init() clearly stipulates that
"it is forbidden to modify the property list while iterating". But this
is exactly what we do when resetting transient DR connectors during CAS.
The call to spapr_drc_reset() can finalize the hot-unplug sequence of a
PHB or a PCI bridge, both of which will then in turn destroy their PCI
DRCs. This could potentially invalidate the iterator. It is pure luck
that this haven't caused any issues so far.

Change spapr_drc_reset() to return true if it caused a device to be
removed. Restart from scratch in this case. This can potentially
increase the overall DRC reset time, especially with a high maxmem
which generates a lot of LMB DRCs. But this kind of setup is rare,
and so is the use case of rebooting a guest while doing hot-unplug.

Signed-off-by: Greg Kurz <groug@kaod.org>
Message-Id: <20201218103400.689660-3-groug@kaod.org>
Reviewed-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Tested-by: Daniel Henrique Barboza <danielhb413@gmail.com>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
2021-01-06 11:09:59 +11:00
..
9pfs hw/9pfs: Fix Kconfig dependency problem between 9pfs and Xen 2020-11-05 15:21:11 +01:00
acpi qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
adc meson: convert hw/adc 2020-08-21 06:30:32 -04:00
alpha vl: extract softmmu/datadir.c 2020-12-10 12:15:18 -05:00
arm qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
audio cs4231: Get rid of empty property array 2020-12-15 10:02:07 -05:00
avr vl: extract softmmu/datadir.c 2020-12-10 12:15:18 -05:00
block Machine queue, 2020-12-23 2021-01-01 22:57:15 +00:00
char qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
core Machine queue, 2020-12-23 2021-01-01 22:57:15 +00:00
cpu cpu/core: Register core-id and nr-threads as class properties 2020-09-22 16:48:29 -04:00
cris cris: do not use ram_size global 2020-12-10 12:15:07 -05:00
display migration: Replace migration's JSON writer by the general one 2020-12-19 10:39:16 +01:00
dma hw/dma/xilinx_axidma: Rename StreamSlave as StreamSink 2020-12-10 12:15:04 -05:00
gpio nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
hppa vl: extract softmmu/datadir.c 2020-12-10 12:15:18 -05:00
hyperv qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
i2c nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
i386 qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
ide qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
input ads7846: moves from the hw/display folder to the hw/input folder. 2020-12-13 17:54:55 +01:00
intc spapr/xive: Make spapr_xive_pic_print_info() static 2021-01-06 11:09:59 +11:00
ipack Use OBJECT_DECLARE_SIMPLE_TYPE when possible 2020-09-18 14:12:32 -04:00
ipmi qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
isa x86: ich9: let firmware negotiate 'CPU hot-unplug with SMI' feature 2020-12-09 13:04:17 -05:00
lm32 vl: extract softmmu/datadir.c 2020-12-10 12:15:18 -05:00
m68k hw/m68k/q800.c: Make the GLUE chip an actual QOM device 2020-12-12 18:06:01 +01:00
mem nomaintainer: Fix Lesser GPL version number 2020-11-15 17:04:40 +01:00
microblaze vl: make qemu_get_machine_opts static 2020-12-15 12:51:55 -05:00
mips hw/mips/malta: Rewrite CP0_MVPConf0 access using deposit() 2020-12-13 20:26:02 +01:00
misc qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
moxie moxie: do not use ram_size global 2020-12-10 12:15:08 -05:00
net Machine queue, 2020-12-23 2021-01-01 22:57:15 +00:00
nios2 * New -action option and set-action QMP command (Alejandro) 2020-12-15 21:24:31 +00:00
nubus meson: convert hw/nubus 2020-08-21 06:30:25 -04:00
nvram Machine queue, 2020-12-23 2021-01-01 22:57:15 +00:00
openrisc target/openrisc: Move pic_cpu code into CPU object proper 2020-12-15 12:04:30 +00:00
pci Machine queue, 2020-12-23 2021-01-01 22:57:15 +00:00
pci-bridge qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
pci-host hw/pci-host/pam: Replace magic number by PAM_REGIONS_COUNT definition 2020-12-13 17:07:05 +01:00
pcmcia pxa2xx: Move QOM macros to header 2020-08-27 14:04:55 -04:00
ppc spapr: Fix reset of transient DR connectors 2021-01-06 11:09:59 +11:00
rdma Machine queue, 2020-12-23 2021-01-01 22:57:15 +00:00
riscv riscv/opentitan: Update the OpenTitan memory layout 2020-12-17 21:56:44 -08:00
rtc Machine queue, 2020-12-23 2021-01-01 22:57:15 +00:00
rx rx: move BIOS load from MCU to board 2020-12-10 12:15:06 -05:00
s390x Machine queue, 2020-12-23 2021-01-01 22:57:15 +00:00
scsi Machine queue, 2020-12-23 2021-01-01 22:57:15 +00:00
sd qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
semihosting meson: convert hw/semihosting 2020-08-21 06:30:25 -04:00
sh4 sh4: remove bios_name 2020-12-10 12:15:06 -05:00
smbios i386: do not use ram_size global 2020-12-10 12:15:08 -05:00
sparc vl: extract softmmu/datadir.c 2020-12-10 12:15:18 -05:00
sparc64 vl: extract softmmu/datadir.c 2020-12-10 12:15:18 -05:00
ssi hw/core/stream: Rename StreamSlave as StreamSink 2020-12-10 12:15:04 -05:00
timer hw/timer/renesas_tmr: silence the compiler warnings 2020-12-18 09:14:23 +01:00
tpm qdev: Move qdev_prop_tpm declaration to tpm_prop.h 2020-12-18 15:20:17 -05:00
tricore tricore tcg cpus: Fix Lesser GPL version number 2020-11-15 16:40:30 +01:00
unicore32 meson: convert hw/arch* 2020-08-21 06:30:33 -04:00
usb Machine queue, 2020-12-23 2021-01-01 22:57:15 +00:00
vfio qdev: Rename qdev_get_prop_ptr() to object_field_prop_ptr() 2020-12-18 15:20:18 -05:00
virtio Machine queue, 2020-12-23 2021-01-01 22:57:15 +00:00
watchdog hw/watchdog/wdt_diag288: Remove unnecessary includes 2020-12-11 11:38:10 +01:00
xen qdev: Move softmmu properties to qdev-properties-system.h 2020-12-18 15:20:17 -05:00
xenpv meson: convert hw/arch* 2020-08-21 06:30:33 -04:00
xtensa vl: make qemu_get_machine_opts static 2020-12-15 12:51:55 -05:00
Kconfig hw/net/can: Introduce Xilinx ZynqMP CAN controller 2020-12-10 11:30:44 +00:00
meson.build meson: convert hw/arch* 2020-08-21 06:30:33 -04:00