qemu-e2k/hw
linzhecheng 7abea552ab fix: unrealize virtio device if we fail to hotplug it
If we fail to hotplug virtio-blk device and then suspend
or shutdown VM, qemu is likely to crash.

Re-production steps:
1. Run VM named vm001
2. Create a virtio-blk.xml which contains wrong configurations:
<disk device="lun" rawio="yes" type="block">
  <driver cache="none" io="native" name="qemu" type="raw" />
  <source dev="/dev/mapper/11-dm" />
  <target bus="virtio" dev="vdx" />
</disk>
3. Run command : virsh attach-device vm001 virtio-blk.xml
error: Failed to attach device from blk-scsi.xml
error: internal error: unable to execute QEMU command 'device_add': Please set scsi=off for virtio-blk devices in order to use virtio 1.0
it means hotplug virtio-blk device failed.
4. Suspend or shutdown VM will leads to qemu crash

Problem happens in virtio_vmstate_change which is called by
vm_state_notify:
vdev’s parent_bus is NULL, so qdev_get_parent_bus(DEVICE(vdev)) will crash.
virtio_vmstate_change is added to the list vm_change_state_head at virtio_blk_device_realize(virtio_init),
but after hotplug virtio-blk failed, virtio_vmstate_change will not be removed from vm_change_state_head.
Adding unrealize function of virtio-blk device can solve this problem.

Signed-off-by: linzhecheng <linzhecheng@huawei.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
2017-11-16 17:46:53 +02:00
..
9pfs 9pfs: fix v9fs_mark_fids_unreclaim() return value 2017-11-06 18:05:35 +01:00
acpi * TCG 8-byte atomic accesses bugfix (Andrew) 2017-10-19 15:38:07 +01:00
adc
alpha alpha: use generic cpu_model parsing 2017-10-27 16:03:53 +02:00
arm hw: add .min_cpus and .default_cpus fields to machine_class 2017-11-13 13:55:27 +00:00
audio pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices 2017-10-15 05:54:43 +03:00
block xen: dont try setting max grants multiple times 2017-10-26 14:23:08 -07:00
bt bt: stop the sdp memory allocation craziness 2017-08-01 17:27:33 +02:00
char pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices 2017-10-15 05:54:43 +03:00
core * TCG 8-byte atomic accesses bugfix (Andrew) 2017-10-19 15:38:07 +01:00
cpu cpu: don't allow negative core id 2017-08-02 18:30:13 -03:00
cris cris: use generic cpu_model parsing 2017-10-27 16:03:54 +02:00
display vga: bugfixes for 2.11 2017-11-13 14:33:29 +00:00
dma sun4m_iommu: remove legacy sparc_iommu_memory_rw() function 2017-10-31 17:25:37 +00:00
gpio hw/gpio/omap_gpio.c: Don't use old_mmio 2017-09-21 16:34:27 +01:00
i2c pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices 2017-10-15 05:54:43 +03:00
i386 pci-assign: Remove 2017-11-05 14:52:10 +01:00
ide ide: avoid referencing NULL dev in rotational rate setting 2017-10-31 18:00:03 -04:00
input ps2: fix scancodes sent for Ctrl+Pause key combination 2017-10-23 10:50:02 +02:00
intc xics/kvm: synchonize state before 'info pic' 2017-11-14 11:12:42 +11:00
ipack pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices 2017-10-15 05:54:43 +03:00
ipmi
isa pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices 2017-10-15 05:54:43 +03:00
lm32 lm32: lm32_boards: use generic cpu_model parsing 2017-10-27 16:03:54 +02:00
m68k m68k: mcf5208: use generic cpu_model parsing 2017-10-27 16:03:54 +02:00
mem qmp: introduce query-memory-size-summary command 2017-09-14 15:52:10 +01:00
microblaze hw: Use new memory_region_init_{ram, rom, rom_device}() functions 2017-07-14 17:59:42 +01:00
mips mips: r4k: replace cpu_model with cpu_type 2017-10-27 16:04:28 +02:00
misc pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices 2017-10-15 05:54:43 +03:00
moxie moxie: use generic cpu_model parsing 2017-10-27 16:03:54 +02:00
net Add new PCI ID for i82559a 2017-11-13 15:48:54 +08:00
nios2 nios2: replace cpu_nios2_init() with cpu_generic_init() 2017-09-01 11:54:24 -03:00
nvram fw_cfg: add write callback 2017-10-15 05:54:40 +03:00
openrisc openrisc: use generic cpu_model parsing 2017-10-27 16:03:54 +02:00
pci pci: Validate interfaces on base_class_init 2017-10-15 05:54:43 +03:00
pci-bridge hw/gen_pcie_root_port: make IO RO 0 on IO disabled 2017-10-15 05:54:43 +03:00
pci-host hw/pci-host/gpex: Improve INTX to gsi routing error checking 2017-10-31 11:50:52 +00:00
pcmcia
ppc target/ppc: correct htab shift for hash on radix 2017-11-14 10:28:32 +11:00
s390x s390x/pci: let pci devices start in configured mode 2017-11-08 12:00:08 +01:00
scsi esp: move TYPE_ESP and SysBusESPState from esp.c to esp.h 2017-10-31 17:25:36 +00:00
sd pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices 2017-10-15 05:54:43 +03:00
sh4 sh4: shix: use generic cpu_model parsing 2017-10-27 16:03:54 +02:00
smbios
sparc sparc32_dma: introduce new SPARC32_DMA type container object 2017-10-31 17:25:36 +00:00
sparc64 sparc: sun4u/sun4v/niagara: use generic cpu_model parsing 2017-10-27 16:04:27 +02:00
ssi msf2: Remove dead code reported by Coverity 2017-10-31 11:50:51 +00:00
timer migration: pre_save return int 2017-09-27 11:35:59 +01:00
tpm tpm_tis: Return 0 for every register in case of failure mode 2017-11-15 06:47:35 -05:00
tricore tricore: use generic cpu_model parsing 2017-10-27 16:04:27 +02:00
unicore32 unicore32: use generic cpu_model parsing 2017-10-27 16:04:27 +02:00
usb usb-ccid: remove needless migration state code 2017-10-23 10:05:28 +02:00
vfio s390x: improve error handling for SSCH and RSCH 2017-10-20 13:32:10 +02:00
virtio fix: unrealize virtio device if we fail to hotplug it 2017-11-16 17:46:53 +02:00
watchdog pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices 2017-10-15 05:54:43 +03:00
xen pci-assign: Remove 2017-11-05 14:52:10 +01:00
xenpv
xtensa xtensa: lx60/lx200/ml605/kc705: use generic cpu_model parsing 2017-10-27 16:04:27 +02:00
Makefile.objs 9pfs: fix dependencies 2017-08-30 18:23:25 +02:00