qemu-e2k/hw
David Gibson 3340e5c4f2 spapr: Use unplug_request for PCI hot unplug
AIUI, ->unplug_request in the HotplugHandler is used for "soft"
unplug, where acknowledgement from the guest is required before
completing the unplug, whereas ->unplug is used for "hard" unplug
where qemu unilaterally removes the device, and the guest just has to
cope with its sudden absence.  For spapr we (correctly) use
->unplug_request for CPU and memory hot unplug but we use ->unplug for
PCI.

While I think it might be possible to support "hard" PCI unplug within
the PAPR model, that's not how it actually works now.  Although it's
called from ->unplug, the PCI unplug path will usually just mark the
device for removal, with completion of the unplug delayed until
userspace responds to the unplug notification. If the guest doesn't
respond as expected, that could delay the unplug completion arbitrarily
long.

To reflect that, change the PCI unplug path to be called from
->unplug_request.  We also rename spapr_phb_hot_plug_child() and
spapr_phb_hot_unplug_child() to spapr_pci_plug() and
spapr_pci_unplug_request() to more obviously reflect the callbacks they're
implementing.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Laurent Vivier <lvivier@redhat.com>
Reviewed-by: Greg Kurz <groug@kaod.org>
2017-07-11 11:04:02 +10:00
..
9pfs 9pfs: handle transport errors in pdu_complete() 2017-06-29 15:11:51 +02:00
acpi include/exec/poison: Mark CONFIG_KVM as poisoned, too 2017-07-04 14:30:03 +02:00
adc STM32F2xx: Add the ADC device 2016-10-04 13:28:07 +01:00
alpha memory: tune last param of iommu_ops.translate() 2017-05-25 21:25:27 +03:00
arm bcm2835_fb: use {get, set}_uint() for "vcram-size" and "vcram-base" 2017-06-20 14:31:32 +02:00
audio audio: Rename hw/audio/audio.h to hw/audio/soundhw.h 2017-05-19 10:48:54 +02:00
block -----BEGIN PGP SIGNATURE----- 2017-06-30 13:26:41 +01:00
bt be-hci: use backend functions 2017-06-02 11:33:53 +04:00
char -----BEGIN PGP SIGNATURE----- 2017-06-05 10:09:14 +01:00
core accel: introduce AccelClass.global_props 2017-06-28 11:18:38 +02:00
cpu hw/cpu: core.c can be compiled as common object 2017-06-09 12:02:55 +10:00
cris cris: Fix broken header guard in hw/cris/boot.h 2016-07-12 16:20:46 +02:00
display xenfb: remove xen_init_display "temporary" hack 2017-07-07 11:10:03 -07:00
dma hw/dma: QOM'ify sun4m_iommu.c 2017-06-02 05:54:43 +01:00
gpio qdev: Replace cannot_instantiate_with_device_add_yet with !user_creatable 2017-05-17 10:37:00 -03:00
i2c migration/next for 20170601 2017-06-02 14:07:53 +01:00
i386 xen-platform: Cleanup network infrastructure when emulated NICs are unplugged 2017-07-07 11:11:12 -07:00
ide pci: Replace pci_add_capability2() with pci_add_capability() 2017-07-03 22:29:49 +03:00
input vmstate: error hint for failed equal checks 2017-06-28 11:18:44 +02:00
intc s390x: fix realize inheritance for kvm-flic 2017-07-05 19:44:23 +02:00
ipack ipack: Update e-mail address 2016-05-18 15:04:27 +03:00
ipmi char: move CharBackend handling in char-fe unit 2017-06-02 11:33:53 +04:00
isa chardev: move headers to include/chardev 2017-06-02 11:33:52 +04:00
lm32 char: rename CharDriverState Chardev 2017-01-27 18:07:59 +01:00
m68k hw/m68k: QOMify the ColdFire interrupt controller 2017-02-18 22:23:31 +01:00
mem pc-dimm: make "size" property uint64 2017-06-20 14:31:32 +02:00
microblaze Remove reduntant qemu: from error functions 2017-05-07 09:57:51 +03:00
mips chardev: move headers to include/chardev 2017-06-02 11:33:52 +04:00
misc hw/misc/edu: Compile the edu device as common object 2017-07-04 14:39:27 +02:00
moxie hw: explicitly include qemu-common.h and cpu.h 2016-03-22 22:20:17 +01:00
net virtio-net: fix tx queue size for !vhost-user 2017-07-03 22:29:49 +03:00
nios2 Remove reduntant qemu: from error functions 2017-05-07 09:57:51 +03:00
nvram fw_cfg: move setting of FW_CFG_VERSION_DMA bit to fw_cfg_init1() 2017-07-03 22:29:49 +03:00
openrisc target/openrisc: Support non-busy idle state using PMR SPR 2017-05-04 09:39:14 +09:00
pci pci: Convert shpc_init() to Error 2017-07-03 22:29:49 +03:00
pci-bridge pci: Convert shpc_init() to Error 2017-07-03 22:29:49 +03:00
pci-host QAPI patches for 2017-06-09 2017-06-22 11:34:39 +01:00
pcmcia hw: Clean up includes 2016-01-29 15:07:25 +00:00
ppc spapr: Use unplug_request for PCI hot unplug 2017-07-11 11:04:02 +10:00
s390x hw/s390x/ipl: Fix endianness problem with netboot_start_addr 2017-07-05 19:46:30 +02:00
scsi virtio-scsi: finalize IOMMU support 2017-07-04 14:39:28 +02:00
sd generic-sdhci: Remove user_creatable flag 2017-05-17 10:37:01 -03:00
sh4 shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
smbios stubs: move smbios stubs to hw/smbios 2017-01-16 17:52:35 +01:00
sparc -----BEGIN PGP SIGNATURE----- 2017-06-05 10:09:14 +01:00
sparc64 hw/sparc: use ARRAY_SIZE() macro 2017-06-04 18:42:55 +03:00
ssi xilinx_spips: allow mmio execution 2017-06-27 15:09:15 +02:00
timer timer/aspeed: fix timer enablement when a reload is not set 2017-06-13 14:57:00 +01:00
tpm clean-up: removed duplicate #includes 2016-10-28 18:17:24 +03:00
tricore Remove reduntant qemu: from error functions 2017-05-07 09:57:51 +03:00
unicore32 clean-up: removed duplicate #includes 2016-10-28 18:17:24 +03:00
usb pci: Fix the wrong assertion. 2017-07-03 22:29:49 +03:00
vfio pci: Replace pci_add_capability2() with pci_add_capability() 2017-07-03 22:29:49 +03:00
virtio vhost-user: unregister slave req handler at cleanup time 2017-07-03 22:29:49 +03:00
watchdog shutdown: Add source information to SHUTDOWN and RESET 2017-05-23 13:28:17 +02:00
xen xen/pt: Fixup addr validation in xen_pt_pci_config_access_check 2017-07-07 11:13:10 -07:00
xenpv xenfb: remove xen_init_display "temporary" hack 2017-07-07 11:10:03 -07:00
xtensa target/xtensa: support output to chardev console 2017-06-06 02:40:48 -07:00
Makefile.objs acpi: filter based on CONFIG_ACPI_X86 rather than TARGET 2017-01-16 17:52:35 +01:00