On Thu, 22 Sep 2016 09:19:49 +0800 Gonglei <arei.gong...@huawei.com> wrote:
> On 2016/9/21 21:13, Greg Kurz wrote: > > This series is a follow up to Stefan's work to eradicate most calls to > > exit() we currently have in the virtio code. > > > > It addresses all exit() call sites in the blk, net and scsi device code, > > where the error is about a missing or malformed in/out header sent by > > the guest. They are converted to use virtio_error() and stop any processing, > > instead of exiting. > > > Actually if you just stop procesing when encounter a missing in/out header but > send a interrupt to the guest, the guest maybe be stuck. > virtio_net_handle_ctrl() The virtio_error() function sets the device status to DEVICE_NEEDS_RESET and does send a device configuration change interrupt to the guest, so it can take appropriate action (i.e. reset the device). Maybe I should have mentioned that in the changelog... Cheers. -- Greg > is an example, the guest frontend driver infinite loop to wait the > interrupt's coming. > The guest can't work anymore though you don't exit the Qemu process . > > Regards, > -Gonglei > > > The remaining call sites are related to a host misconfiguration or a > > migration stream issue. > > > > The 9P code currently calls assert() instead of exit(), but it also about > > malformed or missing headers, so it gets converted the same way. > > > > Next work will be to check all assert() call sites in the device code, in > > case some of them actually refer to a bug in the guest, and should be > > converted to use virtio_error() as well. > > > > --- > > > > Greg Kurz (7): > > virtio-9p: handle handle_9p_output() error > > virtio-blk: handle virtio_blk_handle_request() errors > > virtio-net: handle virtio_net_handle_ctrl() error > > virtio-net: handle virtio_net_receive() errors > > virtio-net: handle virtio_net_flush_tx() errors > > virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error() > > virtio-scsi: handle virtio_scsi_set_config() error > > > > > > hw/9pfs/virtio-9p-device.c | 14 ++++++++++-- > > hw/block/virtio-blk.c | 27 +++++++++++++++-------- > > hw/net/virtio-net.c | 51 > > +++++++++++++++++++++++++------------------- > > hw/scsi/virtio-scsi.c | 21 ++++++++++-------- > > 4 files changed, 70 insertions(+), 43 deletions(-) > > > > -- > > Greg > > > > > > > > >