virtio_net: enable VQs early on restore
authorMichael S. Tsirkin <mst@redhat.com>
Tue, 14 Oct 2014 23:52:32 +0000 (10:22 +1030)
committerRusty Russell <rusty@rustcorp.com.au>
Tue, 14 Oct 2014 23:55:10 +0000 (10:25 +1030)
virtio spec requires drivers to set DRIVER_OK before using VQs.
This is set automatically after restore returns, virtio net violated this
rule by using receive VQs within restore.

To fix, call virtio_device_ready before using VQs.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
drivers/net/virtio_net.c

index 53031e58a5fc13c6c43b0e4355620c35c110c56c..4e0cbbcd60a7af281ef784791584ed23f2d3a838 100644 (file)
@@ -1912,6 +1912,8 @@ static int virtnet_restore(struct virtio_device *vdev)
        if (err)
                return err;
 
+       virtio_device_ready(vdev);
+
        if (netif_running(vi->dev)) {
                for (i = 0; i < vi->curr_queue_pairs; i++)
                        if (!try_fill_recv(&vi->rq[i], GFP_KERNEL))