[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH v3 10/14] 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 | 48 ++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/plat/drivers/virtio/virtio_blk.c b/plat/drivers/virtio/virtio_blk.c index cb732135..ecd8e691 100644 --- a/plat/drivers/virtio/virtio_blk.c +++ b/plat/drivers/virtio/virtio_blk.c @@ -354,6 +354,52 @@ 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; +} + +/* If one queue has unconsumed responses it returns -EBUSY + * TODO restart doesn't work + **/ +static int virtio_blkdev_stop(struct uk_blkdev *dev) +{ + struct virtio_blk_device *d; + uint16_t q_id; + int rc = 0; + + UK_ASSERT(dev != NULL); + + d = to_virtioblkdev(dev); + for (q_id = 0; q_id < d->nb_queues; ++q_id) { + if (virtqueue_hasdata(d->qs[q_id].vq)) { + uk_pr_err("Queue:%"__PRIu16" has unconsumed responses\n", + q_id); + return -EBUSY; + } + } + + 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; +} + static int virtio_blkdev_unconfigure(struct uk_blkdev *dev) { struct virtio_blk_device *d; @@ -507,6 +553,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_unconfigure = virtio_blkdev_unconfigure, -- 2.17.1 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |