qemu/hw/s390x
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
..
ccw-device.c s390x/css: Unplug handler of virtual css bridge 2016-07-11 09:48:05 +02:00
ccw-device.h s390x/css: Unplug handler of virtual css bridge 2016-07-11 09:48:05 +02:00
css-bridge.c s390x/css: provide a dev_path for css devices 2016-07-20 15:47:25 +02:00
css.c s390x/css: handle cssid 255 correctly 2016-09-05 15:15:16 +02:00
event-facility.c include/qemu/osdep.h: Don't include qapi/error.h 2016-03-22 22:20:15 +01:00
ipl.c s390x/css: Unplug handler of virtual css bridge 2016-07-11 09:48:05 +02:00
ipl.h s390x/ipl: fix reboots for migration from different bios 2016-07-11 09:48:05 +02:00
Makefile.objs s390x/css: Unplug handler of virtual css bridge 2016-07-11 09:48:05 +02:00
s390-pci-bus.c s390x/pci: assert zpci always existing 2016-09-05 15:15:16 +02:00
s390-pci-bus.h Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
s390-pci-inst.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
s390-pci-inst.h Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
s390-skeys-kvm.c s390: Clean up includes 2016-01-29 15:07:22 +00:00
s390-skeys.c s390: use FILE instead of QEMUFile for creating text file 2016-05-26 11:31:05 +05:30
s390-virtio-ccw.c s390x/kvm: allow runtime-instrumentation for "none" machine 2016-09-06 17:06:50 +02:00
s390-virtio-hcall.c s390: Clean up includes 2016-01-29 15:07:22 +00:00
s390-virtio.c s390x/cpumodel: "host" and "qemu" as CPU subclasses 2016-09-06 17:06:49 +02:00
s390-virtio.h Clean up decorations and whitespace around header guards 2016-07-12 16:20:46 +02:00
sclp.c s390x/sclp: propagate hmfai 2016-09-06 17:06:50 +02:00
sclpcpu.c s390: Clean up includes 2016-01-29 15:07:22 +00:00
sclpquiesce.c Use #include "..." for our own headers, <...> for others 2016-07-12 16:19:16 +02:00
trace-events trace-events: fix first line comment in trace-events 2016-08-12 10:36:01 +01:00
virtio-ccw.c virtio-bus: Plug devices after features are negotiated 2016-09-15 17:30:03 +03:00
virtio-ccw.h vhost-vsock: add virtio sockets device 2016-09-10 00:28:08 +03:00