On Tue, 12 Apr 2016 14:25:24 +0100 Stefan Hajnoczi <stefa...@redhat.com> wrote:
> v3: > * Patch 1: Fix typo and clarify commit description [Markus] > * Use virtio_set_status() instead of open coding assignment [Cornelia] > * Add live migration > > v2: > * Add VIRTIO_CONFIG_S_NEEDS_RESET notification for VIRTIO 1.0 [Cornelia] > (Note I've sent a Linux virtio_config.h patch to get the constant added to > the headers.) > * Split int -> unsigned int change into separate commit [Fam] > * Fix double "index" typo in commit description [Fam] > > The virtio code calls exit() when the device enters an invalid state. This > means invalid vring indices and descriptor chains kill the VM. See the patch > descriptions for why this is a bad thing. > > When the virtio device is in the broken state calls to virtqueue_pop() and > friends will pretend the virtqueue is empty. This means the device will > become > isolated from guest activity until it is reset again. > > RFC because two things are missing: > 1. Live migration support (subsection for broken flag?) > 2. Auditing devices and replacing exit() calls there too > > Stefan Hajnoczi (10): > virtio: fix stray tab character > include: update virtio_config.h Linux header > virtio: stop virtqueue processing if device is broken > virtio: migrate vdev->broken flag > virtio: handle virtqueue_map_desc() errors > virtio: handle virtqueue_get_avail_bytes() errors > virtio: use unsigned int for virtqueue_get_avail_bytes() index > virtio: handle virtqueue_read_next_desc() errors > virtio: handle virtqueue_num_heads() errors > virtio: handle virtqueue_get_head() errors > > hw/virtio/virtio.c | 223 > +++++++++++++++++++------ > include/hw/virtio/virtio.h | 3 + > include/standard-headers/linux/virtio_config.h | 2 + > 3 files changed, 181 insertions(+), 47 deletions(-) > As the exit-in-virtio question has popped up several times in the recent past: I think we should go forward with this series, even if we still need to look at the individual devices. Do you have a version that fits on current master?