* [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages
@ 2017-07-17 8:11 Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 1/9] " Ladi Prosek
` (9 more replies)
0 siblings, 10 replies; 22+ messages in thread
From: Ladi Prosek @ 2017-07-17 8:11 UTC (permalink / raw)
To: qemu-devel
Cc: casasfernando, mst, jasowang, cohuck, armbru, groug, arei.gonglei,
aneesh.kumar
Output like "Virtqueue size exceeded" is not much useful in identifying the
culprit. This series beefs up virtio_error to print the virtio device name
and id, and introduces virtqueue_error which additionally includes the index
of the virtqueue where the error occured.
Patches 1 to 3 lay the groundwork, patches 4 to 8 convert virtio devices to
use virtqueue_error instead of virtio_error. Patch 9 adds virtio_error and
virtqueue_error to the list of error funcs in checkpatch.pl.
v1->v2:
* Modified virtio_error and added virtqueue_error (Stefan)
* Now also printing device id (Stefan)
* Went over all virtio_error call sites and converted them to virtqueue_error
as appropriate; added virtio device maintainers to cc
v2->v3:
* Removed patch 1 (Stefan, Markus)
* Split patch 3 into 2 (adds virtqueue_error) and 3 (makes virtio.c call it)
(Cornelia)
* Added patch 9 to modify $qemu_error_funcs in checkpatch.pl (Greg)
* s/includes queue index/includes the queue index/ in patch 3-9 commit
messages (Cornelia)
* Fixed virtio_get_device_id to return empty string instead of NULL if the
device doesn't have an id (Stefan)
* Simplified the change in virtio-crypto.c to use vcrypto->ctrl_vq instead
of propagating the vq pointer in function arguments (Cornelia, Gonglei)
Ladi Prosek (9):
virtio: enhance virtio_error messages
virtio: introduce virtqueue_error
virtio: use virtqueue_error for errors with queue context
virtio-9p: use virtqueue_error for errors with queue context
virtio-blk: use virtqueue_error for errors with queue context
virtio-net: use virtqueue_error for errors with queue context
virtio-scsi: use virtqueue_error for errors with queue context
virtio-crypto: use virtqueue_error for errors with queue context
checkpatch: add virtio_error and virtqueue_error to error funcs
hw/9pfs/virtio-9p-device.c | 37 ++++++--------
hw/block/virtio-blk.c | 6 +--
hw/net/virtio-net.c | 24 ++++-----
hw/scsi/virtio-scsi.c | 2 +-
hw/virtio/virtio-crypto.c | 49 ++++++++++---------
hw/virtio/virtio.c | 119 +++++++++++++++++++++++++++++++--------------
include/hw/virtio/virtio.h | 1 +
scripts/checkpatch.pl | 4 +-
8 files changed, 143 insertions(+), 99 deletions(-)
--
2.9.3
^ permalink raw reply [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH v3 1/9] virtio: enhance virtio_error messages
2017-07-17 8:11 [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Ladi Prosek
@ 2017-07-17 8:11 ` Ladi Prosek
2017-07-17 11:51 ` Cornelia Huck
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 2/9] virtio: introduce virtqueue_error Ladi Prosek
` (8 subsequent siblings)
9 siblings, 1 reply; 22+ messages in thread
From: Ladi Prosek @ 2017-07-17 8:11 UTC (permalink / raw)
To: qemu-devel
Cc: casasfernando, mst, jasowang, cohuck, armbru, groug, arei.gonglei,
aneesh.kumar
Output like "Virtqueue size exceeded" is not much useful in identifying the
culprit. This commit adds virtio device name (e.g. "virtio-input") and id
if set (e.g. "mouse0") to all virtio error messages to improve debuggability.
Some virtio devices (virtio-scsi, virtio-serial) insert a bus between the
proxy object and the virtio backends, so a helper function is added to walk
the object hierarchy and find the right proxy object to extract the id from.
Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
---
hw/virtio/virtio.c | 30 ++++++++++++++++++++++++++++--
1 file changed, 28 insertions(+), 2 deletions(-)
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 464947f..d7fae54 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -31,6 +31,11 @@
*/
#define VIRTIO_PCI_VRING_ALIGN 4096
+/*
+ * Name of the property linking proxy objects to virtio backend objects.
+ */
+#define VIRTIO_PROP_BACKEND "virtio-backend"
+
typedef struct VRingDesc
{
uint64_t addr;
@@ -2223,7 +2228,8 @@ void virtio_instance_init_common(Object *proxy_obj, void *data,
DeviceState *vdev = data;
object_initialize(vdev, vdev_size, vdev_name);
- object_property_add_child(proxy_obj, "virtio-backend", OBJECT(vdev), NULL);
+ object_property_add_child(proxy_obj, VIRTIO_PROP_BACKEND, OBJECT(vdev),
+ NULL);
object_unref(OBJECT(vdev));
qdev_alias_all_properties(vdev, proxy_obj);
}
@@ -2443,14 +2449,34 @@ void virtio_device_set_child_bus_name(VirtIODevice *vdev, char *bus_name)
vdev->bus_name = g_strdup(bus_name);
}
+static const char *virtio_get_device_id(VirtIODevice *vdev)
+{
+ DeviceState *qdev = DEVICE(vdev);
+ while (qdev) {
+ /* Find the proxy object corresponding to the vdev backend */
+ Object *prop = object_property_get_link(OBJECT(qdev),
+ VIRTIO_PROP_BACKEND, NULL);
+ if (prop == OBJECT(vdev)) {
+ return qdev->id ? qdev->id : "";
+ }
+ qdev = qdev->parent_bus->parent;
+ }
+ g_assert_not_reached();
+ return "";
+}
+
void GCC_FMT_ATTR(2, 3) virtio_error(VirtIODevice *vdev, const char *fmt, ...)
{
va_list ap;
+ char *msg;
va_start(ap, fmt);
- error_vreport(fmt, ap);
+ msg = g_strdup_vprintf(fmt, ap);
va_end(ap);
+ error_report("%s (id=%s): %s", vdev->name, virtio_get_device_id(vdev), msg);
+ g_free(msg);
+
if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) {
virtio_set_status(vdev, vdev->status | VIRTIO_CONFIG_S_NEEDS_RESET);
virtio_notify_config(vdev);
--
2.9.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH v3 2/9] virtio: introduce virtqueue_error
2017-07-17 8:11 [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 1/9] " Ladi Prosek
@ 2017-07-17 8:11 ` Ladi Prosek
2017-07-17 11:52 ` Cornelia Huck
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 3/9] virtio: use virtqueue_error for errors with queue context Ladi Prosek
` (7 subsequent siblings)
9 siblings, 1 reply; 22+ messages in thread
From: Ladi Prosek @ 2017-07-17 8:11 UTC (permalink / raw)
To: qemu-devel
Cc: casasfernando, mst, jasowang, cohuck, armbru, groug, arei.gonglei,
aneesh.kumar
Most virtio error output pertains to a specific virtqueue so it makes
sense to include the queue index in error messages.
Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
---
hw/virtio/virtio.c | 44 +++++++++++++++++++++++++++++++++-----------
include/hw/virtio/virtio.h | 1 +
2 files changed, 34 insertions(+), 11 deletions(-)
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index d7fae54..935a5e3 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -2465,18 +2465,8 @@ static const char *virtio_get_device_id(VirtIODevice *vdev)
return "";
}
-void GCC_FMT_ATTR(2, 3) virtio_error(VirtIODevice *vdev, const char *fmt, ...)
+static void virtio_device_set_broken(VirtIODevice *vdev)
{
- va_list ap;
- char *msg;
-
- va_start(ap, fmt);
- msg = g_strdup_vprintf(fmt, ap);
- va_end(ap);
-
- error_report("%s (id=%s): %s", vdev->name, virtio_get_device_id(vdev), msg);
- g_free(msg);
-
if (virtio_vdev_has_feature(vdev, VIRTIO_F_VERSION_1)) {
virtio_set_status(vdev, vdev->status | VIRTIO_CONFIG_S_NEEDS_RESET);
virtio_notify_config(vdev);
@@ -2485,6 +2475,38 @@ void GCC_FMT_ATTR(2, 3) virtio_error(VirtIODevice *vdev, const char *fmt, ...)
vdev->broken = true;
}
+void GCC_FMT_ATTR(2, 3) virtio_error(VirtIODevice *vdev, const char *fmt, ...)
+{
+ va_list ap;
+ char *msg;
+
+ va_start(ap, fmt);
+ msg = g_strdup_vprintf(fmt, ap);
+ va_end(ap);
+
+ error_report("%s (id=%s): %s", vdev->name, virtio_get_device_id(vdev), msg);
+ g_free(msg);
+
+ virtio_device_set_broken(vdev);
+}
+
+void GCC_FMT_ATTR(2, 3) virtqueue_error(VirtQueue *vq, const char *fmt, ...)
+{
+ VirtIODevice *vdev = vq->vdev;
+ va_list ap;
+ char *msg;
+
+ va_start(ap, fmt);
+ msg = g_strdup_vprintf(fmt, ap);
+ va_end(ap);
+
+ error_report("%s (id=%s) queue %d: %s", vdev->name,
+ virtio_get_device_id(vdev), vq->queue_index, msg);
+ g_free(msg);
+
+ virtio_device_set_broken(vdev);
+}
+
static void virtio_memory_listener_commit(MemoryListener *listener)
{
VirtIODevice *vdev = container_of(listener, VirtIODevice, listener);
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index 80c45c3..c6c56a0 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -151,6 +151,7 @@ void virtio_init(VirtIODevice *vdev, const char *name,
void virtio_cleanup(VirtIODevice *vdev);
void virtio_error(VirtIODevice *vdev, const char *fmt, ...) GCC_FMT_ATTR(2, 3);
+void virtqueue_error(VirtQueue *vq, const char *fmt, ...) GCC_FMT_ATTR(2, 3);
/* Set the child bus name. */
void virtio_device_set_child_bus_name(VirtIODevice *vdev, char *bus_name);
--
2.9.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH v3 3/9] virtio: use virtqueue_error for errors with queue context
2017-07-17 8:11 [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 1/9] " Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 2/9] virtio: introduce virtqueue_error Ladi Prosek
@ 2017-07-17 8:11 ` Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 4/9] virtio-9p: " Ladi Prosek
` (6 subsequent siblings)
9 siblings, 0 replies; 22+ messages in thread
From: Ladi Prosek @ 2017-07-17 8:11 UTC (permalink / raw)
To: qemu-devel
Cc: casasfernando, mst, jasowang, cohuck, armbru, groug, arei.gonglei,
aneesh.kumar
virtqueue_error includes the queue index in the error output and is preferred
for errors that pertain to a virtqueue rather than to the device as a whole.
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
---
hw/virtio/virtio.c | 57 +++++++++++++++++++++++++++---------------------------
1 file changed, 28 insertions(+), 29 deletions(-)
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 935a5e3..de4dd32 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -148,7 +148,7 @@ static void virtio_init_region_cache(VirtIODevice *vdev, int n)
len = address_space_cache_init(&new->desc, vdev->dma_as,
addr, size, false);
if (len < size) {
- virtio_error(vdev, "Cannot map desc");
+ virtqueue_error(vq, "Cannot map desc");
goto err_desc;
}
@@ -156,7 +156,7 @@ static void virtio_init_region_cache(VirtIODevice *vdev, int n)
len = address_space_cache_init(&new->used, vdev->dma_as,
vq->vring.used, size, true);
if (len < size) {
- virtio_error(vdev, "Cannot map used");
+ virtqueue_error(vq, "Cannot map used");
goto err_used;
}
@@ -164,7 +164,7 @@ static void virtio_init_region_cache(VirtIODevice *vdev, int n)
len = address_space_cache_init(&new->avail, vdev->dma_as,
vq->vring.avail, size, false);
if (len < size) {
- virtio_error(vdev, "Cannot map avail");
+ virtqueue_error(vq, "Cannot map avail");
goto err_avail;
}
@@ -522,7 +522,7 @@ static int virtqueue_num_heads(VirtQueue *vq, unsigned int idx)
/* Check it isn't doing very strange things with descriptor numbers. */
if (num_heads > vq->vring.num) {
- virtio_error(vq->vdev, "Guest moved used index from %u to %u",
+ virtqueue_error(vq, "Guest moved used index from %u to %u",
idx, vq->shadow_avail_idx);
return -EINVAL;
}
@@ -545,7 +545,7 @@ static bool virtqueue_get_head(VirtQueue *vq, unsigned int idx,
/* If their number is silly, that's a fatal mistake. */
if (*head >= vq->vring.num) {
- virtio_error(vq->vdev, "Guest says index %u is available", *head);
+ virtqueue_error(vq, "Guest says index %u is available", *head);
return false;
}
@@ -558,7 +558,7 @@ enum {
VIRTQUEUE_READ_DESC_MORE = 1, /* more buffers in chain */
};
-static int virtqueue_read_next_desc(VirtIODevice *vdev, VRingDesc *desc,
+static int virtqueue_read_next_desc(VirtQueue *vq, VRingDesc *desc,
MemoryRegionCache *desc_cache, unsigned int max,
unsigned int *next)
{
@@ -573,11 +573,11 @@ static int virtqueue_read_next_desc(VirtIODevice *vdev, VRingDesc *desc,
smp_wmb();
if (*next >= max) {
- virtio_error(vdev, "Desc next is %u", *next);
+ virtqueue_error(vq, "Desc next is %u", *next);
return VIRTQUEUE_READ_DESC_ERROR;
}
- vring_desc_read(vdev, desc, desc_cache, *next);
+ vring_desc_read(vq->vdev, desc, desc_cache, *next);
return VIRTQUEUE_READ_DESC_MORE;
}
@@ -610,7 +610,7 @@ void virtqueue_get_avail_bytes(VirtQueue *vq, unsigned int *in_bytes,
max = vq->vring.num;
caches = vring_get_region_caches(vq);
if (caches->desc.len < max * sizeof(VRingDesc)) {
- virtio_error(vdev, "Cannot map descriptor ring");
+ virtqueue_error(vq, "Cannot map descriptor ring");
goto err;
}
@@ -630,13 +630,13 @@ void virtqueue_get_avail_bytes(VirtQueue *vq, unsigned int *in_bytes,
if (desc.flags & VRING_DESC_F_INDIRECT) {
if (desc.len % sizeof(VRingDesc)) {
- virtio_error(vdev, "Invalid size for indirect buffer table");
+ virtqueue_error(vq, "Invalid size for indirect buffer table");
goto err;
}
/* If we've got too many, that implies a descriptor loop. */
if (num_bufs >= max) {
- virtio_error(vdev, "Looped descriptor");
+ virtqueue_error(vq, "Looped descriptor");
goto err;
}
@@ -646,7 +646,7 @@ void virtqueue_get_avail_bytes(VirtQueue *vq, unsigned int *in_bytes,
desc.addr, desc.len, false);
desc_cache = &indirect_desc_cache;
if (len < desc.len) {
- virtio_error(vdev, "Cannot map indirect buffer");
+ virtqueue_error(vq, "Cannot map indirect buffer");
goto err;
}
@@ -658,7 +658,7 @@ void virtqueue_get_avail_bytes(VirtQueue *vq, unsigned int *in_bytes,
do {
/* If we've got too many, that implies a descriptor loop. */
if (++num_bufs > max) {
- virtio_error(vdev, "Looped descriptor");
+ virtqueue_error(vq, "Looped descriptor");
goto err;
}
@@ -671,7 +671,7 @@ void virtqueue_get_avail_bytes(VirtQueue *vq, unsigned int *in_bytes,
goto done;
}
- rc = virtqueue_read_next_desc(vdev, &desc, desc_cache, max, &i);
+ rc = virtqueue_read_next_desc(vq, &desc, desc_cache, max, &i);
} while (rc == VIRTQUEUE_READ_DESC_MORE);
if (rc == VIRTQUEUE_READ_DESC_ERROR) {
@@ -715,7 +715,7 @@ int virtqueue_avail_bytes(VirtQueue *vq, unsigned int in_bytes,
return in_bytes <= in_total && out_bytes <= out_total;
}
-static bool virtqueue_map_desc(VirtIODevice *vdev, unsigned int *p_num_sg,
+static bool virtqueue_map_desc(VirtQueue *vq, unsigned int *p_num_sg,
hwaddr *addr, struct iovec *iov,
unsigned int max_num_sg, bool is_write,
hwaddr pa, size_t sz)
@@ -725,7 +725,7 @@ static bool virtqueue_map_desc(VirtIODevice *vdev, unsigned int *p_num_sg,
assert(num_sg <= max_num_sg);
if (!sz) {
- virtio_error(vdev, "virtio: zero sized buffers are not allowed");
+ virtqueue_error(vq, "Zero sized buffers are not allowed");
goto out;
}
@@ -733,17 +733,16 @@ static bool virtqueue_map_desc(VirtIODevice *vdev, unsigned int *p_num_sg,
hwaddr len = sz;
if (num_sg == max_num_sg) {
- virtio_error(vdev, "virtio: too many write descriptors in "
- "indirect table");
+ virtqueue_error(vq, "Too many write descriptors in indirect table");
goto out;
}
- iov[num_sg].iov_base = dma_memory_map(vdev->dma_as, pa, &len,
+ iov[num_sg].iov_base = dma_memory_map(vq->vdev->dma_as, pa, &len,
is_write ?
DMA_DIRECTION_FROM_DEVICE :
DMA_DIRECTION_TO_DEVICE);
if (!iov[num_sg].iov_base) {
- virtio_error(vdev, "virtio: bogus descriptor or out of resources");
+ virtqueue_error(vq, "Bogus descriptor or out of resources");
goto out;
}
@@ -862,7 +861,7 @@ void *virtqueue_pop(VirtQueue *vq, size_t sz)
max = vq->vring.num;
if (vq->inuse >= vq->vring.num) {
- virtio_error(vdev, "Virtqueue size exceeded");
+ virtqueue_error(vq, "Virtqueue size exceeded");
goto done;
}
@@ -878,7 +877,7 @@ void *virtqueue_pop(VirtQueue *vq, size_t sz)
caches = vring_get_region_caches(vq);
if (caches->desc.len < max * sizeof(VRingDesc)) {
- virtio_error(vdev, "Cannot map descriptor ring");
+ virtqueue_error(vq, "Cannot map descriptor ring");
goto done;
}
@@ -886,7 +885,7 @@ void *virtqueue_pop(VirtQueue *vq, size_t sz)
vring_desc_read(vdev, &desc, desc_cache, i);
if (desc.flags & VRING_DESC_F_INDIRECT) {
if (desc.len % sizeof(VRingDesc)) {
- virtio_error(vdev, "Invalid size for indirect buffer table");
+ virtqueue_error(vq, "Invalid size for indirect buffer table");
goto done;
}
@@ -895,7 +894,7 @@ void *virtqueue_pop(VirtQueue *vq, size_t sz)
desc.addr, desc.len, false);
desc_cache = &indirect_desc_cache;
if (len < desc.len) {
- virtio_error(vdev, "Cannot map indirect buffer");
+ virtqueue_error(vq, "Cannot map indirect buffer");
goto done;
}
@@ -909,16 +908,16 @@ void *virtqueue_pop(VirtQueue *vq, size_t sz)
bool map_ok;
if (desc.flags & VRING_DESC_F_WRITE) {
- map_ok = virtqueue_map_desc(vdev, &in_num, addr + out_num,
+ map_ok = virtqueue_map_desc(vq, &in_num, addr + out_num,
iov + out_num,
VIRTQUEUE_MAX_SIZE - out_num, true,
desc.addr, desc.len);
} else {
if (in_num) {
- virtio_error(vdev, "Incorrect order for descriptors");
+ virtqueue_error(vq, "Incorrect order for descriptors");
goto err_undo_map;
}
- map_ok = virtqueue_map_desc(vdev, &out_num, addr, iov,
+ map_ok = virtqueue_map_desc(vq, &out_num, addr, iov,
VIRTQUEUE_MAX_SIZE, false,
desc.addr, desc.len);
}
@@ -928,11 +927,11 @@ void *virtqueue_pop(VirtQueue *vq, size_t sz)
/* If we've got too many, that implies a descriptor loop. */
if ((in_num + out_num) > max) {
- virtio_error(vdev, "Looped descriptor");
+ virtqueue_error(vq, "Looped descriptor");
goto err_undo_map;
}
- rc = virtqueue_read_next_desc(vdev, &desc, desc_cache, max, &i);
+ rc = virtqueue_read_next_desc(vq, &desc, desc_cache, max, &i);
} while (rc == VIRTQUEUE_READ_DESC_MORE);
if (rc == VIRTQUEUE_READ_DESC_ERROR) {
--
2.9.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH v3 4/9] virtio-9p: use virtqueue_error for errors with queue context
2017-07-17 8:11 [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Ladi Prosek
` (2 preceding siblings ...)
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 3/9] virtio: use virtqueue_error for errors with queue context Ladi Prosek
@ 2017-07-17 8:11 ` Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 5/9] virtio-blk: " Ladi Prosek
` (5 subsequent siblings)
9 siblings, 0 replies; 22+ messages in thread
From: Ladi Prosek @ 2017-07-17 8:11 UTC (permalink / raw)
To: qemu-devel
Cc: casasfernando, mst, jasowang, cohuck, armbru, groug, arei.gonglei,
aneesh.kumar
virtqueue_error includes the queue index in the error output and is preferred
for errors that pertain to a virtqueue rather than to the device as a whole.
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
Acked-by: Greg Kurz <groug@kaod.org>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
---
hw/9pfs/virtio-9p-device.c | 37 +++++++++++++++----------------------
1 file changed, 15 insertions(+), 22 deletions(-)
diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c
index 62650b0..cf16b4b 100644
--- a/hw/9pfs/virtio-9p-device.c
+++ b/hw/9pfs/virtio-9p-device.c
@@ -54,16 +54,16 @@ static void handle_9p_output(VirtIODevice *vdev, VirtQueue *vq)
}
if (iov_size(elem->in_sg, elem->in_num) < 7) {
- virtio_error(vdev,
- "The guest sent a VirtFS request without space for "
- "the reply");
+ virtqueue_error(vq,
+ "The guest sent a VirtFS request without space for "
+ "the reply");
goto out_free_req;
}
len = iov_to_buf(elem->out_sg, elem->out_num, 0, &out, 7);
if (len != 7) {
- virtio_error(vdev, "The guest sent a malformed VirtFS request: "
- "header size is %zd, should be 7", len);
+ virtqueue_error(vq, "The guest sent a malformed VirtFS request: "
+ "header size is %zd, should be 7", len);
goto out_free_req;
}
@@ -150,10 +150,8 @@ static ssize_t virtio_pdu_vmarshal(V9fsPDU *pdu, size_t offset,
ret = v9fs_iov_vmarshal(elem->in_sg, elem->in_num, offset, 1, fmt, ap);
if (ret < 0) {
- VirtIODevice *vdev = VIRTIO_DEVICE(v);
-
- virtio_error(vdev, "Failed to encode VirtFS reply type %d",
- pdu->id + 1);
+ virtqueue_error(v->vq, "Failed to encode VirtFS reply type %d",
+ pdu->id + 1);
}
return ret;
}
@@ -168,9 +166,8 @@ static ssize_t virtio_pdu_vunmarshal(V9fsPDU *pdu, size_t offset,
ret = v9fs_iov_vunmarshal(elem->out_sg, elem->out_num, offset, 1, fmt, ap);
if (ret < 0) {
- VirtIODevice *vdev = VIRTIO_DEVICE(v);
-
- virtio_error(vdev, "Failed to decode VirtFS request type %d", pdu->id);
+ virtqueue_error(v->vq, "Failed to decode VirtFS request type %d",
+ pdu->id);
}
return ret;
}
@@ -184,11 +181,9 @@ static void virtio_init_in_iov_from_pdu(V9fsPDU *pdu, struct iovec **piov,
size_t buf_size = iov_size(elem->in_sg, elem->in_num);
if (buf_size < size) {
- VirtIODevice *vdev = VIRTIO_DEVICE(v);
-
- virtio_error(vdev,
- "VirtFS reply type %d needs %zu bytes, buffer has %zu",
- pdu->id + 1, size, buf_size);
+ virtqueue_error(v->vq,
+ "VirtFS reply type %d needs %zu bytes, buffer has %zu",
+ pdu->id + 1, size, buf_size);
}
*piov = elem->in_sg;
@@ -204,11 +199,9 @@ static void virtio_init_out_iov_from_pdu(V9fsPDU *pdu, struct iovec **piov,
size_t buf_size = iov_size(elem->out_sg, elem->out_num);
if (buf_size < size) {
- VirtIODevice *vdev = VIRTIO_DEVICE(v);
-
- virtio_error(vdev,
- "VirtFS request type %d needs %zu bytes, buffer has %zu",
- pdu->id, size, buf_size);
+ virtqueue_error(v->vq,
+ "VirtFS request type %d needs %zu bytes, "
+ "buffer has %zu", pdu->id, size, buf_size);
}
*piov = elem->out_sg;
--
2.9.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH v3 5/9] virtio-blk: use virtqueue_error for errors with queue context
2017-07-17 8:11 [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Ladi Prosek
` (3 preceding siblings ...)
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 4/9] virtio-9p: " Ladi Prosek
@ 2017-07-17 8:11 ` Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 6/9] virtio-net: " Ladi Prosek
` (4 subsequent siblings)
9 siblings, 0 replies; 22+ messages in thread
From: Ladi Prosek @ 2017-07-17 8:11 UTC (permalink / raw)
To: qemu-devel
Cc: casasfernando, mst, jasowang, cohuck, armbru, groug, arei.gonglei,
aneesh.kumar
virtqueue_error includes the queue index in the error output and is preferred
for errors that pertain to a virtqueue rather than to the device as a whole.
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
---
hw/block/virtio-blk.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index b750bd8..359d8bd 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -490,20 +490,20 @@ static int virtio_blk_handle_request(VirtIOBlockReq *req, MultiReqBuffer *mrb)
VirtIODevice *vdev = VIRTIO_DEVICE(s);
if (req->elem.out_num < 1 || req->elem.in_num < 1) {
- virtio_error(vdev, "virtio-blk missing headers");
+ virtqueue_error(req->vq, "virtio-blk missing headers");
return -1;
}
if (unlikely(iov_to_buf(iov, out_num, 0, &req->out,
sizeof(req->out)) != sizeof(req->out))) {
- virtio_error(vdev, "virtio-blk request outhdr too short");
+ virtqueue_error(req->vq, "virtio-blk request outhdr too short");
return -1;
}
iov_discard_front(&iov, &out_num, sizeof(req->out));
if (in_iov[in_num - 1].iov_len < sizeof(struct virtio_blk_inhdr)) {
- virtio_error(vdev, "virtio-blk request inhdr too short");
+ virtqueue_error(req->vq, "virtio-blk request inhdr too short");
return -1;
}
--
2.9.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH v3 6/9] virtio-net: use virtqueue_error for errors with queue context
2017-07-17 8:11 [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Ladi Prosek
` (4 preceding siblings ...)
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 5/9] virtio-blk: " Ladi Prosek
@ 2017-07-17 8:11 ` Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 7/9] virtio-scsi: " Ladi Prosek
` (3 subsequent siblings)
9 siblings, 0 replies; 22+ messages in thread
From: Ladi Prosek @ 2017-07-17 8:11 UTC (permalink / raw)
To: qemu-devel
Cc: casasfernando, mst, jasowang, cohuck, armbru, groug, arei.gonglei,
aneesh.kumar
virtqueue_error includes the queue index in the error output and is preferred
for errors that pertain to a virtqueue rather than to the device as a whole.
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
---
hw/net/virtio-net.c | 24 ++++++++++++------------
1 file changed, 12 insertions(+), 12 deletions(-)
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 5630a9e..b3d0b85 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -970,7 +970,7 @@ static void virtio_net_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq)
}
if (iov_size(elem->in_sg, elem->in_num) < sizeof(status) ||
iov_size(elem->out_sg, elem->out_num) < sizeof(ctrl)) {
- virtio_error(vdev, "virtio-net ctrl missing headers");
+ virtqueue_error(vq, "virtio-net ctrl missing headers");
virtqueue_detach_element(vq, elem, 0);
g_free(elem);
break;
@@ -1204,20 +1204,20 @@ static ssize_t virtio_net_receive_rcu(NetClientState *nc, const uint8_t *buf,
elem = virtqueue_pop(q->rx_vq, sizeof(VirtQueueElement));
if (!elem) {
if (i) {
- virtio_error(vdev, "virtio-net unexpected empty queue: "
- "i %zd mergeable %d offset %zd, size %zd, "
- "guest hdr len %zd, host hdr len %zd "
- "guest features 0x%" PRIx64,
- i, n->mergeable_rx_bufs, offset, size,
- n->guest_hdr_len, n->host_hdr_len,
- vdev->guest_features);
+ virtqueue_error(q->rx_vq, "virtio-net unexpected empty queue: "
+ "i %zd mergeable %d offset %zd, size %zd, "
+ "guest hdr len %zd, host hdr len %zd "
+ "guest features 0x%" PRIx64,
+ i, n->mergeable_rx_bufs, offset, size,
+ n->guest_hdr_len, n->host_hdr_len,
+ vdev->guest_features);
}
return -1;
}
if (elem->in_num < 1) {
- virtio_error(vdev,
- "virtio-net receive queue contains no in buffers");
+ virtqueue_error(q->rx_vq,
+ "virtio-net receive queue contains no in buffers");
virtqueue_detach_element(q->rx_vq, elem, 0);
g_free(elem);
return -1;
@@ -1333,7 +1333,7 @@ static int32_t virtio_net_flush_tx(VirtIONetQueue *q)
out_num = elem->out_num;
out_sg = elem->out_sg;
if (out_num < 1) {
- virtio_error(vdev, "virtio-net header not in first element");
+ virtqueue_error(q->tx_vq, "virtio-net header not in first element");
virtqueue_detach_element(q->tx_vq, elem, 0);
g_free(elem);
return -EINVAL;
@@ -1342,7 +1342,7 @@ static int32_t virtio_net_flush_tx(VirtIONetQueue *q)
if (n->has_vnet_hdr) {
if (iov_to_buf(out_sg, out_num, 0, &mhdr, n->guest_hdr_len) <
n->guest_hdr_len) {
- virtio_error(vdev, "virtio-net header incorrect");
+ virtqueue_error(q->tx_vq, "virtio-net header incorrect");
virtqueue_detach_element(q->tx_vq, elem, 0);
g_free(elem);
return -EINVAL;
--
2.9.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH v3 7/9] virtio-scsi: use virtqueue_error for errors with queue context
2017-07-17 8:11 [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Ladi Prosek
` (5 preceding siblings ...)
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 6/9] virtio-net: " Ladi Prosek
@ 2017-07-17 8:11 ` Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 8/9] virtio-crypto: " Ladi Prosek
` (2 subsequent siblings)
9 siblings, 0 replies; 22+ messages in thread
From: Ladi Prosek @ 2017-07-17 8:11 UTC (permalink / raw)
To: qemu-devel
Cc: casasfernando, mst, jasowang, cohuck, armbru, groug, arei.gonglei,
aneesh.kumar
virtqueue_error includes the queue index in the error output and is preferred
for errors that pertain to a virtqueue rather than to the device as a whole.
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
---
hw/scsi/virtio-scsi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
index eb63944..436d9b9 100644
--- a/hw/scsi/virtio-scsi.c
+++ b/hw/scsi/virtio-scsi.c
@@ -84,7 +84,7 @@ static void virtio_scsi_complete_req(VirtIOSCSIReq *req)
static void virtio_scsi_bad_req(VirtIOSCSIReq *req)
{
- virtio_error(VIRTIO_DEVICE(req->dev), "wrong size for virtio-scsi headers");
+ virtqueue_error(req->vq, "wrong size for virtio-scsi headers");
virtqueue_detach_element(req->vq, &req->elem, 0);
virtio_scsi_free_req(req);
}
--
2.9.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH v3 8/9] virtio-crypto: use virtqueue_error for errors with queue context
2017-07-17 8:11 [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Ladi Prosek
` (6 preceding siblings ...)
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 7/9] virtio-scsi: " Ladi Prosek
@ 2017-07-17 8:11 ` Ladi Prosek
2017-07-17 8:36 ` Gonglei (Arei)
` (2 more replies)
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 9/9] checkpatch: add virtio_error and virtqueue_error to error funcs Ladi Prosek
2017-07-21 15:21 ` [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Stefan Hajnoczi
9 siblings, 3 replies; 22+ messages in thread
From: Ladi Prosek @ 2017-07-17 8:11 UTC (permalink / raw)
To: qemu-devel
Cc: casasfernando, mst, jasowang, cohuck, armbru, groug, arei.gonglei,
aneesh.kumar
virtqueue_error includes the queue index in the error output and is preferred
for errors that pertain to a virtqueue rather than to the device as a whole.
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
---
hw/virtio/virtio-crypto.c | 49 ++++++++++++++++++++++++-----------------------
1 file changed, 25 insertions(+), 24 deletions(-)
diff --git a/hw/virtio/virtio-crypto.c b/hw/virtio/virtio-crypto.c
index 19c82e0..eaf2ed3 100644
--- a/hw/virtio/virtio-crypto.c
+++ b/hw/virtio/virtio-crypto.c
@@ -61,7 +61,8 @@ virtio_crypto_cipher_session_helper(VirtIODevice *vdev,
info->cipher_key = g_malloc(info->key_len);
s = iov_to_buf(*iov, num, 0, info->cipher_key, info->key_len);
if (unlikely(s != info->key_len)) {
- virtio_error(vdev, "virtio-crypto cipher key incorrect");
+ virtqueue_error(vcrypto->ctrl_vq,
+ "virtio-crypto cipher key incorrect");
return -EFAULT;
}
iov_discard_front(iov, &num, info->key_len);
@@ -131,7 +132,7 @@ virtio_crypto_create_sym_session(VirtIOCrypto *vcrypto,
s = iov_to_buf(iov, out_num, 0, info.auth_key,
info.auth_key_len);
if (unlikely(s != info.auth_key_len)) {
- virtio_error(vdev,
+ virtqueue_error(vcrypto->ctrl_vq,
"virtio-crypto authenticated key incorrect");
ret = -EFAULT;
goto err;
@@ -229,7 +230,7 @@ static void virtio_crypto_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq)
break;
}
if (elem->out_num < 1 || elem->in_num < 1) {
- virtio_error(vdev, "virtio-crypto ctrl missing headers");
+ virtqueue_error(vq, "virtio-crypto ctrl missing headers");
virtqueue_detach_element(vq, elem, 0);
g_free(elem);
break;
@@ -241,7 +242,7 @@ static void virtio_crypto_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq)
in_iov = elem->in_sg;
if (unlikely(iov_to_buf(out_iov, out_num, 0, &ctrl, sizeof(ctrl))
!= sizeof(ctrl))) {
- virtio_error(vdev, "virtio-crypto request ctrl_hdr too short");
+ virtqueue_error(vq, "virtio-crypto request ctrl_hdr too short");
virtqueue_detach_element(vq, elem, 0);
g_free(elem);
break;
@@ -274,7 +275,7 @@ static void virtio_crypto_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq)
s = iov_from_buf(in_iov, in_num, 0, &input, sizeof(input));
if (unlikely(s != sizeof(input))) {
- virtio_error(vdev, "virtio-crypto input incorrect");
+ virtqueue_error(vq, "virtio-crypto input incorrect");
virtqueue_detach_element(vq, elem, 0);
break;
}
@@ -290,7 +291,7 @@ static void virtio_crypto_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq)
/* The status only occupy one byte, we can directly use it */
s = iov_from_buf(in_iov, in_num, 0, &status, sizeof(status));
if (unlikely(s != sizeof(status))) {
- virtio_error(vdev, "virtio-crypto status incorrect");
+ virtqueue_error(vq, "virtio-crypto status incorrect");
virtqueue_detach_element(vq, elem, 0);
break;
}
@@ -306,7 +307,7 @@ static void virtio_crypto_handle_ctrl(VirtIODevice *vdev, VirtQueue *vq)
stl_le_p(&input.status, VIRTIO_CRYPTO_NOTSUPP);
s = iov_from_buf(in_iov, in_num, 0, &input, sizeof(input));
if (unlikely(s != sizeof(input))) {
- virtio_error(vdev, "virtio-crypto input incorrect");
+ virtqueue_error(vq, "virtio-crypto input incorrect");
virtqueue_detach_element(vq, elem, 0);
break;
}
@@ -370,7 +371,7 @@ virtio_crypto_sym_input_data_helper(VirtIODevice *vdev,
/* Save the cipher result */
s = iov_from_buf(req->in_iov, req->in_num, 0, sym_op_info->dst, len);
if (s != len) {
- virtio_error(vdev, "virtio-crypto dest data incorrect");
+ virtqueue_error(req->vq, "virtio-crypto dest data incorrect");
return;
}
@@ -383,7 +384,7 @@ virtio_crypto_sym_input_data_helper(VirtIODevice *vdev,
sym_op_info->digest_result,
sym_op_info->digest_result_len);
if (s != sym_op_info->digest_result_len) {
- virtio_error(vdev, "virtio-crypto digest result incorrect");
+ virtqueue_error(req->vq, "virtio-crypto digest result incorrect");
}
}
}
@@ -414,12 +415,13 @@ virtio_crypto_get_request(VirtIOCrypto *s, VirtQueue *vq)
}
static CryptoDevBackendSymOpInfo *
-virtio_crypto_sym_op_helper(VirtIODevice *vdev,
+virtio_crypto_sym_op_helper(VirtIOCryptoReq *request,
struct virtio_crypto_cipher_para *cipher_para,
struct virtio_crypto_alg_chain_data_para *alg_chain_para,
struct iovec *iov, unsigned int out_num)
{
- VirtIOCrypto *vcrypto = VIRTIO_CRYPTO(vdev);
+ VirtIOCrypto *vcrypto = VIRTIO_CRYPTO(request->vcrypto);
+ VirtQueue *vq = request->vq;
CryptoDevBackendSymOpInfo *op_info;
uint32_t src_len = 0, dst_len = 0;
uint32_t iv_len = 0;
@@ -454,7 +456,7 @@ virtio_crypto_sym_op_helper(VirtIODevice *vdev,
max_len = (uint64_t)iv_len + aad_len + src_len + dst_len + hash_result_len;
if (unlikely(max_len > vcrypto->conf.max_size)) {
- virtio_error(vdev, "virtio-crypto too big length");
+ virtqueue_error(vq, "virtio-crypto too big length");
return NULL;
}
@@ -475,7 +477,7 @@ virtio_crypto_sym_op_helper(VirtIODevice *vdev,
s = iov_to_buf(iov, out_num, 0, op_info->iv, op_info->iv_len);
if (unlikely(s != op_info->iv_len)) {
- virtio_error(vdev, "virtio-crypto iv incorrect");
+ virtqueue_error(vq, "virtio-crypto iv incorrect");
goto err;
}
iov_discard_front(&iov, &out_num, op_info->iv_len);
@@ -489,7 +491,7 @@ virtio_crypto_sym_op_helper(VirtIODevice *vdev,
s = iov_to_buf(iov, out_num, 0, op_info->aad_data, op_info->aad_len);
if (unlikely(s != op_info->aad_len)) {
- virtio_error(vdev, "virtio-crypto additional auth data incorrect");
+ virtqueue_error(vq, "virtio-crypto additional auth data incorrect");
goto err;
}
iov_discard_front(&iov, &out_num, op_info->aad_len);
@@ -504,7 +506,7 @@ virtio_crypto_sym_op_helper(VirtIODevice *vdev,
s = iov_to_buf(iov, out_num, 0, op_info->src, op_info->src_len);
if (unlikely(s != op_info->src_len)) {
- virtio_error(vdev, "virtio-crypto source data incorrect");
+ virtqueue_error(vq, "virtio-crypto source data incorrect");
goto err;
}
iov_discard_front(&iov, &out_num, op_info->src_len);
@@ -532,26 +534,25 @@ err:
}
static int
-virtio_crypto_handle_sym_req(VirtIOCrypto *vcrypto,
+virtio_crypto_handle_sym_req(VirtIOCryptoReq *request,
struct virtio_crypto_sym_data_req *req,
CryptoDevBackendSymOpInfo **sym_op_info,
struct iovec *iov, unsigned int out_num)
{
- VirtIODevice *vdev = VIRTIO_DEVICE(vcrypto);
uint32_t op_type;
CryptoDevBackendSymOpInfo *op_info;
op_type = ldl_le_p(&req->op_type);
if (op_type == VIRTIO_CRYPTO_SYM_OP_CIPHER) {
- op_info = virtio_crypto_sym_op_helper(vdev, &req->u.cipher.para,
+ op_info = virtio_crypto_sym_op_helper(request, &req->u.cipher.para,
NULL, iov, out_num);
if (!op_info) {
return -EFAULT;
}
op_info->op_type = op_type;
} else if (op_type == VIRTIO_CRYPTO_SYM_OP_ALGORITHM_CHAINING) {
- op_info = virtio_crypto_sym_op_helper(vdev, NULL,
+ op_info = virtio_crypto_sym_op_helper(request, NULL,
&req->u.chain.para,
iov, out_num);
if (!op_info) {
@@ -573,7 +574,7 @@ static int
virtio_crypto_handle_request(VirtIOCryptoReq *request)
{
VirtIOCrypto *vcrypto = request->vcrypto;
- VirtIODevice *vdev = VIRTIO_DEVICE(vcrypto);
+ VirtQueue *vq = request->vq;
VirtQueueElement *elem = &request->elem;
int queue_index = virtio_crypto_vq2q(virtio_get_queue_index(request->vq));
struct virtio_crypto_op_data_req req;
@@ -589,7 +590,7 @@ virtio_crypto_handle_request(VirtIOCryptoReq *request)
Error *local_err = NULL;
if (elem->out_num < 1 || elem->in_num < 1) {
- virtio_error(vdev, "virtio-crypto dataq missing headers");
+ virtqueue_error(vq, "virtio-crypto dataq missing headers");
return -1;
}
@@ -599,14 +600,14 @@ virtio_crypto_handle_request(VirtIOCryptoReq *request)
in_iov = elem->in_sg;
if (unlikely(iov_to_buf(out_iov, out_num, 0, &req, sizeof(req))
!= sizeof(req))) {
- virtio_error(vdev, "virtio-crypto request outhdr too short");
+ virtqueue_error(vq, "virtio-crypto request outhdr too short");
return -1;
}
iov_discard_front(&out_iov, &out_num, sizeof(req));
if (in_iov[in_num - 1].iov_len <
sizeof(struct virtio_crypto_inhdr)) {
- virtio_error(vdev, "virtio-crypto request inhdr too short");
+ virtqueue_error(vq, "virtio-crypto request inhdr too short");
return -1;
}
/* We always touch the last byte, so just see how big in_iov is. */
@@ -629,7 +630,7 @@ virtio_crypto_handle_request(VirtIOCryptoReq *request)
switch (opcode) {
case VIRTIO_CRYPTO_CIPHER_ENCRYPT:
case VIRTIO_CRYPTO_CIPHER_DECRYPT:
- ret = virtio_crypto_handle_sym_req(vcrypto,
+ ret = virtio_crypto_handle_sym_req(request,
&req.u.sym_req,
&sym_op_info,
out_iov, out_num);
--
2.9.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH v3 9/9] checkpatch: add virtio_error and virtqueue_error to error funcs
2017-07-17 8:11 [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Ladi Prosek
` (7 preceding siblings ...)
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 8/9] virtio-crypto: " Ladi Prosek
@ 2017-07-17 8:11 ` Ladi Prosek
2017-07-17 12:01 ` Cornelia Huck
` (3 more replies)
2017-07-21 15:21 ` [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Stefan Hajnoczi
9 siblings, 4 replies; 22+ messages in thread
From: Ladi Prosek @ 2017-07-17 8:11 UTC (permalink / raw)
To: qemu-devel
Cc: casasfernando, mst, jasowang, cohuck, armbru, groug, arei.gonglei,
aneesh.kumar
Two more error functions that should not contain newlines.
Suggested-by: Greg Kurz <groug@kaod.org>
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
---
scripts/checkpatch.pl | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 4e91122..2cd2713 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2540,7 +2540,9 @@ sub process {
info_vreport|
error_report|
warn_report|
- info_report}x;
+ info_report|
+ virtio_error|
+ virtqueue_error}x;
if ($rawline =~ /\b(?:$qemu_error_funcs)\s*\(.*\".*\\n/) {
ERROR("Error messages should not contain newlines\n" . $herecurr);
--
2.9.3
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH v3 8/9] virtio-crypto: use virtqueue_error for errors with queue context
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 8/9] virtio-crypto: " Ladi Prosek
@ 2017-07-17 8:36 ` Gonglei (Arei)
2017-07-17 11:59 ` Cornelia Huck
2017-07-21 15:20 ` Stefan Hajnoczi
2 siblings, 0 replies; 22+ messages in thread
From: Gonglei (Arei) @ 2017-07-17 8:36 UTC (permalink / raw)
To: Ladi Prosek, qemu-devel@nongnu.org
Cc: casasfernando@hotmail.com, mst@redhat.com, jasowang@redhat.com,
cohuck@redhat.com, armbru@redhat.com, groug@kaod.org,
aneesh.kumar@linux.vnet.ibm.com
> -----Original Message-----
> From: Ladi Prosek [mailto:lprosek@redhat.com]
> Sent: Monday, July 17, 2017 4:12 PM
> To: qemu-devel@nongnu.org
> Cc: casasfernando@hotmail.com; mst@redhat.com; jasowang@redhat.com;
> cohuck@redhat.com; armbru@redhat.com; groug@kaod.org; Gonglei (Arei);
> aneesh.kumar@linux.vnet.ibm.com
> Subject: [PATCH v3 8/9] virtio-crypto: use virtqueue_error for errors with queue
> context
>
> virtqueue_error includes the queue index in the error output and is preferred
> for errors that pertain to a virtqueue rather than to the device as a whole.
>
> Signed-off-by: Ladi Prosek <lprosek@redhat.com>
> ---
> hw/virtio/virtio-crypto.c | 49 ++++++++++++++++++++++++-----------------------
> 1 file changed, 25 insertions(+), 24 deletions(-)
>
Reviewed-by: Gonglei <arei.gonglei@huawei.com>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH v3 1/9] virtio: enhance virtio_error messages
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 1/9] " Ladi Prosek
@ 2017-07-17 11:51 ` Cornelia Huck
0 siblings, 0 replies; 22+ messages in thread
From: Cornelia Huck @ 2017-07-17 11:51 UTC (permalink / raw)
To: Ladi Prosek
Cc: qemu-devel, casasfernando, mst, jasowang, armbru, groug,
arei.gonglei, aneesh.kumar
On Mon, 17 Jul 2017 10:11:44 +0200
Ladi Prosek <lprosek@redhat.com> wrote:
> Output like "Virtqueue size exceeded" is not much useful in identifying the
s/much/very/
> culprit. This commit adds virtio device name (e.g. "virtio-input") and id
> if set (e.g. "mouse0") to all virtio error messages to improve debuggability.
>
> Some virtio devices (virtio-scsi, virtio-serial) insert a bus between the
> proxy object and the virtio backends, so a helper function is added to walk
> the object hierarchy and find the right proxy object to extract the id from.
>
> Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
> Signed-off-by: Ladi Prosek <lprosek@redhat.com>
> ---
> hw/virtio/virtio.c | 30 ++++++++++++++++++++++++++++--
> 1 file changed, 28 insertions(+), 2 deletions(-)
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH v3 2/9] virtio: introduce virtqueue_error
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 2/9] virtio: introduce virtqueue_error Ladi Prosek
@ 2017-07-17 11:52 ` Cornelia Huck
0 siblings, 0 replies; 22+ messages in thread
From: Cornelia Huck @ 2017-07-17 11:52 UTC (permalink / raw)
To: Ladi Prosek
Cc: qemu-devel, casasfernando, mst, jasowang, armbru, groug,
arei.gonglei, aneesh.kumar
On Mon, 17 Jul 2017 10:11:45 +0200
Ladi Prosek <lprosek@redhat.com> wrote:
> Most virtio error output pertains to a specific virtqueue so it makes
s/pertains/pertain/
> sense to include the queue index in error messages.
>
> Suggested-by: Stefan Hajnoczi <stefanha@redhat.com>
> Signed-off-by: Ladi Prosek <lprosek@redhat.com>
> ---
> hw/virtio/virtio.c | 44 +++++++++++++++++++++++++++++++++-----------
> include/hw/virtio/virtio.h | 1 +
> 2 files changed, 34 insertions(+), 11 deletions(-)
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH v3 8/9] virtio-crypto: use virtqueue_error for errors with queue context
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 8/9] virtio-crypto: " Ladi Prosek
2017-07-17 8:36 ` Gonglei (Arei)
@ 2017-07-17 11:59 ` Cornelia Huck
2017-07-21 15:20 ` Stefan Hajnoczi
2 siblings, 0 replies; 22+ messages in thread
From: Cornelia Huck @ 2017-07-17 11:59 UTC (permalink / raw)
To: Ladi Prosek
Cc: qemu-devel, casasfernando, mst, jasowang, armbru, groug,
arei.gonglei, aneesh.kumar
On Mon, 17 Jul 2017 10:11:51 +0200
Ladi Prosek <lprosek@redhat.com> wrote:
> virtqueue_error includes the queue index in the error output and is preferred
> for errors that pertain to a virtqueue rather than to the device as a whole.
>
> Signed-off-by: Ladi Prosek <lprosek@redhat.com>
> ---
> hw/virtio/virtio-crypto.c | 49 ++++++++++++++++++++++++-----------------------
> 1 file changed, 25 insertions(+), 24 deletions(-)
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH v3 9/9] checkpatch: add virtio_error and virtqueue_error to error funcs
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 9/9] checkpatch: add virtio_error and virtqueue_error to error funcs Ladi Prosek
@ 2017-07-17 12:01 ` Cornelia Huck
2017-07-18 16:06 ` Markus Armbruster
` (2 subsequent siblings)
3 siblings, 0 replies; 22+ messages in thread
From: Cornelia Huck @ 2017-07-17 12:01 UTC (permalink / raw)
To: Ladi Prosek
Cc: qemu-devel, casasfernando, mst, jasowang, armbru, groug,
arei.gonglei, aneesh.kumar
On Mon, 17 Jul 2017 10:11:52 +0200
Ladi Prosek <lprosek@redhat.com> wrote:
> Two more error functions that should not contain newlines.
>
> Suggested-by: Greg Kurz <groug@kaod.org>
> Signed-off-by: Ladi Prosek <lprosek@redhat.com>
> ---
> scripts/checkpatch.pl | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH v3 9/9] checkpatch: add virtio_error and virtqueue_error to error funcs
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 9/9] checkpatch: add virtio_error and virtqueue_error to error funcs Ladi Prosek
2017-07-17 12:01 ` Cornelia Huck
@ 2017-07-18 16:06 ` Markus Armbruster
2017-07-21 15:17 ` Stefan Hajnoczi
2017-07-24 9:36 ` Greg Kurz
3 siblings, 0 replies; 22+ messages in thread
From: Markus Armbruster @ 2017-07-18 16:06 UTC (permalink / raw)
To: Ladi Prosek
Cc: qemu-devel, casasfernando, mst, jasowang, cohuck, groug,
arei.gonglei, aneesh.kumar
Ladi Prosek <lprosek@redhat.com> writes:
> Two more error functions that should not contain newlines.
>
> Suggested-by: Greg Kurz <groug@kaod.org>
> Signed-off-by: Ladi Prosek <lprosek@redhat.com>
> ---
> scripts/checkpatch.pl | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 4e91122..2cd2713 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -2540,7 +2540,9 @@ sub process {
> info_vreport|
> error_report|
> warn_report|
> - info_report}x;
> + info_report|
> + virtio_error|
> + virtqueue_error}x;
>
> if ($rawline =~ /\b(?:$qemu_error_funcs)\s*\(.*\".*\\n/) {
> ERROR("Error messages should not contain newlines\n" . $herecurr);
What makes the two functions appropriate for this list is this pattern:
va_start(ap, fmt);
msg = g_strdup_vprintf(fmt, ap);
va_end(ap);
error_report("... %s", ..., msg);
There's a related pattern using error_vreport().
Do we have more instances of these patterns?
Regardless:
Reviewed-by: Markus Armbruster <armbru@redhat.com>
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH v3 9/9] checkpatch: add virtio_error and virtqueue_error to error funcs
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 9/9] checkpatch: add virtio_error and virtqueue_error to error funcs Ladi Prosek
2017-07-17 12:01 ` Cornelia Huck
2017-07-18 16:06 ` Markus Armbruster
@ 2017-07-21 15:17 ` Stefan Hajnoczi
2017-07-24 9:36 ` Greg Kurz
3 siblings, 0 replies; 22+ messages in thread
From: Stefan Hajnoczi @ 2017-07-21 15:17 UTC (permalink / raw)
To: Ladi Prosek
Cc: qemu-devel, casasfernando, mst, jasowang, cohuck, armbru, groug,
arei.gonglei, aneesh.kumar
[-- Attachment #1: Type: text/plain, Size: 370 bytes --]
On Mon, Jul 17, 2017 at 10:11:52AM +0200, Ladi Prosek wrote:
> Two more error functions that should not contain newlines.
>
> Suggested-by: Greg Kurz <groug@kaod.org>
> Signed-off-by: Ladi Prosek <lprosek@redhat.com>
> ---
> scripts/checkpatch.pl | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH v3 8/9] virtio-crypto: use virtqueue_error for errors with queue context
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 8/9] virtio-crypto: " Ladi Prosek
2017-07-17 8:36 ` Gonglei (Arei)
2017-07-17 11:59 ` Cornelia Huck
@ 2017-07-21 15:20 ` Stefan Hajnoczi
2 siblings, 0 replies; 22+ messages in thread
From: Stefan Hajnoczi @ 2017-07-21 15:20 UTC (permalink / raw)
To: Ladi Prosek
Cc: qemu-devel, casasfernando, mst, jasowang, cohuck, armbru, groug,
arei.gonglei, aneesh.kumar
[-- Attachment #1: Type: text/plain, Size: 476 bytes --]
On Mon, Jul 17, 2017 at 10:11:51AM +0200, Ladi Prosek wrote:
> virtqueue_error includes the queue index in the error output and is preferred
> for errors that pertain to a virtqueue rather than to the device as a whole.
>
> Signed-off-by: Ladi Prosek <lprosek@redhat.com>
> ---
> hw/virtio/virtio-crypto.c | 49 ++++++++++++++++++++++++-----------------------
> 1 file changed, 25 insertions(+), 24 deletions(-)
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages
2017-07-17 8:11 [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Ladi Prosek
` (8 preceding siblings ...)
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 9/9] checkpatch: add virtio_error and virtqueue_error to error funcs Ladi Prosek
@ 2017-07-21 15:21 ` Stefan Hajnoczi
2017-09-14 5:59 ` Ladi Prosek
9 siblings, 1 reply; 22+ messages in thread
From: Stefan Hajnoczi @ 2017-07-21 15:21 UTC (permalink / raw)
To: Ladi Prosek
Cc: qemu-devel, casasfernando, mst, jasowang, cohuck, armbru, groug,
arei.gonglei, aneesh.kumar
[-- Attachment #1: Type: text/plain, Size: 2674 bytes --]
On Mon, Jul 17, 2017 at 10:11:43AM +0200, Ladi Prosek wrote:
> Output like "Virtqueue size exceeded" is not much useful in identifying the
> culprit. This series beefs up virtio_error to print the virtio device name
> and id, and introduces virtqueue_error which additionally includes the index
> of the virtqueue where the error occured.
>
> Patches 1 to 3 lay the groundwork, patches 4 to 8 convert virtio devices to
> use virtqueue_error instead of virtio_error. Patch 9 adds virtio_error and
> virtqueue_error to the list of error funcs in checkpatch.pl.
>
> v1->v2:
> * Modified virtio_error and added virtqueue_error (Stefan)
> * Now also printing device id (Stefan)
> * Went over all virtio_error call sites and converted them to virtqueue_error
> as appropriate; added virtio device maintainers to cc
>
> v2->v3:
> * Removed patch 1 (Stefan, Markus)
> * Split patch 3 into 2 (adds virtqueue_error) and 3 (makes virtio.c call it)
> (Cornelia)
> * Added patch 9 to modify $qemu_error_funcs in checkpatch.pl (Greg)
> * s/includes queue index/includes the queue index/ in patch 3-9 commit
> messages (Cornelia)
> * Fixed virtio_get_device_id to return empty string instead of NULL if the
> device doesn't have an id (Stefan)
> * Simplified the change in virtio-crypto.c to use vcrypto->ctrl_vq instead
> of propagating the vq pointer in function arguments (Cornelia, Gonglei)
>
> Ladi Prosek (9):
> virtio: enhance virtio_error messages
> virtio: introduce virtqueue_error
> virtio: use virtqueue_error for errors with queue context
> virtio-9p: use virtqueue_error for errors with queue context
> virtio-blk: use virtqueue_error for errors with queue context
> virtio-net: use virtqueue_error for errors with queue context
> virtio-scsi: use virtqueue_error for errors with queue context
> virtio-crypto: use virtqueue_error for errors with queue context
> checkpatch: add virtio_error and virtqueue_error to error funcs
>
> hw/9pfs/virtio-9p-device.c | 37 ++++++--------
> hw/block/virtio-blk.c | 6 +--
> hw/net/virtio-net.c | 24 ++++-----
> hw/scsi/virtio-scsi.c | 2 +-
> hw/virtio/virtio-crypto.c | 49 ++++++++++---------
> hw/virtio/virtio.c | 119 +++++++++++++++++++++++++++++++--------------
> include/hw/virtio/virtio.h | 1 +
> scripts/checkpatch.pl | 4 +-
> 8 files changed, 143 insertions(+), 99 deletions(-)
Looks good. QEMU is currently in freeze for the 2.10 release. You may
need to resend so Michael Tsirkin can merge it after the release, or if
he maintainers a -next branch he could merge it right away.
Stefan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH v3 9/9] checkpatch: add virtio_error and virtqueue_error to error funcs
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 9/9] checkpatch: add virtio_error and virtqueue_error to error funcs Ladi Prosek
` (2 preceding siblings ...)
2017-07-21 15:17 ` Stefan Hajnoczi
@ 2017-07-24 9:36 ` Greg Kurz
3 siblings, 0 replies; 22+ messages in thread
From: Greg Kurz @ 2017-07-24 9:36 UTC (permalink / raw)
To: Ladi Prosek
Cc: qemu-devel, casasfernando, mst, jasowang, cohuck, armbru,
arei.gonglei, aneesh.kumar
[-- Attachment #1: Type: text/plain, Size: 880 bytes --]
On Mon, 17 Jul 2017 10:11:52 +0200
Ladi Prosek <lprosek@redhat.com> wrote:
> Two more error functions that should not contain newlines.
>
> Suggested-by: Greg Kurz <groug@kaod.org>
> Signed-off-by: Ladi Prosek <lprosek@redhat.com>
> ---
Reviewed-by: Greg Kurz <groug@kaod.org>
> scripts/checkpatch.pl | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
> index 4e91122..2cd2713 100755
> --- a/scripts/checkpatch.pl
> +++ b/scripts/checkpatch.pl
> @@ -2540,7 +2540,9 @@ sub process {
> info_vreport|
> error_report|
> warn_report|
> - info_report}x;
> + info_report|
> + virtio_error|
> + virtqueue_error}x;
>
> if ($rawline =~ /\b(?:$qemu_error_funcs)\s*\(.*\".*\\n/) {
> ERROR("Error messages should not contain newlines\n" . $herecurr);
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages
2017-07-21 15:21 ` [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Stefan Hajnoczi
@ 2017-09-14 5:59 ` Ladi Prosek
2017-10-03 10:01 ` Ladi Prosek
0 siblings, 1 reply; 22+ messages in thread
From: Ladi Prosek @ 2017-09-14 5:59 UTC (permalink / raw)
To: Stefan Hajnoczi
Cc: qemu-devel, Fernando Casas Schössow, Michael S. Tsirkin,
Jason Wang, Cornelia Huck, Markus Armbruster, Greg Kurz,
arei.gonglei, aneesh.kumar
On Fri, Jul 21, 2017 at 5:21 PM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> On Mon, Jul 17, 2017 at 10:11:43AM +0200, Ladi Prosek wrote:
>> Output like "Virtqueue size exceeded" is not much useful in identifying the
>> culprit. This series beefs up virtio_error to print the virtio device name
>> and id, and introduces virtqueue_error which additionally includes the index
>> of the virtqueue where the error occured.
>>
>> Patches 1 to 3 lay the groundwork, patches 4 to 8 convert virtio devices to
>> use virtqueue_error instead of virtio_error. Patch 9 adds virtio_error and
>> virtqueue_error to the list of error funcs in checkpatch.pl.
>>
>> v1->v2:
>> * Modified virtio_error and added virtqueue_error (Stefan)
>> * Now also printing device id (Stefan)
>> * Went over all virtio_error call sites and converted them to virtqueue_error
>> as appropriate; added virtio device maintainers to cc
>>
>> v2->v3:
>> * Removed patch 1 (Stefan, Markus)
>> * Split patch 3 into 2 (adds virtqueue_error) and 3 (makes virtio.c call it)
>> (Cornelia)
>> * Added patch 9 to modify $qemu_error_funcs in checkpatch.pl (Greg)
>> * s/includes queue index/includes the queue index/ in patch 3-9 commit
>> messages (Cornelia)
>> * Fixed virtio_get_device_id to return empty string instead of NULL if the
>> device doesn't have an id (Stefan)
>> * Simplified the change in virtio-crypto.c to use vcrypto->ctrl_vq instead
>> of propagating the vq pointer in function arguments (Cornelia, Gonglei)
>>
>> Ladi Prosek (9):
>> virtio: enhance virtio_error messages
>> virtio: introduce virtqueue_error
>> virtio: use virtqueue_error for errors with queue context
>> virtio-9p: use virtqueue_error for errors with queue context
>> virtio-blk: use virtqueue_error for errors with queue context
>> virtio-net: use virtqueue_error for errors with queue context
>> virtio-scsi: use virtqueue_error for errors with queue context
>> virtio-crypto: use virtqueue_error for errors with queue context
>> checkpatch: add virtio_error and virtqueue_error to error funcs
>>
>> hw/9pfs/virtio-9p-device.c | 37 ++++++--------
>> hw/block/virtio-blk.c | 6 +--
>> hw/net/virtio-net.c | 24 ++++-----
>> hw/scsi/virtio-scsi.c | 2 +-
>> hw/virtio/virtio-crypto.c | 49 ++++++++++---------
>> hw/virtio/virtio.c | 119 +++++++++++++++++++++++++++++++--------------
>> include/hw/virtio/virtio.h | 1 +
>> scripts/checkpatch.pl | 4 +-
>> 8 files changed, 143 insertions(+), 99 deletions(-)
>
> Looks good. QEMU is currently in freeze for the 2.10 release. You may
> need to resend so Michael Tsirkin can merge it after the release, or if
> he maintainers a -next branch he could merge it right away.
Should I resend the series, Michael?
Thanks,
Ladi
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages
2017-09-14 5:59 ` Ladi Prosek
@ 2017-10-03 10:01 ` Ladi Prosek
0 siblings, 0 replies; 22+ messages in thread
From: Ladi Prosek @ 2017-10-03 10:01 UTC (permalink / raw)
To: Stefan Hajnoczi
Cc: qemu-devel, Fernando Casas Schössow, Michael S. Tsirkin,
Jason Wang, Cornelia Huck, Markus Armbruster, Greg Kurz,
arei.gonglei, aneesh.kumar
On Thu, Sep 14, 2017 at 7:59 AM, Ladi Prosek <lprosek@redhat.com> wrote:
> On Fri, Jul 21, 2017 at 5:21 PM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
>> On Mon, Jul 17, 2017 at 10:11:43AM +0200, Ladi Prosek wrote:
>>> Output like "Virtqueue size exceeded" is not much useful in identifying the
>>> culprit. This series beefs up virtio_error to print the virtio device name
>>> and id, and introduces virtqueue_error which additionally includes the index
>>> of the virtqueue where the error occured.
>>>
>>> Patches 1 to 3 lay the groundwork, patches 4 to 8 convert virtio devices to
>>> use virtqueue_error instead of virtio_error. Patch 9 adds virtio_error and
>>> virtqueue_error to the list of error funcs in checkpatch.pl.
>>>
>>> v1->v2:
>>> * Modified virtio_error and added virtqueue_error (Stefan)
>>> * Now also printing device id (Stefan)
>>> * Went over all virtio_error call sites and converted them to virtqueue_error
>>> as appropriate; added virtio device maintainers to cc
>>>
>>> v2->v3:
>>> * Removed patch 1 (Stefan, Markus)
>>> * Split patch 3 into 2 (adds virtqueue_error) and 3 (makes virtio.c call it)
>>> (Cornelia)
>>> * Added patch 9 to modify $qemu_error_funcs in checkpatch.pl (Greg)
>>> * s/includes queue index/includes the queue index/ in patch 3-9 commit
>>> messages (Cornelia)
>>> * Fixed virtio_get_device_id to return empty string instead of NULL if the
>>> device doesn't have an id (Stefan)
>>> * Simplified the change in virtio-crypto.c to use vcrypto->ctrl_vq instead
>>> of propagating the vq pointer in function arguments (Cornelia, Gonglei)
>>>
>>> Ladi Prosek (9):
>>> virtio: enhance virtio_error messages
>>> virtio: introduce virtqueue_error
>>> virtio: use virtqueue_error for errors with queue context
>>> virtio-9p: use virtqueue_error for errors with queue context
>>> virtio-blk: use virtqueue_error for errors with queue context
>>> virtio-net: use virtqueue_error for errors with queue context
>>> virtio-scsi: use virtqueue_error for errors with queue context
>>> virtio-crypto: use virtqueue_error for errors with queue context
>>> checkpatch: add virtio_error and virtqueue_error to error funcs
>>>
>>> hw/9pfs/virtio-9p-device.c | 37 ++++++--------
>>> hw/block/virtio-blk.c | 6 +--
>>> hw/net/virtio-net.c | 24 ++++-----
>>> hw/scsi/virtio-scsi.c | 2 +-
>>> hw/virtio/virtio-crypto.c | 49 ++++++++++---------
>>> hw/virtio/virtio.c | 119 +++++++++++++++++++++++++++++++--------------
>>> include/hw/virtio/virtio.h | 1 +
>>> scripts/checkpatch.pl | 4 +-
>>> 8 files changed, 143 insertions(+), 99 deletions(-)
>>
>> Looks good. QEMU is currently in freeze for the 2.10 release. You may
>> need to resend so Michael Tsirkin can merge it after the release, or if
>> he maintainers a -next branch he could merge it right away.
>
> Should I resend the series, Michael?
Ping. The series applies cleanly on current master.
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2017-10-03 10:02 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-17 8:11 [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 1/9] " Ladi Prosek
2017-07-17 11:51 ` Cornelia Huck
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 2/9] virtio: introduce virtqueue_error Ladi Prosek
2017-07-17 11:52 ` Cornelia Huck
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 3/9] virtio: use virtqueue_error for errors with queue context Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 4/9] virtio-9p: " Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 5/9] virtio-blk: " Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 6/9] virtio-net: " Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 7/9] virtio-scsi: " Ladi Prosek
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 8/9] virtio-crypto: " Ladi Prosek
2017-07-17 8:36 ` Gonglei (Arei)
2017-07-17 11:59 ` Cornelia Huck
2017-07-21 15:20 ` Stefan Hajnoczi
2017-07-17 8:11 ` [Qemu-devel] [PATCH v3 9/9] checkpatch: add virtio_error and virtqueue_error to error funcs Ladi Prosek
2017-07-17 12:01 ` Cornelia Huck
2017-07-18 16:06 ` Markus Armbruster
2017-07-21 15:17 ` Stefan Hajnoczi
2017-07-24 9:36 ` Greg Kurz
2017-07-21 15:21 ` [Qemu-devel] [PATCH v3 0/9] virtio: enhance virtio_error messages Stefan Hajnoczi
2017-09-14 5:59 ` Ladi Prosek
2017-10-03 10:01 ` Ladi Prosek
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).