|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH 08/12] plat/drivers: Start virtio block device
This patch introduces start/stop operations to virtio device.
This implies connection to backend by setting the DRIVER_OK status bit.
Signed-off-by: Roxana Nicolescu <nicolescu.roxana1996@xxxxxxxxx>
---
plat/drivers/virtio/virtio_blk.c | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/plat/drivers/virtio/virtio_blk.c b/plat/drivers/virtio/virtio_blk.c
index fadca07a..e18ef805 100644
--- a/plat/drivers/virtio/virtio_blk.c
+++ b/plat/drivers/virtio/virtio_blk.c
@@ -378,6 +378,37 @@ exit:
return rc;
}
+static int virtio_blkdev_start(struct uk_blkdev *dev)
+{
+ struct virtio_blk_device *d;
+
+ UK_ASSERT(dev != NULL);
+
+ d = to_virtioblkdev(dev);
+ virtio_dev_drv_up(d->vdev);
+
+ uk_pr_info(DRIVER_NAME": %"__PRIu16" started\n", d->uid);
+
+ return 0;
+}
+
+static int virtio_blkdev_stop(struct uk_blkdev *dev)
+{
+ struct virtio_blk_device *d;
+ int rc = 0;
+
+ UK_ASSERT(dev != NULL);
+
+ d = to_virtioblkdev(dev);
+ rc = virtio_dev_reset(d->vdev);
+ if (rc) {
+ uk_pr_info(DRIVER_NAME": %"__PRIu16" stopped", d->uid);
+ goto out;
+ }
+
+ uk_pr_warn(DRIVER_NAME": %"__PRIu16" Start is not allowed!!!", d->uid);
+
+out:
return rc;
}
@@ -538,6 +569,8 @@ static const struct uk_blkdev_ops virtio_blkdev_ops = {
.queue_get_info = virtio_blkdev_queue_info_get,
.queue_setup = virtio_blkdev_queue_setup,
.queue_intr_enable = virtio_blkdev_queue_intr_enable,
+ .dev_start = virtio_blkdev_start,
+ .dev_stop = virtio_blkdev_stop,
.queue_intr_disable = virtio_blkdev_queue_intr_disable,
.queue_release = virtio_blkdev_queue_release,
.dev_close = virtio_blkdev_close,
--
2.11.0
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |