--- /dev/null
+Date: Thu, 11 Sep 2014 19:18:37 +0300\r
+From: "Michael S. Tsirkin" <mst@redhat.com>\r
+To: <qemu-devel@nongnu.org>\r
+\r
+This reverts commit a1bc7b827e422e1ff065640d8ec5347c4aadfcd8.\r
+ virtio: don't call device on !vm_running\r
+It turns out that virtio net assumes that vm_running\r
+is updated before device status callback in many places,\r
+so this change leads to asserts.\r
+Previous commit fixes the root issue that motivated\r
+a1bc7b827e422e1ff065640d8ec5347c4aadfcd8 differently,\r
+so there's no longer a need for this change.\r
+\r
+In the future, we might be able to drop checking vm_running\r
+completely, and check vm state directly.\r
+\r
+Reported-by: Dietmar Maurer <dietmar@proxmox.com>\r
+Cc: qemu-stable@nongnu.org\r
+Cc: Jason Wang <jasowang@redhat.com>\r
+Signed-off-by: Michael S. Tsirkin <mst@redhat.com>\r
+---\r
+ hw/virtio/virtio.c | 9 +--------\r
+ 1 file changed, 1 insertion(+), 8 deletions(-)\r
+\r
+diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c\r
+index ac22238..5c98180 100644\r
+--- a/hw/virtio/virtio.c\r
++++ b/hw/virtio/virtio.c\r
+@@ -1108,10 +1108,7 @@ static void virtio_vmstate_change(void *opaque, int running, RunState state)\r
+ BusState *qbus = qdev_get_parent_bus(DEVICE(vdev));\r
+ VirtioBusClass *k = VIRTIO_BUS_GET_CLASS(qbus);\r
+ bool backend_run = running && (vdev->status & VIRTIO_CONFIG_S_DRIVER_OK);\r
+-\r
+- if (running) {\r
+- vdev->vm_running = running;\r
+- }\r
++ vdev->vm_running = running;\r
+ \r
+ if (backend_run) {\r
+ virtio_set_status(vdev, vdev->status);\r
+@@ -1124,10 +1121,6 @@ static void virtio_vmstate_change(void *opaque, int running, RunState state)\r
+ if (!backend_run) {\r
+ virtio_set_status(vdev, vdev->status);\r
+ }\r
+-\r
+- if (!running) {\r
+- vdev->vm_running = running;\r
+- }\r
+ }\r
+ \r
+ void virtio_init(VirtIODevice *vdev, const char *name,\r
+-- \r
+MST\r
+\r
+\r
--- /dev/null
+Date: Thu, 11 Sep 2014 19:18:34 +0300\r
+From: "Michael S. Tsirkin" <mst@redhat.com>\r
+To: <qemu-devel@nongnu.org>\r
+\r
+On vm stop, vm_running state set to stopped\r
+before device is notified, so callbacks can get envoked with\r
+vm_running = false; and this is not an error.\r
+\r
+Cc: qemu-stable@nongnu.org\r
+Cc: Jason Wang <jasowang@redhat.com>\r
+Signed-off-by: Michael S. Tsirkin <mst@redhat.com>\r
+---\r
+ hw/net/virtio-net.c | 2 --\r
+ 1 file changed, 2 deletions(-)\r
+\r
+diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c\r
+index 826a2a5..2040eac 100644\r
+--- a/hw/net/virtio-net.c\r
++++ b/hw/net/virtio-net.c\r
+@@ -1125,8 +1125,6 @@ static int32_t virtio_net_flush_tx(VirtIONetQueue *q)\r
+ return num_packets;\r
+ }\r
+ \r
+- assert(vdev->vm_running);\r
+-\r
+ if (q->async_tx.elem.out_num) {\r
+ virtio_queue_set_notification(q->tx_vq, 0);\r
+ return num_packets;\r
+-- \r
+MST\r
+\r
+\r
+\r