[SLOF] [PATCH v1 05/27] virtio-blk: use virt queue init and reset init

Nikunj A Dadhania nikunj at linux.vnet.ibm.com
Wed Jan 13 22:16:52 AEDT 2016


Move initialization of virt queue to the init and
with this reset will start working now.

Signed-off-by: Nikunj A Dadhania <nikunj at linux.vnet.ibm.com>
---
 board-qemu/slof/pci-device_1af4_1001.fs |  9 ---------
 lib/libvirtio/virtio-blk.c              | 13 +++++++++----
 2 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/board-qemu/slof/pci-device_1af4_1001.fs b/board-qemu/slof/pci-device_1af4_1001.fs
index 4591ccb..db0bb3f 100644
--- a/board-qemu/slof/pci-device_1af4_1001.fs
+++ b/board-qemu/slof/pci-device_1af4_1001.fs
@@ -22,13 +22,4 @@ pci-io-enable
 
 s" virtio-block.fs" included
 
-0 VALUE queue-addr
-
-\ Allocate memory for virtio queue:
-virtiodev 0 virtio-get-qsize virtio-vring-size
-alloc-mem to queue-addr
-
-\ Write queue address into device:
-virtiodev 0 queue-addr virtio-set-qaddr
-
 pci-device-disable
diff --git a/lib/libvirtio/virtio-blk.c b/lib/libvirtio/virtio-blk.c
index b8c4da2..2d8982d 100644
--- a/lib/libvirtio/virtio-blk.c
+++ b/lib/libvirtio/virtio-blk.c
@@ -18,6 +18,8 @@
 
 #define DEFAULT_SECTOR_SIZE 512
 
+struct vqs vq;
+
 /**
  * Initialize virtio-block device.
  * @param  dev  pointer to virtio device information
@@ -30,10 +32,7 @@ virtioblk_init(struct virtio_device *dev)
 	int features;
 
 	/* Reset device */
-	// XXX That will clear the virtq base. We need to move
-	//     initializing it to here anyway
-	//
-	//	 virtio_reset_device(dev);
+	virtio_reset_device(dev);
 
 	/* Acknowledge device. */
 	virtio_set_status(dev, VIRTIO_STAT_ACKNOWLEDGE);
@@ -44,6 +43,12 @@ virtioblk_init(struct virtio_device *dev)
 	/* Device specific setup - we support F_BLK_SIZE */
 	virtio_set_guest_features(dev,  VIRTIO_BLK_F_BLK_SIZE);
 
+	if(!virtio_queue_init_vq(dev, &vq, 0)) {
+		virtio_set_status(dev, VIRTIO_STAT_ACKNOWLEDGE|VIRTIO_STAT_DRIVER
+				  |VIRTIO_STAT_FAILED);
+		return 0;
+	}
+
 	vq_avail = virtio_get_vring_avail(dev, 0);
 	vq_avail->flags = VRING_AVAIL_F_NO_INTERRUPT;
 	vq_avail->idx = 0;
-- 
2.5.0



More information about the SLOF mailing list