xemu/hw
Michael S. Tsirkin 2841ab435b pcie: check that slt ctrl changed before deleting
During boot, linux would sometimes overwrites control of a powered off
slot before powering it on. Unfortunately QEMU interprets that as a
power off request and ejects the device.

For example:

/x86_64-softmmu/qemu-system-x86_64 -enable-kvm -S -machine q35  \
    -device pcie-root-port,id=pcie_root_port_0,slot=2,chassis=2,addr=0x2,bus=pcie.0 \
    -monitor stdio disk.qcow2
(qemu)device_add virtio-balloon-pci,id=balloon,bus=pcie_root_port_0
(qemu)cont

Balloon is deleted during guest boot.

To fix, save control beforehand and check that power
or led state actually change before ejecting.

Note: this is more a hack than a solution, ideally we'd
find a better way to detect ejects, or move away
from ejects completely and instead monitor whether
it's safe to delete device due to e.g. its power state.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Tested-by: Igor Mammedov <imammedo@redhat.com>
2019-07-01 09:17:30 -04:00
..
9pfs Supply missing header guards 2019-06-12 13:20:21 +02:00
acpi hw/acpi: extract acpi_add_rom_blob() 2019-06-16 16:16:52 -04:00
adc Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
alpha Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
arm hw/arm: Correctly disable FPU/DSP for some ARMSSE-based boards 2019-06-17 15:12:25 +01:00
audio Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
block nvme: do not advertise support for unsupported arbitration mechanism 2019-06-24 15:53:01 +02:00
bt Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
char Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
core hw: Nuke hw_compat_4_0_1 and pc_compat_4_0_1 2019-06-21 13:25:29 +02:00
cpu Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
cris Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
display edid: flip the default to enabled 2019-06-13 09:34:50 +02:00
dma Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
gpio Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
hppa Supply missing header guards 2019-06-12 13:20:21 +02:00
hyperv Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
i2c Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
i386 hw: Nuke hw_compat_4_0_1 and pc_compat_4_0_1 2019-06-21 13:25:29 +02:00
ide Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
input Supply missing header guards 2019-06-12 13:20:21 +02:00
intc hw/intc/arm_gicv3: GICD_TYPER.SecurityExtn is RAZ if GICD_CTLR.DS == 1 2019-06-17 15:13:19 +01:00
ipack Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
ipmi Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
isa Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
lm32 Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
m68k Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
mem Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
microblaze Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
mips Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
misc Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
moxie Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
net Supply missing header guards 2019-06-12 13:20:21 +02:00
nios2 Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
nvram Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
openrisc Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
pci pcie: check that slt ctrl changed before deleting 2019-07-01 09:17:30 -04:00
pci-bridge pcie: check that slt ctrl changed before deleting 2019-07-01 09:17:30 -04:00
pci-host q35: fix mmconfig and PCI0._CRS 2019-06-16 16:16:52 -04:00
pcmcia Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
ppc ppc patch queue 2019-06-12 2019-06-12 14:43:47 +01:00
rdma Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
riscv Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
s390x Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
scsi Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
sd sd: Fix out-of-bounds assertions 2019-06-21 13:25:29 +02:00
semihosting semihosting: split console_out into string and char versions 2019-06-12 17:53:22 +01:00
sh4 Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
smbios Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
sparc Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
sparc64 Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
ssi Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
timer Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
tpm Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
tricore Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
unicore32 target/unicore32: Use env_cpu, env_archcpu 2019-06-10 07:03:42 -07:00
usb Supply missing header guards 2019-06-12 13:20:21 +02:00
vfio vfio/common: Introduce vfio_set_irq_signaling helper 2019-06-13 09:57:37 -06:00
virtio vhost: fix vhost_log size overflow during migration 2019-06-16 16:16:52 -04:00
watchdog Include qemu/module.h where needed, drop it from qemu-common.h 2019-06-12 13:18:33 +02:00
xen Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
xenpv xen: Replace few mentions of xend by libxl 2019-01-14 13:45:40 +00:00
xtensa Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
Kconfig semihosting: introduce CONFIG_SEMIHOSTING 2019-05-28 10:28:50 +01:00
Makefile.objs semihosting: move semihosting configuration into its own directory 2019-05-28 10:28:50 +01:00