qemu/include/hw
Maxime Coquelin d1b4259f1a virtio-bus: Plug devices after features are negotiated
Currently, devices are plugged before features are negotiated.
If the backend doesn't support VIRTIO_F_VERSION_1, the transport
needs to rewind some settings.

This is the case for CCW, for which a post_plugged callback had
been introduced, where max_rev field is just updated if
VIRTIO_F_VERSION_1 is not supported by the backend.
For PCI, implementing post_plugged would be much more
complicated, so it needs to know whether the backend supports
VIRTIO_F_VERSION_1 at plug time.

Currently, nothing is done for PCI. Modern capabilities get
exposed to the guest even if VIRTIO_F_VERSION_1 is not supported
by the backend, which confuses the guest.

This patch replaces existing post_plugged solution with an
approach that fits with both transports.
Features negotiation is performed before ->device_plugged() call.
A pre_plugged callback is introduced so that the transports can
set their supported features.

Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: qemu-stable@nongnu.org
Tested-by: Cornelia Huck <cornelia.huck@de.ibm.com> [ccw]
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: Marcel Apfelbaum <marcel@redhat.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
2016-09-15 17:30:03 +03:00
..
acpi acpi: add DMAR scope definition for root IOAPIC 2016-07-20 19:30:27 +03:00
arm ast2400: add a memory controller device model 2016-09-06 19:52:17 +01:00
audio Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
block block/qdev: Allow configuring rerror/werror with qdev properties 2016-07-13 13:32:27 +02:00
char Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
cpu qapi: keep names in 'CpuInstanceProperties' in sync with struct CPUCore 2016-06-27 13:15:06 +10:00
cris Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
display Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
dma Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
gpio Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
i2c Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
i386 target-i386: present virtual L3 cache info for vcpus 2016-09-09 20:58:34 +03:00
ide portio: keep references on portio 2016-09-08 18:05:21 +04:00
input Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
intc gic: provide defines for v2/v3 targetlist sizes 2016-07-14 16:51:37 +01:00
ipack ipack: Update e-mail address 2016-05-18 15:04:27 +03:00
ipmi ipmi: rework the fwinfo to be fetched from the interface 2016-06-07 15:36:54 +03:00
isa portio: keep references on portio 2016-09-08 18:05:21 +04:00
kvm
lm32
m68k m68k: include cpu-qom.h in files that require M68KCPU 2016-05-19 16:42:27 +02:00
mem nvdimm: support nvdimm label 2016-06-24 05:13:57 +03:00
mips hw/mips/cps: create GIC block inside CPS 2016-07-12 09:10:13 +01:00
misc ast2400: add a memory controller device model 2016-09-06 19:52:17 +01:00
net Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
nvram * Updated fw_cfg option ROM to include DMA support 2016-07-14 16:49:18 +01:00
pci vhost-vsock: add virtio sockets device 2016-09-10 00:28:08 +03:00
pci-host acpi: add DMAR scope definition for root IOAPIC 2016-07-20 19:30:27 +03:00
ppc ppc: do not redefine CPUPPCState 2016-09-13 19:09:44 +02:00
s390x s390x/sclp: propagate hmfai 2016-09-06 17:06:50 +02:00
scsi scsi-bus: Use longer sense buffer with scanners 2016-07-12 18:31:26 +02:00
sd Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
sh4 Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
smbios Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
sparc Clean up ill-advised or unusual header guards 2016-07-12 16:20:46 +02:00
ssi Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
timer Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
tricore Clean up header guards that don't match their file name 2016-07-12 16:19:16 +02:00
unicore32 Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
usb Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
vfio Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
virtio virtio-bus: Plug devices after features are negotiated 2016-09-15 17:30:03 +03:00
watchdog Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
xen xen: handle inbound migration of VMs without ioreq server pages 2016-08-12 16:38:30 -07:00
boards.h machine: use class base init generated name 2016-09-08 18:05:21 +04:00
bt.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
compat.h virtio-pci: reduce modern_mem_bar size 2016-09-09 20:58:34 +03:00
devices.h
elf_ops.h loader: Add data swap option to load-elf 2016-03-04 11:30:21 +00:00
empty_slot.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
fw-path-provider.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
hotplug.h qdev: hotplug: Introduce HotplugHandler.pre_plug() callback 2016-06-17 16:33:48 +10:00
hw.h hw: clean up hw/hw.h includes 2016-05-19 16:42:30 +02:00
ide.h
irq.h
loader.h Sort the fw_cfg file list 2016-04-07 19:57:33 +03:00
nmi.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
pcmcia.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
platform-bus.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
ptimer.h hw/ptimer: Introduce ptimer_get_limit 2016-06-06 16:59:31 +01:00
qdev-core.h bus: simplify name handling 2016-09-08 18:05:22 +04:00
qdev-dma.h
qdev-properties.h block/qdev: Allow configuring rerror/werror with qdev properties 2016-07-13 13:32:27 +02:00
qdev.h
register.h register: Add block initialise helper 2016-07-04 13:15:22 +01:00
stream.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
sysbus.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
usb.h usb: Add QOM property "attached". 2016-06-22 12:53:26 +02:00