qemu-patch-raspberry4/hw/virtio
Stefan Hajnoczi f5ed36635d virtio: stop virtqueue processing if device is broken
QEMU prints an error message and exits when the device enters an invalid
state.  Terminating the process is heavy-handed.  The guest may still be
able to function even if there is a bug in a virtio guest driver.

Moreover, exiting is a bug in nested virtualization where a nested guest
could DoS other nested guests by killing a pass-through virtio device.
I don't think this configuration is possible today but it is likely in
the future.

If the broken flag is set, do not process virtqueues or write back used
descriptors.  The broken flag can be cleared again by resetting the
device.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
2016-09-23 19:03:55 +03:00
..
Makefile.objs vhost-vsock: add virtio sockets device 2016-09-10 00:28:08 +03:00
trace-events trace-events: fix first line comment in trace-events 2016-08-12 10:36:01 +01:00
vhost-backend.c vhost-vsock: add virtio sockets device 2016-09-10 00:28:08 +03:00
vhost-user.c Revert "vhost-user: Attempt to fix a race with set_mem_table." 2016-08-15 15:12:21 +01:00
vhost-vsock.c vhost-vsock: add virtio sockets device 2016-09-10 00:28:08 +03:00
vhost.c vhost: don't set vring call if no vector 2016-09-09 20:58:34 +03:00
virtio-balloon.c virtio-balloon: fix stats vq migration 2016-09-09 20:58:34 +03:00
virtio-bus.c virtio-bus: Plug devices after features are negotiated 2016-09-15 17:30:03 +03:00
virtio-mmio.c virtio-mmio: format transport base address in BusClass.get_dev_path 2016-07-14 16:51:36 +01:00
virtio-pci.c virtio-bus: Plug devices after features are negotiated 2016-09-15 17:30:03 +03:00
virtio-pci.h virtio-bus: Plug devices after features are negotiated 2016-09-15 17:30:03 +03:00
virtio-rng.c virtio-rng: Wrap in vmstate 2016-07-21 20:44:20 +03:00
virtio.c virtio: stop virtqueue processing if device is broken 2016-09-23 19:03:55 +03:00