[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 11/18] virtio: Add "needs_reset" flag to virtio devi
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PATCH 11/18] virtio: Add "needs_reset" flag to virtio device |
Date: |
Fri, 17 Apr 2015 15:59:26 +0800 |
Signed-off-by: Fam Zheng <address@hidden>
---
hw/virtio/virtio.c | 18 ++++++++++++++++++
include/hw/virtio/virtio.h | 2 ++
2 files changed, 20 insertions(+)
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 6dfa181..7ff0dc4 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -623,6 +623,10 @@ void virtio_set_status(VirtIODevice *vdev, uint8_t val)
VirtioDeviceClass *k = VIRTIO_DEVICE_GET_CLASS(vdev);
trace_virtio_set_status(vdev, val);
+ if (val) {
+ /* Unsetting NEED_RESET bit without reset is ignored. */
+ val |= (vdev->status & VIRTIO_CONFIG_S_NEEDS_RESET);
+ }
if (k->set_status) {
k->set_status(vdev, val);
}
@@ -1384,6 +1388,20 @@ static void virtio_device_realize(DeviceState *dev,
Error **errp)
virtio_bus_device_plugged(vdev);
}
+void virtio_device_set_needs_reset(VirtIODevice *vdev)
+{
+ if (vdev->status & VIRTIO_CONFIG_S_NEEDS_RESET) {
+ return;
+ }
+ vdev->status |= VIRTIO_CONFIG_S_NEEDS_RESET;
+ virtio_notify_config(vdev);
+}
+
+bool virtio_device_needs_reset(VirtIODevice *vdev)
+{
+ return vdev->status & VIRTIO_CONFIG_S_NEEDS_RESET;
+}
+
static void virtio_device_unrealize(DeviceState *dev, Error **errp)
{
VirtIODevice *vdev = VIRTIO_DEVICE(dev);
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index 52e2b1c..71d98a3 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -131,6 +131,8 @@ VirtQueue *virtio_add_queue(VirtIODevice *vdev, int
queue_size,
void (*handle_output)(VirtIODevice *,
VirtQueue *),
Error **errp);
+void virtio_device_set_needs_reset(VirtIODevice *vdev);
+bool virtio_device_needs_reset(VirtIODevice *vdev);
void virtio_del_queue(VirtIODevice *vdev, int n, Error **errp);
--
1.9.3
- [Qemu-devel] [PATCH 02/18] virtio: Return error from virtqueue_num_heads, (continued)
- [Qemu-devel] [PATCH 02/18] virtio: Return error from virtqueue_num_heads, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 03/18] virtio: Return error from virtqueue_get_head, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 05/18] virtio: Return error from virtqueue_get_avail_bytes, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 06/18] virtio: Return error from virtqueue_pop, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 07/18] virtio: Return error from virtqueue_avail_bytes, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 09/18] virtio: Return error from virtio_del_queue, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 10/18] virtio: Add macro for VIRTIO_CONFIG_S_NEEDS_RESET, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 11/18] virtio: Add "needs_reset" flag to virtio device,
Fam Zheng <=
- [Qemu-devel] [PATCH 12/18] virtio: Return -EINVAL if the vdev needs reset in virtqueue_pop, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 13/18] virtio-blk: Graceful error handling of virtqueue_pop, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 14/18] qtest: Add "QTEST_FILTER" to filter test cases, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 15/18] qtest: virtio-blk: Extract "setup" for future reuse, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 16/18] libqos: Add qvirtio_needs_reset, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 17/18] qtest: Add test case for "needs reset" of virtio-blk, Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 18/18] qtest: virtio-blk: Suppress virtio error messages in "make check", Fam Zheng, 2015/04/17
- [Qemu-devel] [PATCH 04/18] virtio: Return error from virtqueue_next_desc, Fam Zheng, 2015/04/17