* [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
@ 2016-09-21 13:13 Greg Kurz
2016-09-21 13:14 ` [Qemu-devel] [PATCH 1/7] virtio-9p: handle handle_9p_output() error Greg Kurz
` (8 more replies)
0 siblings, 9 replies; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 13:13 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Michael S. Tsirkin, Jason Wang, Greg Kurz, Max Reitz,
Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck, Paolo Bonzini
This series is a follow up to Stefan's work to eradicate most calls to
exit() we currently have in the virtio code.
It addresses all exit() call sites in the blk, net and scsi device code,
where the error is about a missing or malformed in/out header sent by
the guest. They are converted to use virtio_error() and stop any processing,
instead of exiting.
The remaining call sites are related to a host misconfiguration or a
migration stream issue.
The 9P code currently calls assert() instead of exit(), but it also about
malformed or missing headers, so it gets converted the same way.
Next work will be to check all assert() call sites in the device code, in
case some of them actually refer to a bug in the guest, and should be
converted to use virtio_error() as well.
---
Greg Kurz (7):
virtio-9p: handle handle_9p_output() error
virtio-blk: handle virtio_blk_handle_request() errors
virtio-net: handle virtio_net_handle_ctrl() error
virtio-net: handle virtio_net_receive() errors
virtio-net: handle virtio_net_flush_tx() errors
virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error()
virtio-scsi: handle virtio_scsi_set_config() error
hw/9pfs/virtio-9p-device.c | 14 ++++++++++--
hw/block/virtio-blk.c | 27 +++++++++++++++--------
hw/net/virtio-net.c | 51 +++++++++++++++++++++++++-------------------
hw/scsi/virtio-scsi.c | 21 ++++++++++--------
4 files changed, 70 insertions(+), 43 deletions(-)
--
Greg
^ permalink raw reply [flat|nested] 34+ messages in thread
* [Qemu-devel] [PATCH 1/7] virtio-9p: handle handle_9p_output() error
2016-09-21 13:13 [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination Greg Kurz
@ 2016-09-21 13:14 ` Greg Kurz
2016-09-21 14:16 ` Cornelia Huck
2016-09-21 13:14 ` [Qemu-devel] [PATCH 2/7] virtio-blk: handle virtio_blk_handle_request() errors Greg Kurz
` (7 subsequent siblings)
8 siblings, 1 reply; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 13:14 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Michael S. Tsirkin, Jason Wang, Greg Kurz, Max Reitz,
Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck, Paolo Bonzini
A broken guest may send a request with only non-empty out buffers
or only non-empty in buffers, virtqueue_pop() will then return a
VirtQueueElement with out_num == 0 or in_num == 0 respectively.
All 9P requests are expected to start with the following 7-byte header:
uint32_t size_le;
uint8_t id;
uint16_t tag_le;
If iov_to_buf() fails to return these 7 bytes, then something is wrong in
the guest.
In both cases, it is wrong to crash QEMU, since the root cause lies in the
guest. Let's switch the device to the broken state instead.
Signed-off-by: Greg Kurz <groug@kaod.org>
---
hw/9pfs/virtio-9p-device.c | 14 ++++++++++++--
1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c
index 009b43f6d045..0f09bef13392 100644
--- a/hw/9pfs/virtio-9p-device.c
+++ b/hw/9pfs/virtio-9p-device.c
@@ -56,13 +56,23 @@ static void handle_9p_output(VirtIODevice *vdev, VirtQueue *vq)
break;
}
- BUG_ON(elem->out_num == 0 || elem->in_num == 0);
+ if (elem->out_num == 0 || elem->in_num == 0) {
+ virtio_error(vdev,
+ "The guest sent a VirtFS request without headers");
+ pdu_free(pdu);
+ return;
+ }
QEMU_BUILD_BUG_ON(sizeof out != 7);
v->elems[pdu->idx] = elem;
len = iov_to_buf(elem->out_sg, elem->out_num, 0,
&out, sizeof out);
- BUG_ON(len != sizeof out);
+ if (len != sizeof out) {
+ virtio_error(vdev, "The guest sent a malformed VirtFS request: "
+ "header size is %zd, should be 7", len);
+ pdu_free(pdu);
+ return;
+ }
pdu->size = le32_to_cpu(out.size_le);
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Qemu-devel] [PATCH 2/7] virtio-blk: handle virtio_blk_handle_request() errors
2016-09-21 13:13 [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination Greg Kurz
2016-09-21 13:14 ` [Qemu-devel] [PATCH 1/7] virtio-9p: handle handle_9p_output() error Greg Kurz
@ 2016-09-21 13:14 ` Greg Kurz
2016-09-21 14:28 ` Cornelia Huck
2016-09-21 13:14 ` [Qemu-devel] [PATCH 3/7] virtio-net: handle virtio_net_handle_ctrl() error Greg Kurz
` (6 subsequent siblings)
8 siblings, 1 reply; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 13:14 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Michael S. Tsirkin, Jason Wang, Greg Kurz, Max Reitz,
Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck, Paolo Bonzini
All these errors are caused by a buggy guest: let's switch the device to
the broken state instead of terminating QEMU.
Signed-off-by: Greg Kurz <groug@kaod.org>
---
hw/block/virtio-blk.c | 27 +++++++++++++++++----------
1 file changed, 17 insertions(+), 10 deletions(-)
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index 3a6112fbf4c4..1285d196a40f 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -468,30 +468,32 @@ static bool virtio_blk_sect_range_ok(VirtIOBlock *dev,
return true;
}
-void virtio_blk_handle_request(VirtIOBlockReq *req, MultiReqBuffer *mrb)
+int virtio_blk_handle_request(VirtIOBlockReq *req, MultiReqBuffer *mrb)
{
uint32_t type;
struct iovec *in_iov = req->elem.in_sg;
struct iovec *iov = req->elem.out_sg;
unsigned in_num = req->elem.in_num;
unsigned out_num = req->elem.out_num;
+ VirtIOBlock *s = req->dev;
+ VirtIODevice *vdev = VIRTIO_DEVICE(s);
if (req->elem.out_num < 1 || req->elem.in_num < 1) {
- error_report("virtio-blk missing headers");
- exit(1);
+ virtio_error(vdev, "virtio-blk missing headers");
+ return -1;
}
if (unlikely(iov_to_buf(iov, out_num, 0, &req->out,
sizeof(req->out)) != sizeof(req->out))) {
- error_report("virtio-blk request outhdr too short");
- exit(1);
+ virtio_error(vdev, "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)) {
- error_report("virtio-blk request inhdr too short");
- exit(1);
+ virtio_error(vdev, "virtio-blk request inhdr too short");
+ return -1;
}
/* We always touch the last byte, so just see how big in_iov is. */
@@ -529,7 +531,7 @@ void virtio_blk_handle_request(VirtIOBlockReq *req, MultiReqBuffer *mrb)
block_acct_invalid(blk_get_stats(req->dev->blk),
is_write ? BLOCK_ACCT_WRITE : BLOCK_ACCT_READ);
virtio_blk_free_request(req);
- return;
+ return 0;
}
block_acct_start(blk_get_stats(req->dev->blk),
@@ -576,6 +578,7 @@ void virtio_blk_handle_request(VirtIOBlockReq *req, MultiReqBuffer *mrb)
virtio_blk_req_complete(req, VIRTIO_BLK_S_UNSUPP);
virtio_blk_free_request(req);
}
+ return 0;
}
void virtio_blk_handle_vq(VirtIOBlock *s, VirtQueue *vq)
@@ -586,7 +589,9 @@ void virtio_blk_handle_vq(VirtIOBlock *s, VirtQueue *vq)
blk_io_plug(s->blk);
while ((req = virtio_blk_get_request(s, vq))) {
- virtio_blk_handle_request(req, &mrb);
+ if (virtio_blk_handle_request(req, &mrb)) {
+ return;
+ }
}
if (mrb.num_reqs) {
@@ -625,7 +630,9 @@ static void virtio_blk_dma_restart_bh(void *opaque)
while (req) {
VirtIOBlockReq *next = req->next;
- virtio_blk_handle_request(req, &mrb);
+ if (virtio_blk_handle_request(req, &mrb)) {
+ return;
+ }
req = next;
}
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Qemu-devel] [PATCH 3/7] virtio-net: handle virtio_net_handle_ctrl() error
2016-09-21 13:13 [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination Greg Kurz
2016-09-21 13:14 ` [Qemu-devel] [PATCH 1/7] virtio-9p: handle handle_9p_output() error Greg Kurz
2016-09-21 13:14 ` [Qemu-devel] [PATCH 2/7] virtio-blk: handle virtio_blk_handle_request() errors Greg Kurz
@ 2016-09-21 13:14 ` Greg Kurz
2016-09-21 14:30 ` Cornelia Huck
2016-09-21 13:14 ` [Qemu-devel] [PATCH 4/7] virtio-net: handle virtio_net_receive() errors Greg Kurz
` (5 subsequent siblings)
8 siblings, 1 reply; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 13:14 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Michael S. Tsirkin, Jason Wang, Greg Kurz, Max Reitz,
Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck, Paolo Bonzini
This error is caused by a buggy guest: let's switch the device to the
broken state instead of terminating QEMU.
Signed-off-by: Greg Kurz <groug@kaod.org>
---
hw/net/virtio-net.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 01f1351554aa..68a448acd81b 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -892,8 +892,8 @@ 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)) {
- error_report("virtio-net ctrl missing headers");
- exit(1);
+ virtio_error(vdev, "virtio-net ctrl missing headers");
+ return;
}
iov_cnt = elem->out_num;
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Qemu-devel] [PATCH 4/7] virtio-net: handle virtio_net_receive() errors
2016-09-21 13:13 [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination Greg Kurz
` (2 preceding siblings ...)
2016-09-21 13:14 ` [Qemu-devel] [PATCH 3/7] virtio-net: handle virtio_net_handle_ctrl() error Greg Kurz
@ 2016-09-21 13:14 ` Greg Kurz
2016-09-21 14:38 ` Cornelia Huck
2016-09-21 13:14 ` [Qemu-devel] [PATCH 5/7] virtio-net: handle virtio_net_flush_tx() errors Greg Kurz
` (4 subsequent siblings)
8 siblings, 1 reply; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 13:14 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Michael S. Tsirkin, Jason Wang, Greg Kurz, Max Reitz,
Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck, Paolo Bonzini
All these errors are caused by a buggy guest: let's switch the device to
the broken state instead of terminating QEMU.
Signed-off-by: Greg Kurz <groug@kaod.org>
---
hw/net/virtio-net.c | 25 +++++++++++++------------
1 file changed, 13 insertions(+), 12 deletions(-)
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 68a448acd81b..8f59402306eb 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -1122,21 +1122,22 @@ static ssize_t virtio_net_receive(NetClientState *nc, const uint8_t *buf, size_t
elem = virtqueue_pop(q->rx_vq, sizeof(VirtQueueElement));
if (!elem) {
- if (i == 0)
- return -1;
- error_report("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);
- exit(1);
+ 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);
+ }
+ return -1;
}
if (elem->in_num < 1) {
- error_report("virtio-net receive queue contains no in buffers");
- exit(1);
+ virtio_error(vdev,
+ "virtio-net receive queue contains no in buffers");
+ return -1;
}
sg = elem->in_sg;
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Qemu-devel] [PATCH 5/7] virtio-net: handle virtio_net_flush_tx() errors
2016-09-21 13:13 [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination Greg Kurz
` (3 preceding siblings ...)
2016-09-21 13:14 ` [Qemu-devel] [PATCH 4/7] virtio-net: handle virtio_net_receive() errors Greg Kurz
@ 2016-09-21 13:14 ` Greg Kurz
2016-09-21 13:14 ` [Qemu-devel] [PATCH 6/7] virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error() Greg Kurz
` (3 subsequent siblings)
8 siblings, 0 replies; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 13:14 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Michael S. Tsirkin, Jason Wang, Greg Kurz, Max Reitz,
Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck, Paolo Bonzini
All these errors are caused by a buggy guest: let's switch the device to
the broken state instead of terminating QEMU.
If this happens, virtio_net_flush_tx() also returns -EINVAL, so that all
callers can stop processing the buggy request immediatly.
Signed-off-by: Greg Kurz <groug@kaod.org>
---
hw/net/virtio-net.c | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
index 8f59402306eb..958282838f57 100644
--- a/hw/net/virtio-net.c
+++ b/hw/net/virtio-net.c
@@ -1239,15 +1239,15 @@ static int32_t virtio_net_flush_tx(VirtIONetQueue *q)
out_num = elem->out_num;
out_sg = elem->out_sg;
if (out_num < 1) {
- error_report("virtio-net header not in first element");
- exit(1);
+ virtio_error(vdev, "virtio-net header not in first element");
+ return -EINVAL;
}
if (n->has_vnet_hdr) {
if (iov_to_buf(out_sg, out_num, 0, &mhdr, n->guest_hdr_len) <
n->guest_hdr_len) {
- error_report("virtio-net header incorrect");
- exit(1);
+ virtio_error(vdev, "virtio-net header incorrect");
+ return -EINVAL;
}
if (n->needs_vnet_hdr_swap) {
virtio_net_hdr_swap(vdev, (void *) &mhdr);
@@ -1315,7 +1315,9 @@ static void virtio_net_handle_tx_timer(VirtIODevice *vdev, VirtQueue *vq)
virtio_queue_set_notification(vq, 1);
timer_del(q->tx_timer);
q->tx_waiting = 0;
- virtio_net_flush_tx(q);
+ if (virtio_net_flush_tx(q) == -EINVAL) {
+ return;
+ }
} else {
timer_mod(q->tx_timer,
qemu_clock_get_ns(QEMU_CLOCK_VIRTUAL) + n->tx_timeout);
@@ -1386,8 +1388,9 @@ static void virtio_net_tx_bh(void *opaque)
}
ret = virtio_net_flush_tx(q);
- if (ret == -EBUSY) {
- return; /* Notification re-enable handled by tx_complete */
+ if (ret == -EBUSY || ret == -EINVAL) {
+ return; /* Notification re-enable handled by tx_complete or device
+ * broken */
}
/* If we flush a full burst of packets, assume there are
@@ -1402,7 +1405,10 @@ static void virtio_net_tx_bh(void *opaque)
* anything that may have come in while we weren't looking. If
* we find something, assume the guest is still active and reschedule */
virtio_queue_set_notification(q->tx_vq, 1);
- if (virtio_net_flush_tx(q) > 0) {
+ ret = virtio_net_flush_tx(q);
+ if (ret == -EINVAL) {
+ return;
+ } else if (ret > 0) {
virtio_queue_set_notification(q->tx_vq, 0);
qemu_bh_schedule(q->tx_bh);
q->tx_waiting = 1;
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Qemu-devel] [PATCH 6/7] virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error()
2016-09-21 13:13 [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination Greg Kurz
` (4 preceding siblings ...)
2016-09-21 13:14 ` [Qemu-devel] [PATCH 5/7] virtio-net: handle virtio_net_flush_tx() errors Greg Kurz
@ 2016-09-21 13:14 ` Greg Kurz
2016-09-21 13:14 ` [Qemu-devel] [PATCH 7/7] virtio-scsi: handle virtio_scsi_set_config() error Greg Kurz
` (2 subsequent siblings)
8 siblings, 0 replies; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 13:14 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Michael S. Tsirkin, Jason Wang, Greg Kurz, Max Reitz,
Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck, Paolo Bonzini
All these errors are caused by a buggy guest: let's switch the device to
the broken state and stop processing the request, instead of terminating
QEMU.
Signed-off-by: Greg Kurz <groug@kaod.org>
---
hw/scsi/virtio-scsi.c | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
index e596b6474131..d475d5e40d91 100644
--- a/hw/scsi/virtio-scsi.c
+++ b/hw/scsi/virtio-scsi.c
@@ -81,10 +81,9 @@ static void virtio_scsi_complete_req(VirtIOSCSIReq *req)
virtio_scsi_free_req(req);
}
-static void virtio_scsi_bad_req(void)
+static void virtio_scsi_bad_req(VirtIOSCSIReq *req)
{
- error_report("wrong size for virtio-scsi headers");
- exit(1);
+ virtio_error(req->vdev, "wrong size for virtio-scsi headers");
}
static size_t qemu_sgl_concat(VirtIOSCSIReq *req, struct iovec *iov,
@@ -387,7 +386,7 @@ static void virtio_scsi_handle_ctrl_req(VirtIOSCSI *s, VirtIOSCSIReq *req)
if (iov_to_buf(req->elem.out_sg, req->elem.out_num, 0,
&type, sizeof(type)) < sizeof(type)) {
- virtio_scsi_bad_req();
+ virtio_scsi_bad_req(req);
return;
}
@@ -395,7 +394,8 @@ static void virtio_scsi_handle_ctrl_req(VirtIOSCSI *s, VirtIOSCSIReq *req)
if (type == VIRTIO_SCSI_T_TMF) {
if (virtio_scsi_parse_req(req, sizeof(VirtIOSCSICtrlTMFReq),
sizeof(VirtIOSCSICtrlTMFResp)) < 0) {
- virtio_scsi_bad_req();
+ virtio_scsi_bad_req(req);
+ return;
} else {
r = virtio_scsi_do_tmf(s, req);
}
@@ -404,7 +404,8 @@ static void virtio_scsi_handle_ctrl_req(VirtIOSCSI *s, VirtIOSCSIReq *req)
type == VIRTIO_SCSI_T_AN_SUBSCRIBE) {
if (virtio_scsi_parse_req(req, sizeof(VirtIOSCSICtrlANReq),
sizeof(VirtIOSCSICtrlANResp)) < 0) {
- virtio_scsi_bad_req();
+ virtio_scsi_bad_req(req);
+ return;
} else {
req->resp.an.event_actual = 0;
req->resp.an.response = VIRTIO_SCSI_S_OK;
@@ -708,7 +709,8 @@ void virtio_scsi_push_event(VirtIOSCSI *s, SCSIDevice *dev,
}
if (virtio_scsi_parse_req(req, 0, sizeof(VirtIOSCSIEvent))) {
- virtio_scsi_bad_req();
+ virtio_scsi_bad_req(req);
+ goto out;
}
evt = &req->resp.event;
^ permalink raw reply related [flat|nested] 34+ messages in thread
* [Qemu-devel] [PATCH 7/7] virtio-scsi: handle virtio_scsi_set_config() error
2016-09-21 13:13 [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination Greg Kurz
` (5 preceding siblings ...)
2016-09-21 13:14 ` [Qemu-devel] [PATCH 6/7] virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error() Greg Kurz
@ 2016-09-21 13:14 ` Greg Kurz
2016-09-21 13:35 ` [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination no-reply
2016-09-22 1:19 ` Gonglei
8 siblings, 0 replies; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 13:14 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, Michael S. Tsirkin, Jason Wang, Greg Kurz, Max Reitz,
Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck, Paolo Bonzini
This error is caused by a buggy guest: let's switch the device to the
broken state instead of terminating QEMU.
Signed-off-by: Greg Kurz <groug@kaod.org>
---
hw/scsi/virtio-scsi.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
index d475d5e40d91..592b6fd72359 100644
--- a/hw/scsi/virtio-scsi.c
+++ b/hw/scsi/virtio-scsi.c
@@ -628,8 +628,9 @@ static void virtio_scsi_set_config(VirtIODevice *vdev,
if ((uint32_t) virtio_ldl_p(vdev, &scsiconf->sense_size) >= 65536 ||
(uint32_t) virtio_ldl_p(vdev, &scsiconf->cdb_size) >= 256) {
- error_report("bad data written to virtio-scsi configuration space");
- exit(1);
+ virtio_error(vdev,
+ "bad data written to virtio-scsi configuration space");
+ return;
}
vs->sense_size = virtio_ldl_p(vdev, &scsiconf->sense_size);
^ permalink raw reply related [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-21 13:13 [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination Greg Kurz
` (6 preceding siblings ...)
2016-09-21 13:14 ` [Qemu-devel] [PATCH 7/7] virtio-scsi: handle virtio_scsi_set_config() error Greg Kurz
@ 2016-09-21 13:35 ` no-reply
2016-09-21 13:44 ` Greg Kurz
2016-09-22 1:19 ` Gonglei
8 siblings, 1 reply; 34+ messages in thread
From: no-reply @ 2016-09-21 13:35 UTC (permalink / raw)
To: groug
Cc: famz, qemu-devel, kwolf, mst, jasowang, mreitz, aneesh.kumar,
stefanha, cornelia.huck, pbonzini
Hi,
Your series failed automatic build test. Please find the testing commands and
their output below. If you have docker installed, you can probably reproduce it
locally.
Type: series
Message-id: 147446363181.4880.18104448248886932114.stgit@bahia
Subject: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
=== TEST SCRIPT BEGIN ===
#!/bin/bash
set -e
git submodule update --init dtc
make J=8 docker-test-quick@centos6
make J=8 docker-test-mingw@fedora
=== TEST SCRIPT END ===
Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
4a3a53c virtio-scsi: handle virtio_scsi_set_config() error
7adf176 virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error()
91e13db virtio-net: handle virtio_net_flush_tx() errors
540249a virtio-net: handle virtio_net_receive() errors
6a9bfcf virtio-net: handle virtio_net_handle_ctrl() error
65c4f5e virtio-blk: handle virtio_blk_handle_request() errors
538cc03 virtio-9p: handle handle_9p_output() error
=== OUTPUT BEGIN ===
Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
Cloning into 'dtc'...
Submodule path 'dtc': checked out '65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf'
BUILD centos6
ARCHIVE qemu.tgz
ARCHIVE dtc.tgz
COPY RUNNER
RUN test-quick in centos6
No C++ compiler available; disabling C++ specific optional code
Install prefix /tmp/qemu-test/src/tests/docker/install
BIOS directory /tmp/qemu-test/src/tests/docker/install/share/qemu
binary directory /tmp/qemu-test/src/tests/docker/install/bin
library directory /tmp/qemu-test/src/tests/docker/install/lib
module directory /tmp/qemu-test/src/tests/docker/install/lib/qemu
libexec directory /tmp/qemu-test/src/tests/docker/install/libexec
include directory /tmp/qemu-test/src/tests/docker/install/include
config directory /tmp/qemu-test/src/tests/docker/install/etc
local state directory /tmp/qemu-test/src/tests/docker/install/var
Manual directory /tmp/qemu-test/src/tests/docker/install/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path /tmp/qemu-test/src
C compiler cc
Host C compiler cc
C++ compiler
Objective-C compiler cc
ARFLAGS rv
CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -g
QEMU_CFLAGS -I/usr/include/pixman-1 -fPIE -DPIE -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wmissing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all
LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g
make make
install install
python python -B
smbd /usr/sbin/smbd
module support no
host CPU x86_64
host big endian no
target list x86_64-softmmu aarch64-softmmu
tcg debug enabled no
gprof enabled no
sparse enabled no
strip binaries yes
profiler no
static build no
pixman system
SDL support yes (1.2.14)
GTK support no
GTK GL support no
VTE support no
TLS priority NORMAL
GNUTLS support no
GNUTLS rnd no
libgcrypt no
libgcrypt kdf no
nettle no
nettle kdf no
libtasn1 no
curses support no
virgl support no
curl support no
mingw32 support no
Audio drivers oss
Block whitelist (rw)
Block whitelist (ro)
VirtFS support no
VNC support yes
VNC SASL support no
VNC JPEG support no
VNC PNG support no
xen support no
brlapi support no
bluez support no
Documentation no
PIE yes
vde support no
netmap support no
Linux AIO support no
ATTR/XATTR support yes
Install blobs yes
KVM support yes
RDMA support no
TCG interpreter no
fdt support yes
preadv support yes
fdatasync yes
madvise yes
posix_madvise yes
uuid support no
libcap-ng support no
vhost-net support yes
vhost-scsi support yes
vhost-vsock support yes
Trace backends log
spice support no
rbd support no
xfsctl support no
smartcard support no
libusb no
usb net redir no
OpenGL support no
OpenGL dmabufs no
libiscsi support no
libnfs support no
build guest agent yes
QGA VSS support no
QGA w32 disk info no
QGA MSI support no
seccomp support no
coroutine backend ucontext
coroutine pool yes
GlusterFS support no
Archipelago support no
gcov gcov
gcov enabled no
TPM support yes
libssh2 support no
TPM passthrough yes
QOM debugging yes
vhdx no
lzo support no
snappy support no
bzip2 support no
NUMA host support no
tcmalloc support no
jemalloc support no
avx2 optimization no
replication support yes
GEN x86_64-softmmu/config-devices.mak.tmp
GEN aarch64-softmmu/config-devices.mak.tmp
GEN config-host.h
GEN qemu-options.def
GEN qmp-commands.h
GEN qapi-types.h
GEN qapi-visit.h
GEN qapi-event.h
GEN x86_64-softmmu/config-devices.mak
GEN aarch64-softmmu/config-devices.mak
GEN qmp-introspect.h
GEN tests/test-qapi-types.h
GEN tests/test-qapi-visit.h
GEN tests/test-qmp-commands.h
GEN tests/test-qapi-event.h
GEN tests/test-qmp-introspect.h
GEN config-all-devices.mak
GEN trace/generated-tracers.h
GEN trace/generated-events.h
GEN trace/generated-tcg-tracers.h
GEN trace/generated-helpers-wrappers.h
GEN trace/generated-helpers.h
CC tests/qemu-iotests/socket_scm_helper.o
GEN qga/qapi-generated/qga-qapi-types.h
GEN qga/qapi-generated/qga-qapi-visit.h
GEN qga/qapi-generated/qga-qmp-commands.h
GEN qga/qapi-generated/qga-qapi-types.c
GEN qga/qapi-generated/qga-qapi-visit.c
GEN qga/qapi-generated/qga-qmp-marshal.c
GEN qmp-introspect.c
GEN qapi-types.c
GEN qapi-visit.c
GEN qapi-event.c
CC qapi/qapi-visit-core.o
CC qapi/qapi-dealloc-visitor.o
CC qapi/qmp-input-visitor.o
CC qapi/qmp-output-visitor.o
CC qapi/qmp-registry.o
CC qapi/qmp-dispatch.o
CC qapi/string-input-visitor.o
CC qapi/string-output-visitor.o
CC qapi/opts-visitor.o
CC qapi/qapi-clone-visitor.o
CC qapi/qmp-event.o
CC qapi/qapi-util.o
CC qobject/qnull.o
CC qobject/qint.o
CC qobject/qstring.o
CC qobject/qdict.o
CC qobject/qlist.o
CC qobject/qfloat.o
CC qobject/qbool.o
CC qobject/qjson.o
CC qobject/qobject.o
CC qobject/json-lexer.o
CC qobject/json-streamer.o
CC qobject/json-parser.o
GEN trace/generated-events.c
CC trace/control.o
CC trace/qmp.o
CC util/osdep.o
CC util/cutils.o
CC util/unicode.o
CC util/qemu-timer-common.o
CC util/bufferiszero.o
CC util/compatfd.o
CC util/event_notifier-posix.o
CC util/mmap-alloc.o
CC util/oslib-posix.o
CC util/qemu-openpty.o
CC util/qemu-thread-posix.o
CC util/memfd.o
CC util/envlist.o
CC util/path.o
CC util/module.o
CC util/bitmap.o
CC util/bitops.o
CC util/hbitmap.o
CC util/acl.o
CC util/fifo8.o
CC util/error.o
CC util/qemu-error.o
CC util/id.o
CC util/iov.o
CC util/qemu-config.o
CC util/uri.o
CC util/qemu-sockets.o
CC util/notify.o
CC util/qemu-option.o
CC util/qemu-progress.o
CC util/hexdump.o
CC util/crc32c.o
CC util/throttle.o
CC util/getauxval.o
CC util/readline.o
CC util/rfifolock.o
CC util/rcu.o
CC util/qemu-coroutine.o
CC util/qemu-coroutine-lock.o
CC util/qemu-coroutine-io.o
CC util/qemu-coroutine-sleep.o
CC util/coroutine-ucontext.o
CC util/timed-average.o
CC util/buffer.o
CC util/base64.o
CC util/log.o
CC util/qdist.o
CC util/qht.o
/tmp/qemu-test/src/util/qht.c: In function ‘qht_reset_size’:
/tmp/qemu-test/src/util/qht.c:413: warning: ‘new’ may be used uninitialized in this function
CC util/range.o
CC crypto/pbkdf-stub.o
CC stubs/arch-query-cpu-def.o
CC stubs/arch-query-cpu-model-expansion.o
CC stubs/arch-query-cpu-model-comparison.o
CC stubs/arch-query-cpu-model-baseline.o
CC stubs/bdrv-next-monitor-owned.o
CC stubs/blk-commit-all.o
CC stubs/blockdev-close-all-bdrv-states.o
CC stubs/clock-warp.o
CC stubs/cpu-get-clock.o
CC stubs/cpu-get-icount.o
CC stubs/dump.o
CC stubs/fdset-add-fd.o
CC stubs/fdset-get-fd.o
CC stubs/fdset-find-fd.o
CC stubs/fdset-remove-fd.o
CC stubs/gdbstub.o
CC stubs/get-fd.o
CC stubs/get-next-serial.o
CC stubs/get-vm-name.o
CC stubs/iothread-lock.o
CC stubs/is-daemonized.o
CC stubs/machine-init-done.o
CC stubs/migr-blocker.o
CC stubs/mon-is-qmp.o
CC stubs/mon-printf.o
CC stubs/monitor-init.o
CC stubs/notify-event.o
CC stubs/qtest.o
CC stubs/replay.o
CC stubs/reset.o
CC stubs/replay-user.o
CC stubs/runstate-check.o
CC stubs/set-fd-handler.o
CC stubs/slirp.o
CC stubs/sysbus.o
CC stubs/trace-control.o
CC stubs/uuid.o
CC stubs/vm-stop.o
CC stubs/vmstate.o
CC stubs/cpus.o
CC stubs/kvm.o
CC stubs/qmp_pc_dimm_device_list.o
CC stubs/target-monitor-defs.o
CC stubs/target-get-monitor-def.o
CC stubs/vhost.o
CC stubs/iohandler.o
CC stubs/smbios_type_38.o
CC stubs/pc_madt_cpu_entry.o
CC stubs/ipmi.o
CC contrib/ivshmem-client/ivshmem-client.o
CC contrib/ivshmem-client/main.o
CC contrib/ivshmem-server/ivshmem-server.o
CC contrib/ivshmem-server/main.o
CC qemu-nbd.o
CC async.o
CC thread-pool.o
CC block.o
CC blockjob.o
CC main-loop.o
CC iohandler.o
CC qemu-timer.o
CC aio-posix.o
CC qemu-io-cmds.o
CC replication.o
CC block/raw_bsd.o
CC block/qcow.o
CC block/vdi.o
CC block/vmdk.o
CC block/cloop.o
CC block/bochs.o
CC block/vpc.o
CC block/vvfat.o
CC block/qcow2.o
CC block/qcow2-refcount.o
CC block/qcow2-cluster.o
CC block/qcow2-snapshot.o
CC block/qcow2-cache.o
CC block/qed.o
CC block/qed-gencb.o
CC block/qed-l2-cache.o
CC block/qed-table.o
CC block/qed-cluster.o
CC block/qed-check.o
CC block/quorum.o
CC block/parallels.o
CC block/blkdebug.o
CC block/blkverify.o
CC block/blkreplay.o
CC block/block-backend.o
CC block/snapshot.o
CC block/qapi.o
CC block/raw-posix.o
CC block/null.o
CC block/mirror.o
CC block/commit.o
CC block/io.o
CC block/throttle-groups.o
CC block/nbd.o
CC block/nbd-client.o
CC block/sheepdog.o
CC block/accounting.o
CC block/dirty-bitmap.o
CC block/write-threshold.o
CC block/backup.o
CC block/replication.o
CC block/crypto.o
CC nbd/server.o
CC nbd/client.o
CC nbd/common.o
CC block/dmg.o
CC crypto/init.o
CC crypto/hash.o
CC crypto/hash-glib.o
CC crypto/aes.o
CC crypto/desrfb.o
CC crypto/cipher.o
CC crypto/tlscreds.o
CC crypto/tlscredsanon.o
CC crypto/tlscredsx509.o
CC crypto/tlssession.o
CC crypto/secret.o
CC crypto/random-platform.o
CC crypto/pbkdf.o
CC crypto/ivgen.o
CC crypto/ivgen-essiv.o
CC crypto/ivgen-plain.o
CC crypto/ivgen-plain64.o
CC crypto/afsplit.o
CC crypto/xts.o
CC crypto/block.o
CC crypto/block-qcow.o
CC crypto/block-luks.o
CC io/channel.o
CC io/channel-buffer.o
CC io/channel-command.o
CC io/channel-file.o
CC io/channel-socket.o
CC io/channel-tls.o
CC io/channel-watch.o
CC io/channel-websock.o
CC io/channel-util.o
CC io/task.o
CC qom/object.o
CC qom/container.o
CC qom/qom-qobject.o
CC qom/object_interfaces.o
GEN qemu-img-cmds.h
CC qemu-io.o
CC qemu-bridge-helper.o
CC blockdev.o
CC blockdev-nbd.o
CC iothread.o
CC qdev-monitor.o
CC device-hotplug.o
CC os-posix.o
CC qemu-char.o
CC page_cache.o
CC accel.o
CC bt-host.o
CC bt-vhci.o
CC dma-helpers.o
CC vl.o
CC tpm.o
CC device_tree.o
GEN qmp-marshal.c
CC qmp.o
CC hmp.o
CC tcg-runtime.o
CC audio/audio.o
CC audio/noaudio.o
CC audio/wavaudio.o
CC audio/mixeng.o
CC audio/sdlaudio.o
CC audio/ossaudio.o
CC audio/wavcapture.o
CC backends/rng.o
CC backends/rng-egd.o
CC backends/rng-random.o
CC backends/msmouse.o
CC backends/testdev.o
CC backends/tpm.o
CC backends/hostmem.o
CC backends/hostmem-ram.o
CC backends/hostmem-file.o
CC block/stream.o
CC disas/arm.o
CC disas/i386.o
CC fsdev/qemu-fsdev-dummy.o
CC hw/acpi/core.o
CC fsdev/qemu-fsdev-opts.o
CC hw/acpi/piix4.o
CC hw/acpi/pcihp.o
CC hw/acpi/ich9.o
CC hw/acpi/tco.o
CC hw/acpi/cpu_hotplug.o
CC hw/acpi/memory_hotplug.o
CC hw/acpi/memory_hotplug_acpi_table.o
CC hw/acpi/cpu.o
CC hw/acpi/acpi_interface.o
CC hw/acpi/bios-linker-loader.o
CC hw/acpi/aml-build.o
CC hw/acpi/ipmi.o
CC hw/audio/sb16.o
CC hw/audio/es1370.o
CC hw/audio/ac97.o
CC hw/audio/fmopl.o
CC hw/audio/adlib.o
CC hw/audio/gus.o
CC hw/audio/gusemu_hal.o
CC hw/audio/gusemu_mixer.o
CC hw/audio/cs4231a.o
CC hw/audio/intel-hda.o
CC hw/audio/hda-codec.o
CC hw/audio/pcspk.o
CC hw/audio/wm8750.o
CC hw/audio/pl041.o
CC hw/audio/lm4549.o
CC hw/audio/marvell_88w8618.o
CC hw/block/block.o
CC hw/block/cdrom.o
CC hw/block/hd-geometry.o
CC hw/block/fdc.o
CC hw/block/m25p80.o
CC hw/block/nand.o
CC hw/block/pflash_cfi01.o
CC hw/block/pflash_cfi02.o
CC hw/block/onenand.o
CC hw/block/ecc.o
CC hw/block/nvme.o
CC hw/bt/core.o
CC hw/bt/l2cap.o
CC hw/bt/sdp.o
CC hw/bt/hci.o
CC hw/bt/hid.o
CC hw/bt/hci-csr.o
CC hw/char/ipoctal232.o
CC hw/char/parallel.o
CC hw/char/pl011.o
CC hw/char/serial.o
CC hw/char/serial-isa.o
CC hw/char/serial-pci.o
CC hw/char/virtio-console.o
CC hw/char/cadence_uart.o
CC hw/char/debugcon.o
CC hw/char/imx_serial.o
CC hw/core/qdev.o
CC hw/core/qdev-properties.o
CC hw/core/bus.o
CC hw/core/fw-path-provider.o
CC hw/core/irq.o
CC hw/core/hotplug.o
CC hw/core/ptimer.o
CC hw/core/sysbus.o
CC hw/core/machine.o
CC hw/core/null-machine.o
CC hw/core/loader.o
CC hw/core/qdev-properties-system.o
CC hw/core/register.o
CC hw/core/platform-bus.o
CC hw/display/ads7846.o
CC hw/display/cirrus_vga.o
CC hw/display/pl110.o
CC hw/display/ssd0303.o
CC hw/display/vga-pci.o
CC hw/display/ssd0323.o
CC hw/display/vga-isa.o
CC hw/display/vmware_vga.o
CC hw/display/blizzard.o
CC hw/display/exynos4210_fimd.o
CC hw/display/framebuffer.o
CC hw/display/tc6393xb.o
CC hw/dma/pl080.o
CC hw/dma/pl330.o
CC hw/dma/i8257.o
CC hw/dma/xlnx-zynq-devcfg.o
CC hw/gpio/max7310.o
CC hw/gpio/pl061.o
CC hw/gpio/zaurus.o
CC hw/gpio/gpio_key.o
CC hw/i2c/core.o
CC hw/i2c/smbus.o
CC hw/i2c/smbus_eeprom.o
CC hw/i2c/i2c-ddc.o
CC hw/i2c/versatile_i2c.o
CC hw/i2c/smbus_ich9.o
CC hw/i2c/pm_smbus.o
CC hw/i2c/bitbang_i2c.o
CC hw/i2c/exynos4210_i2c.o
CC hw/i2c/imx_i2c.o
CC hw/i2c/aspeed_i2c.o
CC hw/ide/core.o
CC hw/ide/atapi.o
CC hw/ide/qdev.o
CC hw/ide/pci.o
CC hw/ide/isa.o
CC hw/ide/piix.o
CC hw/ide/microdrive.o
CC hw/ide/ahci.o
CC hw/ide/ich.o
CC hw/input/hid.o
CC hw/input/lm832x.o
CC hw/input/pckbd.o
CC hw/input/pl050.o
CC hw/input/ps2.o
CC hw/input/stellaris_input.o
CC hw/input/tsc2005.o
CC hw/input/vmmouse.o
CC hw/input/virtio-input.o
CC hw/input/virtio-input-hid.o
CC hw/input/virtio-input-host.o
CC hw/intc/i8259_common.o
CC hw/intc/i8259.o
CC hw/intc/pl190.o
CC hw/intc/imx_avic.o
CC hw/intc/realview_gic.o
CC hw/intc/ioapic_common.o
CC hw/intc/arm_gic_common.o
CC hw/intc/arm_gic.o
CC hw/intc/arm_gicv2m.o
CC hw/intc/arm_gicv3_common.o
CC hw/intc/arm_gicv3.o
CC hw/intc/arm_gicv3_dist.o
CC hw/intc/arm_gicv3_redist.o
CC hw/ipack/ipack.o
CC hw/ipack/tpci200.o
CC hw/ipmi/ipmi.o
CC hw/ipmi/ipmi_bmc_sim.o
CC hw/ipmi/ipmi_bmc_extern.o
CC hw/ipmi/isa_ipmi_kcs.o
CC hw/ipmi/isa_ipmi_bt.o
CC hw/isa/isa-bus.o
CC hw/isa/apm.o
CC hw/mem/pc-dimm.o
CC hw/mem/nvdimm.o
CC hw/misc/applesmc.o
CC hw/misc/max111x.o
CC hw/misc/tmp105.o
CC hw/misc/debugexit.o
CC hw/misc/sga.o
CC hw/misc/pc-testdev.o
CC hw/misc/pci-testdev.o
CC hw/misc/arm_l2x0.o
CC hw/misc/arm_integrator_debug.o
CC hw/misc/a9scu.o
CC hw/misc/arm11scu.o
CC hw/net/ne2000.o
CC hw/net/eepro100.o
CC hw/net/pcnet-pci.o
CC hw/net/pcnet.o
CC hw/net/e1000.o
CC hw/net/e1000x_common.o
CC hw/net/net_tx_pkt.o
CC hw/net/net_rx_pkt.o
CC hw/net/e1000e.o
CC hw/net/e1000e_core.o
CC hw/net/rtl8139.o
CC hw/net/vmxnet3.o
CC hw/net/smc91c111.o
CC hw/net/lan9118.o
CC hw/net/ne2000-isa.o
CC hw/net/xgmac.o
CC hw/net/allwinner_emac.o
CC hw/net/imx_fec.o
CC hw/net/cadence_gem.o
CC hw/net/stellaris_enet.o
CC hw/net/rocker/rocker.o
CC hw/net/rocker/rocker_fp.o
CC hw/net/rocker/rocker_desc.o
CC hw/net/rocker/rocker_world.o
CC hw/net/rocker/rocker_of_dpa.o
CC hw/nvram/eeprom93xx.o
CC hw/nvram/fw_cfg.o
CC hw/pci-bridge/pci_bridge_dev.o
CC hw/pci-bridge/pci_expander_bridge.o
CC hw/pci-bridge/xio3130_upstream.o
CC hw/pci-bridge/xio3130_downstream.o
CC hw/pci-bridge/ioh3420.o
CC hw/pci-bridge/i82801b11.o
CC hw/pci-host/pam.o
CC hw/pci-host/versatile.o
CC hw/pci-host/piix.o
CC hw/pci-host/q35.o
CC hw/pci-host/gpex.o
CC hw/pci/pci.o
CC hw/pci/pci_bridge.o
CC hw/pci/msix.o
CC hw/pci/msi.o
CC hw/pci/shpc.o
CC hw/pci/slotid_cap.o
CC hw/pci/pci_host.o
CC hw/pci/pcie_host.o
CC hw/pci/pcie.o
CC hw/pci/pcie_aer.o
CC hw/pci/pcie_port.o
CC hw/pci/pci-stub.o
CC hw/pcmcia/pcmcia.o
CC hw/scsi/scsi-disk.o
CC hw/scsi/scsi-generic.o
CC hw/scsi/scsi-bus.o
CC hw/scsi/lsi53c895a.o
CC hw/scsi/mptsas.o
/tmp/qemu-test/src/hw/nvram/fw_cfg.c: In function ‘fw_cfg_dma_transfer’:
/tmp/qemu-test/src/hw/nvram/fw_cfg.c:330: warning: ‘read’ may be used uninitialized in this function
CC hw/scsi/mptconfig.o
CC hw/scsi/mptendian.o
CC hw/scsi/megasas.o
CC hw/scsi/vmw_pvscsi.o
CC hw/scsi/esp.o
CC hw/scsi/esp-pci.o
CC hw/sd/pl181.o
CC hw/sd/ssi-sd.o
CC hw/sd/sd.o
CC hw/sd/core.o
CC hw/sd/sdhci.o
CC hw/smbios/smbios.o
CC hw/smbios/smbios_type_38.o
CC hw/ssi/pl022.o
CC hw/ssi/ssi.o
CC hw/ssi/xilinx_spips.o
CC hw/ssi/aspeed_smc.o
CC hw/timer/arm_timer.o
CC hw/timer/arm_mptimer.o
CC hw/timer/a9gtimer.o
CC hw/timer/cadence_ttc.o
CC hw/timer/ds1338.o
CC hw/timer/hpet.o
CC hw/timer/i8254_common.o
CC hw/timer/i8254.o
CC hw/timer/pl031.o
CC hw/timer/twl92230.o
CC hw/timer/imx_epit.o
CC hw/timer/imx_gpt.o
CC hw/timer/stm32f2xx_timer.o
CC hw/timer/aspeed_timer.o
CC hw/tpm/tpm_tis.o
CC hw/tpm/tpm_passthrough.o
CC hw/tpm/tpm_util.o
CC hw/usb/core.o
CC hw/usb/combined-packet.o
CC hw/usb/bus.o
CC hw/usb/libhw.o
CC hw/usb/desc.o
CC hw/usb/desc-msos.o
CC hw/usb/hcd-uhci.o
CC hw/usb/hcd-ohci.o
CC hw/usb/hcd-ehci.o
CC hw/usb/hcd-ehci-pci.o
CC hw/usb/hcd-ehci-sysbus.o
CC hw/usb/hcd-xhci.o
CC hw/usb/hcd-musb.o
CC hw/usb/dev-hub.o
CC hw/usb/dev-hid.o
CC hw/usb/dev-wacom.o
CC hw/usb/dev-storage.o
CC hw/usb/dev-uas.o
CC hw/usb/dev-audio.o
CC hw/usb/dev-serial.o
CC hw/usb/dev-network.o
CC hw/usb/dev-bluetooth.o
CC hw/usb/dev-smartcard-reader.o
CC hw/usb/dev-mtp.o
CC hw/usb/host-stub.o
CC hw/virtio/virtio-rng.o
CC hw/virtio/virtio-pci.o
CC hw/virtio/virtio-bus.o
CC hw/virtio/virtio-mmio.o
CC hw/watchdog/watchdog.o
CC hw/watchdog/wdt_i6300esb.o
CC hw/watchdog/wdt_ib700.o
CC migration/migration.o
CC migration/socket.o
CC migration/fd.o
CC migration/exec.o
CC migration/tls.o
CC migration/vmstate.o
CC migration/qemu-file.o
CC migration/qemu-file-channel.o
CC migration/xbzrle.o
CC migration/postcopy-ram.o
CC migration/qjson.o
CC migration/block.o
CC net/net.o
CC net/queue.o
CC net/checksum.o
CC net/util.o
CC net/hub.o
CC net/socket.o
CC net/dump.o
CC net/eth.o
CC net/l2tpv3.o
CC net/tap.o
CC net/vhost-user.o
CC net/tap-linux.o
CC net/slirp.o
CC net/filter.o
CC net/filter-buffer.o
CC net/filter-mirror.o
CC qom/cpu.o
CC replay/replay.o
CC replay/replay-internal.o
CC replay/replay-events.o
CC replay/replay-time.o
CC replay/replay-input.o
CC replay/replay-char.o
CC slirp/cksum.o
CC slirp/if.o
CC slirp/ip6_icmp.o
CC slirp/ip_icmp.o
CC slirp/ip6_input.o
CC slirp/ip6_output.o
CC slirp/ip_input.o
CC slirp/ip_output.o
CC slirp/dnssearch.o
CC slirp/dhcpv6.o
CC slirp/slirp.o
CC slirp/mbuf.o
CC slirp/misc.o
CC slirp/sbuf.o
CC slirp/socket.o
CC slirp/tcp_input.o
CC slirp/tcp_output.o
CC slirp/tcp_subr.o
CC slirp/tcp_timer.o
CC slirp/udp.o
CC slirp/udp6.o
CC slirp/bootp.o
/tmp/qemu-test/src/slirp/tcp_input.c: In function ‘tcp_input’:
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_p’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_len’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_tos’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_id’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_off’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_ttl’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_sum’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_src.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_dst.s_addr’ may be used uninitialized in this function
/tmp/qemu-test/src/slirp/tcp_input.c:220: warning: ‘save_ip6.ip_nh’ may be used uninitialized in this function
CC slirp/tftp.o
CC slirp/arp_table.o
CC slirp/ndp_table.o
CC ui/keymaps.o
CC ui/console.o
CC ui/cursor.o
CC ui/qemu-pixman.o
CC ui/input.o
CC ui/input-keymap.o
CC ui/input-legacy.o
CC ui/input-linux.o
CC ui/sdl.o
CC ui/sdl_zoom.o
/tmp/qemu-test/src/replay/replay-internal.c: In function ‘replay_put_array’:
/tmp/qemu-test/src/replay/replay-internal.c:68: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
CC ui/x_keymap.o
CC ui/vnc.o
CC ui/vnc-enc-zlib.o
CC ui/vnc-enc-hextile.o
CC ui/vnc-enc-tight.o
CC ui/vnc-palette.o
CC ui/vnc-enc-zrle.o
CC ui/vnc-auth-vencrypt.o
CC ui/vnc-ws.o
CC ui/vnc-jobs.o
LINK tests/qemu-iotests/socket_scm_helper
CC qga/commands.o
CC qga/guest-agent-command-state.o
CC qga/main.o
CC qga/commands-posix.o
CC qga/channel-posix.o
CC qga/qapi-generated/qga-qapi-types.o
CC qga/qapi-generated/qga-qapi-visit.o
CC qga/qapi-generated/qga-qmp-marshal.o
CC qmp-introspect.o
CC qapi-types.o
CC qapi-visit.o
CC qapi-event.o
AR libqemustub.a
CC qemu-img.o
CC qmp-marshal.o
CC trace/generated-events.o
AS optionrom/multiboot.o
AS optionrom/linuxboot.o
CC optionrom/linuxboot_dma.o
AS optionrom/kvmvapic.o
cc: unrecognized option '-no-integrated-as'
cc: unrecognized option '-no-integrated-as'
Building optionrom/multiboot.img
Building optionrom/linuxboot_dma.img
Building optionrom/linuxboot.img
Building optionrom/kvmvapic.img
Building optionrom/multiboot.raw
Building optionrom/linuxboot.raw
Building optionrom/linuxboot_dma.raw
AR libqemuutil.a
Building optionrom/kvmvapic.raw
Signing optionrom/linuxboot.bin
Signing optionrom/multiboot.bin
Signing optionrom/linuxboot_dma.bin
Signing optionrom/kvmvapic.bin
LINK qemu-ga
LINK ivshmem-client
LINK ivshmem-server
LINK qemu-nbd
LINK qemu-img
LINK qemu-io
LINK qemu-bridge-helper
GEN x86_64-softmmu/hmp-commands.h
GEN x86_64-softmmu/hmp-commands-info.h
GEN x86_64-softmmu/config-target.h
CC x86_64-softmmu/exec.o
CC x86_64-softmmu/cpu-exec.o
CC x86_64-softmmu/translate-all.o
CC x86_64-softmmu/translate-common.o
CC x86_64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/cpu-exec-common.o
CC x86_64-softmmu/tcg/tcg.o
GEN aarch64-softmmu/hmp-commands.h
CC x86_64-softmmu/tcg/optimize.o
CC x86_64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/fpu/softfloat.o
CC x86_64-softmmu/disas.o
GEN aarch64-softmmu/hmp-commands-info.h
CC x86_64-softmmu/arch_init.o
CC x86_64-softmmu/cpus.o
CC x86_64-softmmu/monitor.o
GEN aarch64-softmmu/config-target.h
CC x86_64-softmmu/gdbstub.o
CC aarch64-softmmu/exec.o
CC x86_64-softmmu/balloon.o
CC aarch64-softmmu/translate-all.o
CC aarch64-softmmu/cpu-exec.o
CC x86_64-softmmu/ioport.o
CC aarch64-softmmu/translate-common.o
CC x86_64-softmmu/numa.o
CC aarch64-softmmu/cpu-exec-common.o
CC x86_64-softmmu/qtest.o
CC aarch64-softmmu/tcg/tcg.o
CC x86_64-softmmu/bootdevice.o
CC aarch64-softmmu/tcg/tcg-op.o
CC x86_64-softmmu/kvm-all.o
CC x86_64-softmmu/memory.o
CC x86_64-softmmu/cputlb.o
CC x86_64-softmmu/memory_mapping.o
CC aarch64-softmmu/tcg/optimize.o
CC x86_64-softmmu/dump.o
CC aarch64-softmmu/tcg/tcg-common.o
CC x86_64-softmmu/migration/ram.o
CC aarch64-softmmu/fpu/softfloat.o
CC aarch64-softmmu/disas.o
CC x86_64-softmmu/migration/savevm.o
CC x86_64-softmmu/xen-common-stub.o
CC x86_64-softmmu/xen-hvm-stub.o
CC x86_64-softmmu/hw/acpi/nvdimm.o
GEN aarch64-softmmu/gdbstub-xml.c
CC x86_64-softmmu/hw/block/virtio-blk.o
CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
CC x86_64-softmmu/hw/char/virtio-serial-bus.o
CC x86_64-softmmu/hw/core/nmi.o
CC x86_64-softmmu/hw/cpu/core.o
CC x86_64-softmmu/hw/display/vga.o
CC aarch64-softmmu/kvm-stub.o
CC aarch64-softmmu/arch_init.o
CC x86_64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/cpus.o
CC x86_64-softmmu/hw/display/virtio-gpu-3d.o
CC x86_64-softmmu/hw/display/virtio-gpu-pci.o
CC aarch64-softmmu/monitor.o
CC x86_64-softmmu/hw/display/virtio-vga.o
CC x86_64-softmmu/hw/intc/apic.o
CC x86_64-softmmu/hw/intc/apic_common.o
CC aarch64-softmmu/gdbstub.o
CC aarch64-softmmu/balloon.o
CC x86_64-softmmu/hw/intc/ioapic.o
CC aarch64-softmmu/ioport.o
CC aarch64-softmmu/numa.o
CC aarch64-softmmu/qtest.o
CC aarch64-softmmu/bootdevice.o
CC x86_64-softmmu/hw/isa/lpc_ich9.o
CC aarch64-softmmu/memory.o
CC aarch64-softmmu/cputlb.o
CC x86_64-softmmu/hw/misc/vmport.o
CC x86_64-softmmu/hw/misc/ivshmem.o
CC x86_64-softmmu/hw/misc/pvpanic.o
CC x86_64-softmmu/hw/misc/edu.o
CC x86_64-softmmu/hw/misc/hyperv_testdev.o
CC x86_64-softmmu/hw/net/virtio-net.o
CC x86_64-softmmu/hw/net/vhost_net.o
CC x86_64-softmmu/hw/scsi/virtio-scsi.o
CC aarch64-softmmu/memory_mapping.o
CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
CC x86_64-softmmu/hw/scsi/vhost-scsi.o
CC aarch64-softmmu/dump.o
CC aarch64-softmmu/migration/ram.o
CC x86_64-softmmu/hw/timer/mc146818rtc.o
CC x86_64-softmmu/hw/vfio/common.o
CC aarch64-softmmu/migration/savevm.o
CC aarch64-softmmu/xen-common-stub.o
CC x86_64-softmmu/hw/vfio/pci.o
/tmp/qemu-test/src/hw/block/virtio-blk.c:471: error: conflicting types for ‘virtio_blk_handle_request’
/tmp/qemu-test/src/include/hw/virtio/virtio-blk.h:87: note: previous declaration of ‘virtio_blk_handle_request’ was here
/tmp/qemu-test/src/hw/block/virtio-blk.c: In function ‘virtio_blk_handle_request’:
/tmp/qemu-test/src/hw/block/virtio-blk.c:482: warning: implicit declaration of function ‘virtio_error’
/tmp/qemu-test/src/hw/block/virtio-blk.c:482: warning: nested extern declaration of ‘virtio_error’
make[1]: *** [hw/block/virtio-blk.o] Error 1
make[1]: *** Waiting for unfinished jobs....
CC aarch64-softmmu/xen-hvm-stub.o
CC aarch64-softmmu/hw/block/virtio-blk.o
CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o
CC aarch64-softmmu/hw/char/exynos4210_uart.o
CC aarch64-softmmu/hw/char/omap_uart.o
CC aarch64-softmmu/hw/char/digic-uart.o
CC aarch64-softmmu/hw/char/stm32f2xx_usart.o
CC aarch64-softmmu/hw/char/bcm2835_aux.o
CC aarch64-softmmu/hw/char/virtio-serial-bus.o
CC aarch64-softmmu/hw/core/nmi.o
CC aarch64-softmmu/hw/cpu/arm11mpcore.o
CC aarch64-softmmu/hw/cpu/realview_mpcore.o
CC aarch64-softmmu/hw/cpu/a9mpcore.o
CC aarch64-softmmu/hw/cpu/a15mpcore.o
CC aarch64-softmmu/hw/cpu/core.o
CC aarch64-softmmu/hw/display/omap_dss.o
CC aarch64-softmmu/hw/display/omap_lcdc.o
CC aarch64-softmmu/hw/display/pxa2xx_lcd.o
CC aarch64-softmmu/hw/display/bcm2835_fb.o
CC aarch64-softmmu/hw/display/vga.o
CC aarch64-softmmu/hw/display/virtio-gpu.o
CC aarch64-softmmu/hw/display/virtio-gpu-3d.o
CC aarch64-softmmu/hw/display/virtio-gpu-pci.o
/tmp/qemu-test/src/hw/scsi/virtio-scsi.c: In function ‘virtio_scsi_bad_req’:
/tmp/qemu-test/src/hw/scsi/virtio-scsi.c:86: warning: implicit declaration of function ‘virtio_error’
/tmp/qemu-test/src/hw/scsi/virtio-scsi.c:86: warning: nested extern declaration of ‘virtio_error’
/tmp/qemu-test/src/hw/scsi/virtio-scsi.c:86: error: ‘VirtIOSCSIReq’ has no member named ‘vdev’
/tmp/qemu-test/src/hw/scsi/virtio-scsi.c: In function ‘virtio_scsi_handle_cmd_req_prepare’:
/tmp/qemu-test/src/hw/scsi/virtio-scsi.c:537: error: too few arguments to function ‘virtio_scsi_bad_req’
make[1]: *** [hw/scsi/virtio-scsi.o] Error 1
CC aarch64-softmmu/hw/display/dpcd.o
CC aarch64-softmmu/hw/display/xlnx_dp.o
CC aarch64-softmmu/hw/dma/xlnx_dpdma.o
CC aarch64-softmmu/hw/dma/omap_dma.o
CC aarch64-softmmu/hw/dma/soc_dma.o
CC aarch64-softmmu/hw/dma/pxa2xx_dma.o
CC aarch64-softmmu/hw/dma/bcm2835_dma.o
CC aarch64-softmmu/hw/gpio/omap_gpio.o
CC aarch64-softmmu/hw/gpio/imx_gpio.o
CC aarch64-softmmu/hw/i2c/omap_i2c.o
CC aarch64-softmmu/hw/input/pxa2xx_keypad.o
CC aarch64-softmmu/hw/input/tsc210x.o
CC aarch64-softmmu/hw/intc/armv7m_nvic.o
CC aarch64-softmmu/hw/intc/exynos4210_gic.o
CC aarch64-softmmu/hw/intc/exynos4210_combiner.o
CC aarch64-softmmu/hw/intc/omap_intc.o
CC aarch64-softmmu/hw/intc/bcm2835_ic.o
CC aarch64-softmmu/hw/intc/bcm2836_control.o
CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o
CC aarch64-softmmu/hw/intc/aspeed_vic.o
CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
CC aarch64-softmmu/hw/misc/ivshmem.o
CC aarch64-softmmu/hw/misc/arm_sysctl.o
CC aarch64-softmmu/hw/misc/cbus.o
CC aarch64-softmmu/hw/misc/exynos4210_pmu.o
CC aarch64-softmmu/hw/misc/imx_ccm.o
CC aarch64-softmmu/hw/misc/imx31_ccm.o
CC aarch64-softmmu/hw/misc/imx25_ccm.o
CC aarch64-softmmu/hw/misc/imx6_ccm.o
CC aarch64-softmmu/hw/misc/imx6_src.o
CC aarch64-softmmu/hw/misc/mst_fpga.o
CC aarch64-softmmu/hw/misc/omap_clk.o
CC aarch64-softmmu/hw/misc/omap_gpmc.o
CC aarch64-softmmu/hw/misc/omap_l4.o
CC aarch64-softmmu/hw/misc/omap_sdrc.o
CC aarch64-softmmu/hw/misc/omap_tap.o
/tmp/qemu-test/src/hw/block/virtio-blk.c:471: error: conflicting types for ‘virtio_blk_handle_request’
/tmp/qemu-test/src/include/hw/virtio/virtio-blk.h:87: note: previous declaration of ‘virtio_blk_handle_request’ was here
/tmp/qemu-test/src/hw/block/virtio-blk.c: In function ‘virtio_blk_handle_request’:
/tmp/qemu-test/src/hw/block/virtio-blk.c:482: warning: implicit declaration of function ‘virtio_error’
/tmp/qemu-test/src/hw/block/virtio-blk.c:482: warning: nested extern declaration of ‘virtio_error’
CC aarch64-softmmu/hw/misc/bcm2835_mbox.o
make[1]: *** [hw/block/virtio-blk.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [subdir-aarch64-softmmu] Error 2
make: *** Waiting for unfinished jobs....
/tmp/qemu-test/src/hw/net/virtio-net.c: In function ‘virtio_net_handle_ctrl’:
/tmp/qemu-test/src/hw/net/virtio-net.c:895: warning: implicit declaration of function ‘virtio_error’
/tmp/qemu-test/src/hw/net/virtio-net.c:895: warning: nested extern declaration of ‘virtio_error’
make: *** [subdir-x86_64-softmmu] Error 2
tests/docker/Makefile.include:107: recipe for target 'docker-run-test-quick@centos6' failed
make: *** [docker-run-test-quick@centos6] Error 1
=== OUTPUT END ===
Test command exited with code: 2
---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-21 13:35 ` [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination no-reply
@ 2016-09-21 13:44 ` Greg Kurz
2016-09-21 14:01 ` Fam Zheng
2016-09-21 17:35 ` Michael S. Tsirkin
0 siblings, 2 replies; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 13:44 UTC (permalink / raw)
To: no-reply
Cc: famz, qemu-devel, kwolf, mst, jasowang, mreitz, aneesh.kumar,
stefanha, cornelia.huck, pbonzini
On Wed, 21 Sep 2016 06:35:04 -0700 (PDT)
no-reply@patchew.org wrote:
> Hi,
>
> Your series failed automatic build test. Please find the testing commands and
> their output below. If you have docker installed, you can probably reproduce it
> locally.
>
Heh... of course patchew doesn't know about Stefan's series. :)
Is there an appropriate way to avoid complaints when sending a patchset that
isn't based on QEMU master ?
> Type: series
> Message-id: 147446363181.4880.18104448248886932114.stgit@bahia
> Subject: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
>
> === TEST SCRIPT BEGIN ===
> #!/bin/bash
> set -e
> git submodule update --init dtc
> make J=8 docker-test-quick@centos6
> make J=8 docker-test-mingw@fedora
> === TEST SCRIPT END ===
>
> Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
> Switched to a new branch 'test'
> 4a3a53c virtio-scsi: handle virtio_scsi_set_config() error
> 7adf176 virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error()
> 91e13db virtio-net: handle virtio_net_flush_tx() errors
> 540249a virtio-net: handle virtio_net_receive() errors
> 6a9bfcf virtio-net: handle virtio_net_handle_ctrl() error
> 65c4f5e virtio-blk: handle virtio_blk_handle_request() errors
> 538cc03 virtio-9p: handle handle_9p_output() error
>
> === OUTPUT BEGIN ===
> Submodule 'dtc' (git://git.qemu-project.org/dtc.git) registered for path 'dtc'
> Cloning into 'dtc'...
> Submodule path 'dtc': checked out '65cc4d2748a2c2e6f27f1cf39e07a5dbabd80ebf'
> BUILD centos6
> ARCHIVE qemu.tgz
> ARCHIVE dtc.tgz
> COPY RUNNER
> RUN test-quick in centos6
> No C++ compiler available; disabling C++ specific optional code
> Install prefix /tmp/qemu-test/src/tests/docker/install
> BIOS directory /tmp/qemu-test/src/tests/docker/install/share/qemu
> binary directory /tmp/qemu-test/src/tests/docker/install/bin
> library directory /tmp/qemu-test/src/tests/docker/install/lib
> module directory /tmp/qemu-test/src/tests/docker/install/lib/qemu
> libexec directory /tmp/qemu-test/src/tests/docker/install/libexec
> include directory /tmp/qemu-test/src/tests/docker/install/include
> config directory /tmp/qemu-test/src/tests/docker/install/etc
> local state directory /tmp/qemu-test/src/tests/docker/install/var
> Manual directory /tmp/qemu-test/src/tests/docker/install/share/man
> ELF interp prefix /usr/gnemul/qemu-%M
> Source path /tmp/qemu-test/src
> C compiler cc
> Host C compiler cc
> C++ compiler
> Objective-C compiler cc
> ARFLAGS rv
> CFLAGS -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -pthread -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -g
> QEMU_CFLAGS -I/usr/include/pixman-1 -fPIE -DPIE -m64 -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -Wstrict-prototypes -Wredundant-decls -Wall -Wundef -Wwrite-strings -Wmissing-prototypes -fno-strict-aliasing -fno-common -fwrapv -Wendif-labels -Wmissing-include-dirs -Wempty-body -Wnested-externs -Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers -Wold-style-declaration -Wold-style-definition -Wtype-limits -fstack-protector-all
> LDFLAGS -Wl,--warn-common -Wl,-z,relro -Wl,-z,now -pie -m64 -g
> make make
> install install
> python python -B
> smbd /usr/sbin/smbd
> module support no
> host CPU x86_64
> host big endian no
> target list x86_64-softmmu aarch64-softmmu
> tcg debug enabled no
> gprof enabled no
> sparse enabled no
> strip binaries yes
> profiler no
> static build no
> pixman system
> SDL support yes (1.2.14)
> GTK support no
> GTK GL support no
> VTE support no
> TLS priority NORMAL
> GNUTLS support no
> GNUTLS rnd no
> libgcrypt no
> libgcrypt kdf no
> nettle no
> nettle kdf no
> libtasn1 no
> curses support no
> virgl support no
> curl support no
> mingw32 support no
> Audio drivers oss
> Block whitelist (rw)
> Block whitelist (ro)
> VirtFS support no
> VNC support yes
> VNC SASL support no
> VNC JPEG support no
> VNC PNG support no
> xen support no
> brlapi support no
> bluez support no
> Documentation no
> PIE yes
> vde support no
> netmap support no
> Linux AIO support no
> ATTR/XATTR support yes
> Install blobs yes
> KVM support yes
> RDMA support no
> TCG interpreter no
> fdt support yes
> preadv support yes
> fdatasync yes
> madvise yes
> posix_madvise yes
> uuid support no
> libcap-ng support no
> vhost-net support yes
> vhost-scsi support yes
> vhost-vsock support yes
> Trace backends log
> spice support no
> rbd support no
> xfsctl support no
> smartcard support no
> libusb no
> usb net redir no
> OpenGL support no
> OpenGL dmabufs no
> libiscsi support no
> libnfs support no
> build guest agent yes
> QGA VSS support no
> QGA w32 disk info no
> QGA MSI support no
> seccomp support no
> coroutine backend ucontext
> coroutine pool yes
> GlusterFS support no
> Archipelago support no
> gcov gcov
> gcov enabled no
> TPM support yes
> libssh2 support no
> TPM passthrough yes
> QOM debugging yes
> vhdx no
> lzo support no
> snappy support no
> bzip2 support no
> NUMA host support no
> tcmalloc support no
> jemalloc support no
> avx2 optimization no
> replication support yes
> GEN x86_64-softmmu/config-devices.mak.tmp
> GEN aarch64-softmmu/config-devices.mak.tmp
> GEN config-host.h
> GEN qemu-options.def
> GEN qmp-commands.h
> GEN qapi-types.h
> GEN qapi-visit.h
> GEN qapi-event.h
> GEN x86_64-softmmu/config-devices.mak
> GEN aarch64-softmmu/config-devices.mak
> GEN qmp-introspect.h
> GEN tests/test-qapi-types.h
> GEN tests/test-qapi-visit.h
> GEN tests/test-qmp-commands.h
> GEN tests/test-qapi-event.h
> GEN tests/test-qmp-introspect.h
> GEN config-all-devices.mak
> GEN trace/generated-tracers.h
> GEN trace/generated-events.h
> GEN trace/generated-tcg-tracers.h
> GEN trace/generated-helpers-wrappers.h
> GEN trace/generated-helpers.h
> CC tests/qemu-iotests/socket_scm_helper.o
> GEN qga/qapi-generated/qga-qapi-types.h
> GEN qga/qapi-generated/qga-qapi-visit.h
> GEN qga/qapi-generated/qga-qmp-commands.h
> GEN qga/qapi-generated/qga-qapi-types.c
> GEN qga/qapi-generated/qga-qapi-visit.c
> GEN qga/qapi-generated/qga-qmp-marshal.c
> GEN qmp-introspect.c
> GEN qapi-types.c
> GEN qapi-visit.c
> GEN qapi-event.c
> CC qapi/qapi-visit-core.o
> CC qapi/qapi-dealloc-visitor.o
> CC qapi/qmp-input-visitor.o
> CC qapi/qmp-output-visitor.o
> CC qapi/qmp-registry.o
> CC qapi/qmp-dispatch.o
> CC qapi/string-input-visitor.o
> CC qapi/string-output-visitor.o
> CC qapi/opts-visitor.o
> CC qapi/qapi-clone-visitor.o
> CC qapi/qmp-event.o
> CC qapi/qapi-util.o
> CC qobject/qnull.o
> CC qobject/qint.o
> CC qobject/qstring.o
> CC qobject/qdict.o
> CC qobject/qlist.o
> CC qobject/qfloat.o
> CC qobject/qbool.o
> CC qobject/qjson.o
> CC qobject/qobject.o
> CC qobject/json-lexer.o
> CC qobject/json-streamer.o
> CC qobject/json-parser.o
> GEN trace/generated-events.c
> CC trace/control.o
> CC trace/qmp.o
> CC util/osdep.o
> CC util/cutils.o
> CC util/unicode.o
> CC util/qemu-timer-common.o
> CC util/bufferiszero.o
> CC util/compatfd.o
> CC util/event_notifier-posix.o
> CC util/mmap-alloc.o
> CC util/oslib-posix.o
> CC util/qemu-openpty.o
> CC util/qemu-thread-posix.o
> CC util/memfd.o
> CC util/envlist.o
> CC util/path.o
> CC util/module.o
> CC util/bitmap.o
> CC util/bitops.o
> CC util/hbitmap.o
> CC util/acl.o
> CC util/fifo8.o
> CC util/error.o
> CC util/qemu-error.o
> CC util/id.o
> CC util/iov.o
> CC util/qemu-config.o
> CC util/uri.o
> CC util/qemu-sockets.o
> CC util/notify.o
> CC util/qemu-option.o
> CC util/qemu-progress.o
> CC util/hexdump.o
> CC util/crc32c.o
> CC util/throttle.o
> CC util/getauxval.o
> CC util/readline.o
> CC util/rfifolock.o
> CC util/rcu.o
> CC util/qemu-coroutine.o
> CC util/qemu-coroutine-lock.o
> CC util/qemu-coroutine-io.o
> CC util/qemu-coroutine-sleep.o
> CC util/coroutine-ucontext.o
> CC util/timed-average.o
> CC util/buffer.o
> CC util/base64.o
> CC util/log.o
> CC util/qdist.o
> CC util/qht.o
> /tmp/qemu-test/src/util/qht.c: In function ‘qht_reset_size’:
> /tmp/qemu-test/src/util/qht.c:413: warning: ‘new’ may be used uninitialized in this function
> CC util/range.o
> CC crypto/pbkdf-stub.o
> CC stubs/arch-query-cpu-def.o
> CC stubs/arch-query-cpu-model-expansion.o
> CC stubs/arch-query-cpu-model-comparison.o
> CC stubs/arch-query-cpu-model-baseline.o
> CC stubs/bdrv-next-monitor-owned.o
> CC stubs/blk-commit-all.o
> CC stubs/blockdev-close-all-bdrv-states.o
> CC stubs/clock-warp.o
> CC stubs/cpu-get-clock.o
> CC stubs/cpu-get-icount.o
> CC stubs/dump.o
> CC stubs/fdset-add-fd.o
> CC stubs/fdset-get-fd.o
> CC stubs/fdset-find-fd.o
> CC stubs/fdset-remove-fd.o
> CC stubs/gdbstub.o
> CC stubs/get-fd.o
> CC stubs/get-next-serial.o
> CC stubs/get-vm-name.o
> CC stubs/iothread-lock.o
> CC stubs/is-daemonized.o
> CC stubs/machine-init-done.o
> CC stubs/migr-blocker.o
> CC stubs/mon-is-qmp.o
> CC stubs/mon-printf.o
> CC stubs/monitor-init.o
> CC stubs/notify-event.o
> CC stubs/qtest.o
> CC stubs/replay.o
> CC stubs/reset.o
> CC stubs/replay-user.o
> CC stubs/runstate-check.o
> CC stubs/set-fd-handler.o
> CC stubs/slirp.o
> CC stubs/sysbus.o
> CC stubs/trace-control.o
> CC stubs/uuid.o
> CC stubs/vm-stop.o
> CC stubs/vmstate.o
> CC stubs/cpus.o
> CC stubs/kvm.o
> CC stubs/qmp_pc_dimm_device_list.o
> CC stubs/target-monitor-defs.o
> CC stubs/target-get-monitor-def.o
> CC stubs/vhost.o
> CC stubs/iohandler.o
> CC stubs/smbios_type_38.o
> CC stubs/pc_madt_cpu_entry.o
> CC stubs/ipmi.o
> CC contrib/ivshmem-client/ivshmem-client.o
> CC contrib/ivshmem-client/main.o
> CC contrib/ivshmem-server/ivshmem-server.o
> CC contrib/ivshmem-server/main.o
> CC qemu-nbd.o
> CC async.o
> CC thread-pool.o
> CC block.o
> CC blockjob.o
> CC main-loop.o
> CC iohandler.o
> CC qemu-timer.o
> CC aio-posix.o
> CC qemu-io-cmds.o
> CC replication.o
> CC block/raw_bsd.o
> CC block/qcow.o
> CC block/vdi.o
> CC block/vmdk.o
> CC block/cloop.o
> CC block/bochs.o
> CC block/vpc.o
> CC block/vvfat.o
> CC block/qcow2.o
> CC block/qcow2-refcount.o
> CC block/qcow2-cluster.o
> CC block/qcow2-snapshot.o
> CC block/qcow2-cache.o
> CC block/qed.o
> CC block/qed-gencb.o
> CC block/qed-l2-cache.o
> CC block/qed-table.o
> CC block/qed-cluster.o
> CC block/qed-check.o
> CC block/quorum.o
> CC block/parallels.o
> CC block/blkdebug.o
> CC block/blkverify.o
> CC block/blkreplay.o
> CC block/block-backend.o
> CC block/snapshot.o
> CC block/qapi.o
> CC block/raw-posix.o
> CC block/null.o
> CC block/mirror.o
> CC block/commit.o
> CC block/io.o
> CC block/throttle-groups.o
> CC block/nbd.o
> CC block/nbd-client.o
> CC block/sheepdog.o
> CC block/accounting.o
> CC block/dirty-bitmap.o
> CC block/write-threshold.o
> CC block/backup.o
> CC block/replication.o
> CC block/crypto.o
> CC nbd/server.o
> CC nbd/client.o
> CC nbd/common.o
> CC block/dmg.o
> CC crypto/init.o
> CC crypto/hash.o
> CC crypto/hash-glib.o
> CC crypto/aes.o
> CC crypto/desrfb.o
> CC crypto/cipher.o
> CC crypto/tlscreds.o
> CC crypto/tlscredsanon.o
> CC crypto/tlscredsx509.o
> CC crypto/tlssession.o
> CC crypto/secret.o
> CC crypto/random-platform.o
> CC crypto/pbkdf.o
> CC crypto/ivgen.o
> CC crypto/ivgen-essiv.o
> CC crypto/ivgen-plain.o
> CC crypto/ivgen-plain64.o
> CC crypto/afsplit.o
> CC crypto/xts.o
> CC crypto/block.o
> CC crypto/block-qcow.o
> CC crypto/block-luks.o
> CC io/channel.o
> CC io/channel-buffer.o
> CC io/channel-command.o
> CC io/channel-file.o
> CC io/channel-socket.o
> CC io/channel-tls.o
> CC io/channel-watch.o
> CC io/channel-websock.o
> CC io/channel-util.o
> CC io/task.o
> CC qom/object.o
> CC qom/container.o
> CC qom/qom-qobject.o
> CC qom/object_interfaces.o
> GEN qemu-img-cmds.h
> CC qemu-io.o
> CC qemu-bridge-helper.o
> CC blockdev.o
> CC blockdev-nbd.o
> CC iothread.o
> CC qdev-monitor.o
> CC device-hotplug.o
> CC os-posix.o
> CC qemu-char.o
> CC page_cache.o
> CC accel.o
> CC bt-host.o
> CC bt-vhci.o
> CC dma-helpers.o
> CC vl.o
> CC tpm.o
> CC device_tree.o
> GEN qmp-marshal.c
> CC qmp.o
> CC hmp.o
> CC tcg-runtime.o
> CC audio/audio.o
> CC audio/noaudio.o
> CC audio/wavaudio.o
> CC audio/mixeng.o
> CC audio/sdlaudio.o
> CC audio/ossaudio.o
> CC audio/wavcapture.o
> CC backends/rng.o
> CC backends/rng-egd.o
> CC backends/rng-random.o
> CC backends/msmouse.o
> CC backends/testdev.o
> CC backends/tpm.o
> CC backends/hostmem.o
> CC backends/hostmem-ram.o
> CC backends/hostmem-file.o
> CC block/stream.o
> CC disas/arm.o
> CC disas/i386.o
> CC fsdev/qemu-fsdev-dummy.o
> CC hw/acpi/core.o
> CC fsdev/qemu-fsdev-opts.o
> CC hw/acpi/piix4.o
> CC hw/acpi/pcihp.o
> CC hw/acpi/ich9.o
> CC hw/acpi/tco.o
> CC hw/acpi/cpu_hotplug.o
> CC hw/acpi/memory_hotplug.o
> CC hw/acpi/memory_hotplug_acpi_table.o
> CC hw/acpi/cpu.o
> CC hw/acpi/acpi_interface.o
> CC hw/acpi/bios-linker-loader.o
> CC hw/acpi/aml-build.o
> CC hw/acpi/ipmi.o
> CC hw/audio/sb16.o
> CC hw/audio/es1370.o
> CC hw/audio/ac97.o
> CC hw/audio/fmopl.o
> CC hw/audio/adlib.o
> CC hw/audio/gus.o
> CC hw/audio/gusemu_hal.o
> CC hw/audio/gusemu_mixer.o
> CC hw/audio/cs4231a.o
> CC hw/audio/intel-hda.o
> CC hw/audio/hda-codec.o
> CC hw/audio/pcspk.o
> CC hw/audio/wm8750.o
> CC hw/audio/pl041.o
> CC hw/audio/lm4549.o
> CC hw/audio/marvell_88w8618.o
> CC hw/block/block.o
> CC hw/block/cdrom.o
> CC hw/block/hd-geometry.o
> CC hw/block/fdc.o
> CC hw/block/m25p80.o
> CC hw/block/nand.o
> CC hw/block/pflash_cfi01.o
> CC hw/block/pflash_cfi02.o
> CC hw/block/onenand.o
> CC hw/block/ecc.o
> CC hw/block/nvme.o
> CC hw/bt/core.o
> CC hw/bt/l2cap.o
> CC hw/bt/sdp.o
> CC hw/bt/hci.o
> CC hw/bt/hid.o
> CC hw/bt/hci-csr.o
> CC hw/char/ipoctal232.o
> CC hw/char/parallel.o
> CC hw/char/pl011.o
> CC hw/char/serial.o
> CC hw/char/serial-isa.o
> CC hw/char/serial-pci.o
> CC hw/char/virtio-console.o
> CC hw/char/cadence_uart.o
> CC hw/char/debugcon.o
> CC hw/char/imx_serial.o
> CC hw/core/qdev.o
> CC hw/core/qdev-properties.o
> CC hw/core/bus.o
> CC hw/core/fw-path-provider.o
> CC hw/core/irq.o
> CC hw/core/hotplug.o
> CC hw/core/ptimer.o
> CC hw/core/sysbus.o
> CC hw/core/machine.o
> CC hw/core/null-machine.o
> CC hw/core/loader.o
> CC hw/core/qdev-properties-system.o
> CC hw/core/register.o
> CC hw/core/platform-bus.o
> CC hw/display/ads7846.o
> CC hw/display/cirrus_vga.o
> CC hw/display/pl110.o
> CC hw/display/ssd0303.o
> CC hw/display/vga-pci.o
> CC hw/display/ssd0323.o
> CC hw/display/vga-isa.o
> CC hw/display/vmware_vga.o
> CC hw/display/blizzard.o
> CC hw/display/exynos4210_fimd.o
> CC hw/display/framebuffer.o
> CC hw/display/tc6393xb.o
> CC hw/dma/pl080.o
> CC hw/dma/pl330.o
> CC hw/dma/i8257.o
> CC hw/dma/xlnx-zynq-devcfg.o
> CC hw/gpio/max7310.o
> CC hw/gpio/pl061.o
> CC hw/gpio/zaurus.o
> CC hw/gpio/gpio_key.o
> CC hw/i2c/core.o
> CC hw/i2c/smbus.o
> CC hw/i2c/smbus_eeprom.o
> CC hw/i2c/i2c-ddc.o
> CC hw/i2c/versatile_i2c.o
> CC hw/i2c/smbus_ich9.o
> CC hw/i2c/pm_smbus.o
> CC hw/i2c/bitbang_i2c.o
> CC hw/i2c/exynos4210_i2c.o
> CC hw/i2c/imx_i2c.o
> CC hw/i2c/aspeed_i2c.o
> CC hw/ide/core.o
> CC hw/ide/atapi.o
> CC hw/ide/qdev.o
> CC hw/ide/pci.o
> CC hw/ide/isa.o
> CC hw/ide/piix.o
> CC hw/ide/microdrive.o
> CC hw/ide/ahci.o
> CC hw/ide/ich.o
> CC hw/input/hid.o
> CC hw/input/lm832x.o
> CC hw/input/pckbd.o
> CC hw/input/pl050.o
> CC hw/input/ps2.o
> CC hw/input/stellaris_input.o
> CC hw/input/tsc2005.o
> CC hw/input/vmmouse.o
> CC hw/input/virtio-input.o
> CC hw/input/virtio-input-hid.o
> CC hw/input/virtio-input-host.o
> CC hw/intc/i8259_common.o
> CC hw/intc/i8259.o
> CC hw/intc/pl190.o
> CC hw/intc/imx_avic.o
> CC hw/intc/realview_gic.o
> CC hw/intc/ioapic_common.o
> CC hw/intc/arm_gic_common.o
> CC hw/intc/arm_gic.o
> CC hw/intc/arm_gicv2m.o
> CC hw/intc/arm_gicv3_common.o
> CC hw/intc/arm_gicv3.o
> CC hw/intc/arm_gicv3_dist.o
> CC hw/intc/arm_gicv3_redist.o
> CC hw/ipack/ipack.o
> CC hw/ipack/tpci200.o
> CC hw/ipmi/ipmi.o
> CC hw/ipmi/ipmi_bmc_sim.o
> CC hw/ipmi/ipmi_bmc_extern.o
> CC hw/ipmi/isa_ipmi_kcs.o
> CC hw/ipmi/isa_ipmi_bt.o
> CC hw/isa/isa-bus.o
> CC hw/isa/apm.o
> CC hw/mem/pc-dimm.o
> CC hw/mem/nvdimm.o
> CC hw/misc/applesmc.o
> CC hw/misc/max111x.o
> CC hw/misc/tmp105.o
> CC hw/misc/debugexit.o
> CC hw/misc/sga.o
> CC hw/misc/pc-testdev.o
> CC hw/misc/pci-testdev.o
> CC hw/misc/arm_l2x0.o
> CC hw/misc/arm_integrator_debug.o
> CC hw/misc/a9scu.o
> CC hw/misc/arm11scu.o
> CC hw/net/ne2000.o
> CC hw/net/eepro100.o
> CC hw/net/pcnet-pci.o
> CC hw/net/pcnet.o
> CC hw/net/e1000.o
> CC hw/net/e1000x_common.o
> CC hw/net/net_tx_pkt.o
> CC hw/net/net_rx_pkt.o
> CC hw/net/e1000e.o
> CC hw/net/e1000e_core.o
> CC hw/net/rtl8139.o
> CC hw/net/vmxnet3.o
> CC hw/net/smc91c111.o
> CC hw/net/lan9118.o
> CC hw/net/ne2000-isa.o
> CC hw/net/xgmac.o
> CC hw/net/allwinner_emac.o
> CC hw/net/imx_fec.o
> CC hw/net/cadence_gem.o
> CC hw/net/stellaris_enet.o
> CC hw/net/rocker/rocker.o
> CC hw/net/rocker/rocker_fp.o
> CC hw/net/rocker/rocker_desc.o
> CC hw/net/rocker/rocker_world.o
> CC hw/net/rocker/rocker_of_dpa.o
> CC hw/nvram/eeprom93xx.o
> CC hw/nvram/fw_cfg.o
> CC hw/pci-bridge/pci_bridge_dev.o
> CC hw/pci-bridge/pci_expander_bridge.o
> CC hw/pci-bridge/xio3130_upstream.o
> CC hw/pci-bridge/xio3130_downstream.o
> CC hw/pci-bridge/ioh3420.o
> CC hw/pci-bridge/i82801b11.o
> CC hw/pci-host/pam.o
> CC hw/pci-host/versatile.o
> CC hw/pci-host/piix.o
> CC hw/pci-host/q35.o
> CC hw/pci-host/gpex.o
> CC hw/pci/pci.o
> CC hw/pci/pci_bridge.o
> CC hw/pci/msix.o
> CC hw/pci/msi.o
> CC hw/pci/shpc.o
> CC hw/pci/slotid_cap.o
> CC hw/pci/pci_host.o
> CC hw/pci/pcie_host.o
> CC hw/pci/pcie.o
> CC hw/pci/pcie_aer.o
> CC hw/pci/pcie_port.o
> CC hw/pci/pci-stub.o
> CC hw/pcmcia/pcmcia.o
> CC hw/scsi/scsi-disk.o
> CC hw/scsi/scsi-generic.o
> CC hw/scsi/scsi-bus.o
> CC hw/scsi/lsi53c895a.o
> CC hw/scsi/mptsas.o
> /tmp/qemu-test/src/hw/nvram/fw_cfg.c: In function ‘fw_cfg_dma_transfer’:
> /tmp/qemu-test/src/hw/nvram/fw_cfg.c:330: warning: ‘read’ may be used uninitialized in this function
> CC hw/scsi/mptconfig.o
> CC hw/scsi/mptendian.o
> CC hw/scsi/megasas.o
> CC hw/scsi/vmw_pvscsi.o
> CC hw/scsi/esp.o
> CC hw/scsi/esp-pci.o
> CC hw/sd/pl181.o
> CC hw/sd/ssi-sd.o
> CC hw/sd/sd.o
> CC hw/sd/core.o
> CC hw/sd/sdhci.o
> CC hw/smbios/smbios.o
> CC hw/smbios/smbios_type_38.o
> CC hw/ssi/pl022.o
> CC hw/ssi/ssi.o
> CC hw/ssi/xilinx_spips.o
> CC hw/ssi/aspeed_smc.o
> CC hw/timer/arm_timer.o
> CC hw/timer/arm_mptimer.o
> CC hw/timer/a9gtimer.o
> CC hw/timer/cadence_ttc.o
> CC hw/timer/ds1338.o
> CC hw/timer/hpet.o
> CC hw/timer/i8254_common.o
> CC hw/timer/i8254.o
> CC hw/timer/pl031.o
> CC hw/timer/twl92230.o
> CC hw/timer/imx_epit.o
> CC hw/timer/imx_gpt.o
> CC hw/timer/stm32f2xx_timer.o
> CC hw/timer/aspeed_timer.o
> CC hw/tpm/tpm_tis.o
> CC hw/tpm/tpm_passthrough.o
> CC hw/tpm/tpm_util.o
> CC hw/usb/core.o
> CC hw/usb/combined-packet.o
> CC hw/usb/bus.o
> CC hw/usb/libhw.o
> CC hw/usb/desc.o
> CC hw/usb/desc-msos.o
> CC hw/usb/hcd-uhci.o
> CC hw/usb/hcd-ohci.o
> CC hw/usb/hcd-ehci.o
> CC hw/usb/hcd-ehci-pci.o
> CC hw/usb/hcd-ehci-sysbus.o
> CC hw/usb/hcd-xhci.o
> CC hw/usb/hcd-musb.o
> CC hw/usb/dev-hub.o
> CC hw/usb/dev-hid.o
> CC hw/usb/dev-wacom.o
> CC hw/usb/dev-storage.o
> CC hw/usb/dev-uas.o
> CC hw/usb/dev-audio.o
> CC hw/usb/dev-serial.o
> CC hw/usb/dev-network.o
> CC hw/usb/dev-bluetooth.o
> CC hw/usb/dev-smartcard-reader.o
> CC hw/usb/dev-mtp.o
> CC hw/usb/host-stub.o
> CC hw/virtio/virtio-rng.o
> CC hw/virtio/virtio-pci.o
> CC hw/virtio/virtio-bus.o
> CC hw/virtio/virtio-mmio.o
> CC hw/watchdog/watchdog.o
> CC hw/watchdog/wdt_i6300esb.o
> CC hw/watchdog/wdt_ib700.o
> CC migration/migration.o
> CC migration/socket.o
> CC migration/fd.o
> CC migration/exec.o
> CC migration/tls.o
> CC migration/vmstate.o
> CC migration/qemu-file.o
> CC migration/qemu-file-channel.o
> CC migration/xbzrle.o
> CC migration/postcopy-ram.o
> CC migration/qjson.o
> CC migration/block.o
> CC net/net.o
> CC net/queue.o
> CC net/checksum.o
> CC net/util.o
> CC net/hub.o
> CC net/socket.o
> CC net/dump.o
> CC net/eth.o
> CC net/l2tpv3.o
> CC net/tap.o
> CC net/vhost-user.o
> CC net/tap-linux.o
> CC net/slirp.o
> CC net/filter.o
> CC net/filter-buffer.o
> CC net/filter-mirror.o
> CC qom/cpu.o
> CC replay/replay.o
> CC replay/replay-internal.o
> CC replay/replay-events.o
> CC replay/replay-time.o
> CC replay/replay-input.o
> CC replay/replay-char.o
> CC slirp/cksum.o
> CC slirp/if.o
> CC slirp/ip6_icmp.o
> CC slirp/ip_icmp.o
> CC slirp/ip6_input.o
> CC slirp/ip6_output.o
> CC slirp/ip_input.o
> CC slirp/ip_output.o
> CC slirp/dnssearch.o
> CC slirp/dhcpv6.o
> CC slirp/slirp.o
> CC slirp/mbuf.o
> CC slirp/misc.o
> CC slirp/sbuf.o
> CC slirp/socket.o
> CC slirp/tcp_input.o
> CC slirp/tcp_output.o
> CC slirp/tcp_subr.o
> CC slirp/tcp_timer.o
> CC slirp/udp.o
> CC slirp/udp6.o
> CC slirp/bootp.o
> /tmp/qemu-test/src/slirp/tcp_input.c: In function ‘tcp_input’:
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_p’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_len’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_tos’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_id’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_off’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_ttl’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_sum’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_src.s_addr’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:219: warning: ‘save_ip.ip_dst.s_addr’ may be used uninitialized in this function
> /tmp/qemu-test/src/slirp/tcp_input.c:220: warning: ‘save_ip6.ip_nh’ may be used uninitialized in this function
> CC slirp/tftp.o
> CC slirp/arp_table.o
> CC slirp/ndp_table.o
> CC ui/keymaps.o
> CC ui/console.o
> CC ui/cursor.o
> CC ui/qemu-pixman.o
> CC ui/input.o
> CC ui/input-keymap.o
> CC ui/input-legacy.o
> CC ui/input-linux.o
> CC ui/sdl.o
> CC ui/sdl_zoom.o
> /tmp/qemu-test/src/replay/replay-internal.c: In function ‘replay_put_array’:
> /tmp/qemu-test/src/replay/replay-internal.c:68: warning: ignoring return value of ‘fwrite’, declared with attribute warn_unused_result
> CC ui/x_keymap.o
> CC ui/vnc.o
> CC ui/vnc-enc-zlib.o
> CC ui/vnc-enc-hextile.o
> CC ui/vnc-enc-tight.o
> CC ui/vnc-palette.o
> CC ui/vnc-enc-zrle.o
> CC ui/vnc-auth-vencrypt.o
> CC ui/vnc-ws.o
> CC ui/vnc-jobs.o
> LINK tests/qemu-iotests/socket_scm_helper
> CC qga/commands.o
> CC qga/guest-agent-command-state.o
> CC qga/main.o
> CC qga/commands-posix.o
> CC qga/channel-posix.o
> CC qga/qapi-generated/qga-qapi-types.o
> CC qga/qapi-generated/qga-qapi-visit.o
> CC qga/qapi-generated/qga-qmp-marshal.o
> CC qmp-introspect.o
> CC qapi-types.o
> CC qapi-visit.o
> CC qapi-event.o
> AR libqemustub.a
> CC qemu-img.o
> CC qmp-marshal.o
> CC trace/generated-events.o
> AS optionrom/multiboot.o
> AS optionrom/linuxboot.o
> CC optionrom/linuxboot_dma.o
> AS optionrom/kvmvapic.o
> cc: unrecognized option '-no-integrated-as'
> cc: unrecognized option '-no-integrated-as'
> Building optionrom/multiboot.img
> Building optionrom/linuxboot_dma.img
> Building optionrom/linuxboot.img
> Building optionrom/kvmvapic.img
> Building optionrom/multiboot.raw
> Building optionrom/linuxboot.raw
> Building optionrom/linuxboot_dma.raw
> AR libqemuutil.a
> Building optionrom/kvmvapic.raw
> Signing optionrom/linuxboot.bin
> Signing optionrom/multiboot.bin
> Signing optionrom/linuxboot_dma.bin
> Signing optionrom/kvmvapic.bin
> LINK qemu-ga
> LINK ivshmem-client
> LINK ivshmem-server
> LINK qemu-nbd
> LINK qemu-img
> LINK qemu-io
> LINK qemu-bridge-helper
> GEN x86_64-softmmu/hmp-commands.h
> GEN x86_64-softmmu/hmp-commands-info.h
> GEN x86_64-softmmu/config-target.h
> CC x86_64-softmmu/exec.o
> CC x86_64-softmmu/cpu-exec.o
> CC x86_64-softmmu/translate-all.o
> CC x86_64-softmmu/translate-common.o
> CC x86_64-softmmu/tcg/tcg-op.o
> CC x86_64-softmmu/cpu-exec-common.o
> CC x86_64-softmmu/tcg/tcg.o
> GEN aarch64-softmmu/hmp-commands.h
> CC x86_64-softmmu/tcg/optimize.o
> CC x86_64-softmmu/tcg/tcg-common.o
> CC x86_64-softmmu/fpu/softfloat.o
> CC x86_64-softmmu/disas.o
> GEN aarch64-softmmu/hmp-commands-info.h
> CC x86_64-softmmu/arch_init.o
> CC x86_64-softmmu/cpus.o
> CC x86_64-softmmu/monitor.o
> GEN aarch64-softmmu/config-target.h
> CC x86_64-softmmu/gdbstub.o
> CC aarch64-softmmu/exec.o
> CC x86_64-softmmu/balloon.o
> CC aarch64-softmmu/translate-all.o
> CC aarch64-softmmu/cpu-exec.o
> CC x86_64-softmmu/ioport.o
> CC aarch64-softmmu/translate-common.o
> CC x86_64-softmmu/numa.o
> CC aarch64-softmmu/cpu-exec-common.o
> CC x86_64-softmmu/qtest.o
> CC aarch64-softmmu/tcg/tcg.o
> CC x86_64-softmmu/bootdevice.o
> CC aarch64-softmmu/tcg/tcg-op.o
> CC x86_64-softmmu/kvm-all.o
> CC x86_64-softmmu/memory.o
> CC x86_64-softmmu/cputlb.o
> CC x86_64-softmmu/memory_mapping.o
> CC aarch64-softmmu/tcg/optimize.o
> CC x86_64-softmmu/dump.o
> CC aarch64-softmmu/tcg/tcg-common.o
> CC x86_64-softmmu/migration/ram.o
> CC aarch64-softmmu/fpu/softfloat.o
> CC aarch64-softmmu/disas.o
> CC x86_64-softmmu/migration/savevm.o
> CC x86_64-softmmu/xen-common-stub.o
> CC x86_64-softmmu/xen-hvm-stub.o
> CC x86_64-softmmu/hw/acpi/nvdimm.o
> GEN aarch64-softmmu/gdbstub-xml.c
> CC x86_64-softmmu/hw/block/virtio-blk.o
> CC x86_64-softmmu/hw/block/dataplane/virtio-blk.o
> CC x86_64-softmmu/hw/char/virtio-serial-bus.o
> CC x86_64-softmmu/hw/core/nmi.o
> CC x86_64-softmmu/hw/cpu/core.o
> CC x86_64-softmmu/hw/display/vga.o
> CC aarch64-softmmu/kvm-stub.o
> CC aarch64-softmmu/arch_init.o
> CC x86_64-softmmu/hw/display/virtio-gpu.o
> CC aarch64-softmmu/cpus.o
> CC x86_64-softmmu/hw/display/virtio-gpu-3d.o
> CC x86_64-softmmu/hw/display/virtio-gpu-pci.o
> CC aarch64-softmmu/monitor.o
> CC x86_64-softmmu/hw/display/virtio-vga.o
> CC x86_64-softmmu/hw/intc/apic.o
> CC x86_64-softmmu/hw/intc/apic_common.o
> CC aarch64-softmmu/gdbstub.o
> CC aarch64-softmmu/balloon.o
> CC x86_64-softmmu/hw/intc/ioapic.o
> CC aarch64-softmmu/ioport.o
> CC aarch64-softmmu/numa.o
> CC aarch64-softmmu/qtest.o
> CC aarch64-softmmu/bootdevice.o
> CC x86_64-softmmu/hw/isa/lpc_ich9.o
> CC aarch64-softmmu/memory.o
> CC aarch64-softmmu/cputlb.o
> CC x86_64-softmmu/hw/misc/vmport.o
> CC x86_64-softmmu/hw/misc/ivshmem.o
> CC x86_64-softmmu/hw/misc/pvpanic.o
> CC x86_64-softmmu/hw/misc/edu.o
> CC x86_64-softmmu/hw/misc/hyperv_testdev.o
> CC x86_64-softmmu/hw/net/virtio-net.o
> CC x86_64-softmmu/hw/net/vhost_net.o
> CC x86_64-softmmu/hw/scsi/virtio-scsi.o
> CC aarch64-softmmu/memory_mapping.o
> CC x86_64-softmmu/hw/scsi/virtio-scsi-dataplane.o
> CC x86_64-softmmu/hw/scsi/vhost-scsi.o
> CC aarch64-softmmu/dump.o
> CC aarch64-softmmu/migration/ram.o
> CC x86_64-softmmu/hw/timer/mc146818rtc.o
> CC x86_64-softmmu/hw/vfio/common.o
> CC aarch64-softmmu/migration/savevm.o
> CC aarch64-softmmu/xen-common-stub.o
> CC x86_64-softmmu/hw/vfio/pci.o
> /tmp/qemu-test/src/hw/block/virtio-blk.c:471: error: conflicting types for ‘virtio_blk_handle_request’
> /tmp/qemu-test/src/include/hw/virtio/virtio-blk.h:87: note: previous declaration of ‘virtio_blk_handle_request’ was here
> /tmp/qemu-test/src/hw/block/virtio-blk.c: In function ‘virtio_blk_handle_request’:
> /tmp/qemu-test/src/hw/block/virtio-blk.c:482: warning: implicit declaration of function ‘virtio_error’
> /tmp/qemu-test/src/hw/block/virtio-blk.c:482: warning: nested extern declaration of ‘virtio_error’
> make[1]: *** [hw/block/virtio-blk.o] Error 1
> make[1]: *** Waiting for unfinished jobs....
> CC aarch64-softmmu/xen-hvm-stub.o
> CC aarch64-softmmu/hw/block/virtio-blk.o
> CC aarch64-softmmu/hw/block/dataplane/virtio-blk.o
> CC aarch64-softmmu/hw/char/exynos4210_uart.o
> CC aarch64-softmmu/hw/char/omap_uart.o
> CC aarch64-softmmu/hw/char/digic-uart.o
> CC aarch64-softmmu/hw/char/stm32f2xx_usart.o
> CC aarch64-softmmu/hw/char/bcm2835_aux.o
> CC aarch64-softmmu/hw/char/virtio-serial-bus.o
> CC aarch64-softmmu/hw/core/nmi.o
> CC aarch64-softmmu/hw/cpu/arm11mpcore.o
> CC aarch64-softmmu/hw/cpu/realview_mpcore.o
> CC aarch64-softmmu/hw/cpu/a9mpcore.o
> CC aarch64-softmmu/hw/cpu/a15mpcore.o
> CC aarch64-softmmu/hw/cpu/core.o
> CC aarch64-softmmu/hw/display/omap_dss.o
> CC aarch64-softmmu/hw/display/omap_lcdc.o
> CC aarch64-softmmu/hw/display/pxa2xx_lcd.o
> CC aarch64-softmmu/hw/display/bcm2835_fb.o
> CC aarch64-softmmu/hw/display/vga.o
> CC aarch64-softmmu/hw/display/virtio-gpu.o
> CC aarch64-softmmu/hw/display/virtio-gpu-3d.o
> CC aarch64-softmmu/hw/display/virtio-gpu-pci.o
> /tmp/qemu-test/src/hw/scsi/virtio-scsi.c: In function ‘virtio_scsi_bad_req’:
> /tmp/qemu-test/src/hw/scsi/virtio-scsi.c:86: warning: implicit declaration of function ‘virtio_error’
> /tmp/qemu-test/src/hw/scsi/virtio-scsi.c:86: warning: nested extern declaration of ‘virtio_error’
> /tmp/qemu-test/src/hw/scsi/virtio-scsi.c:86: error: ‘VirtIOSCSIReq’ has no member named ‘vdev’
> /tmp/qemu-test/src/hw/scsi/virtio-scsi.c: In function ‘virtio_scsi_handle_cmd_req_prepare’:
> /tmp/qemu-test/src/hw/scsi/virtio-scsi.c:537: error: too few arguments to function ‘virtio_scsi_bad_req’
> make[1]: *** [hw/scsi/virtio-scsi.o] Error 1
> CC aarch64-softmmu/hw/display/dpcd.o
> CC aarch64-softmmu/hw/display/xlnx_dp.o
> CC aarch64-softmmu/hw/dma/xlnx_dpdma.o
> CC aarch64-softmmu/hw/dma/omap_dma.o
> CC aarch64-softmmu/hw/dma/soc_dma.o
> CC aarch64-softmmu/hw/dma/pxa2xx_dma.o
> CC aarch64-softmmu/hw/dma/bcm2835_dma.o
> CC aarch64-softmmu/hw/gpio/omap_gpio.o
> CC aarch64-softmmu/hw/gpio/imx_gpio.o
> CC aarch64-softmmu/hw/i2c/omap_i2c.o
> CC aarch64-softmmu/hw/input/pxa2xx_keypad.o
> CC aarch64-softmmu/hw/input/tsc210x.o
> CC aarch64-softmmu/hw/intc/armv7m_nvic.o
> CC aarch64-softmmu/hw/intc/exynos4210_gic.o
> CC aarch64-softmmu/hw/intc/exynos4210_combiner.o
> CC aarch64-softmmu/hw/intc/omap_intc.o
> CC aarch64-softmmu/hw/intc/bcm2835_ic.o
> CC aarch64-softmmu/hw/intc/bcm2836_control.o
> CC aarch64-softmmu/hw/intc/allwinner-a10-pic.o
> CC aarch64-softmmu/hw/intc/aspeed_vic.o
> CC aarch64-softmmu/hw/intc/arm_gicv3_cpuif.o
> CC aarch64-softmmu/hw/misc/ivshmem.o
> CC aarch64-softmmu/hw/misc/arm_sysctl.o
> CC aarch64-softmmu/hw/misc/cbus.o
> CC aarch64-softmmu/hw/misc/exynos4210_pmu.o
> CC aarch64-softmmu/hw/misc/imx_ccm.o
> CC aarch64-softmmu/hw/misc/imx31_ccm.o
> CC aarch64-softmmu/hw/misc/imx25_ccm.o
> CC aarch64-softmmu/hw/misc/imx6_ccm.o
> CC aarch64-softmmu/hw/misc/imx6_src.o
> CC aarch64-softmmu/hw/misc/mst_fpga.o
> CC aarch64-softmmu/hw/misc/omap_clk.o
> CC aarch64-softmmu/hw/misc/omap_gpmc.o
> CC aarch64-softmmu/hw/misc/omap_l4.o
> CC aarch64-softmmu/hw/misc/omap_sdrc.o
> CC aarch64-softmmu/hw/misc/omap_tap.o
> /tmp/qemu-test/src/hw/block/virtio-blk.c:471: error: conflicting types for ‘virtio_blk_handle_request’
> /tmp/qemu-test/src/include/hw/virtio/virtio-blk.h:87: note: previous declaration of ‘virtio_blk_handle_request’ was here
> /tmp/qemu-test/src/hw/block/virtio-blk.c: In function ‘virtio_blk_handle_request’:
> /tmp/qemu-test/src/hw/block/virtio-blk.c:482: warning: implicit declaration of function ‘virtio_error’
> /tmp/qemu-test/src/hw/block/virtio-blk.c:482: warning: nested extern declaration of ‘virtio_error’
> CC aarch64-softmmu/hw/misc/bcm2835_mbox.o
> make[1]: *** [hw/block/virtio-blk.o] Error 1
> make[1]: *** Waiting for unfinished jobs....
> make: *** [subdir-aarch64-softmmu] Error 2
> make: *** Waiting for unfinished jobs....
> /tmp/qemu-test/src/hw/net/virtio-net.c: In function ‘virtio_net_handle_ctrl’:
> /tmp/qemu-test/src/hw/net/virtio-net.c:895: warning: implicit declaration of function ‘virtio_error’
> /tmp/qemu-test/src/hw/net/virtio-net.c:895: warning: nested extern declaration of ‘virtio_error’
> make: *** [subdir-x86_64-softmmu] Error 2
> tests/docker/Makefile.include:107: recipe for target 'docker-run-test-quick@centos6' failed
> make: *** [docker-run-test-quick@centos6] Error 1
> === OUTPUT END ===
>
> Test command exited with code: 2
>
>
> ---
> Email generated automatically by Patchew [http://patchew.org/].
> Please send your feedback to patchew-devel@freelists.org
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-21 13:44 ` Greg Kurz
@ 2016-09-21 14:01 ` Fam Zheng
2016-09-21 14:29 ` Eric Blake
` (2 more replies)
2016-09-21 17:35 ` Michael S. Tsirkin
1 sibling, 3 replies; 34+ messages in thread
From: Fam Zheng @ 2016-09-21 14:01 UTC (permalink / raw)
To: Greg Kurz
Cc: qemu-devel, kwolf, mst, jasowang, mreitz, aneesh.kumar, stefanha,
cornelia.huck, pbonzini
On Wed, 09/21 15:44, Greg Kurz wrote:
> On Wed, 21 Sep 2016 06:35:04 -0700 (PDT)
> no-reply@patchew.org wrote:
>
> > Hi,
> >
> > Your series failed automatic build test. Please find the testing commands and
> > their output below. If you have docker installed, you can probably reproduce it
> > locally.
> >
>
> Heh... of course patchew doesn't know about Stefan's series. :)
Usually those patchsets fail to apply and patchew keeps quiet. This series is
the first victim of a exception, seemingly. :)
>
> Is there an appropriate way to avoid complaints when sending a patchset that
> isn't based on QEMU master ?
Currently we don't, but we can invent one. Like:
Base: http://github.com/someone/qemu branch
for the "base on maintainer tree" case, or just inform patchew to "pull"
instead of apply:
Git: http://github.com/someone/qemu topic
for the "base on the other series" case.
Supporting this is not complicated, the tricky thing is to remember to put that
magic in cover letters every time a series doesn't base on master.
Any thoughts on the harder question? :)
Fam
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 1/7] virtio-9p: handle handle_9p_output() error
2016-09-21 13:14 ` [Qemu-devel] [PATCH 1/7] virtio-9p: handle handle_9p_output() error Greg Kurz
@ 2016-09-21 14:16 ` Cornelia Huck
2016-09-21 14:38 ` Greg Kurz
2016-09-21 14:42 ` Greg Kurz
0 siblings, 2 replies; 34+ messages in thread
From: Cornelia Huck @ 2016-09-21 14:16 UTC (permalink / raw)
To: Greg Kurz
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Paolo Bonzini
On Wed, 21 Sep 2016 15:14:00 +0200
Greg Kurz <groug@kaod.org> wrote:
> A broken guest may send a request with only non-empty out buffers
> or only non-empty in buffers, virtqueue_pop() will then return a
> VirtQueueElement with out_num == 0 or in_num == 0 respectively.
>
> All 9P requests are expected to start with the following 7-byte header:
>
> uint32_t size_le;
> uint8_t id;
> uint16_t tag_le;
>
> If iov_to_buf() fails to return these 7 bytes, then something is wrong in
> the guest.
>
> In both cases, it is wrong to crash QEMU, since the root cause lies in the
> guest. Let's switch the device to the broken state instead.
>
> Signed-off-by: Greg Kurz <groug@kaod.org>
> ---
> hw/9pfs/virtio-9p-device.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c
> index 009b43f6d045..0f09bef13392 100644
> --- a/hw/9pfs/virtio-9p-device.c
> +++ b/hw/9pfs/virtio-9p-device.c
> @@ -56,13 +56,23 @@ static void handle_9p_output(VirtIODevice *vdev, VirtQueue *vq)
> break;
> }
>
> - BUG_ON(elem->out_num == 0 || elem->in_num == 0);
> + if (elem->out_num == 0 || elem->in_num == 0) {
> + virtio_error(vdev,
> + "The guest sent a VirtFS request without headers");
> + pdu_free(pdu);
> + return;
Make that 'break;' to be more consistent with the code right above?
> + }
> QEMU_BUILD_BUG_ON(sizeof out != 7);
>
> v->elems[pdu->idx] = elem;
> len = iov_to_buf(elem->out_sg, elem->out_num, 0,
> &out, sizeof out);
> - BUG_ON(len != sizeof out);
> + if (len != sizeof out) {
I always find 'sizeof foo' instead of 'sizeof(foo)' a bit jarring...
> + virtio_error(vdev, "The guest sent a malformed VirtFS request: "
> + "header size is %zd, should be 7", len);
> + pdu_free(pdu);
> + return;
> + }
>
> pdu->size = le32_to_cpu(out.size_le);
>
>
Looks good to me.
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 2/7] virtio-blk: handle virtio_blk_handle_request() errors
2016-09-21 13:14 ` [Qemu-devel] [PATCH 2/7] virtio-blk: handle virtio_blk_handle_request() errors Greg Kurz
@ 2016-09-21 14:28 ` Cornelia Huck
2016-09-21 15:01 ` Greg Kurz
0 siblings, 1 reply; 34+ messages in thread
From: Cornelia Huck @ 2016-09-21 14:28 UTC (permalink / raw)
To: Greg Kurz
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Paolo Bonzini
On Wed, 21 Sep 2016 15:14:09 +0200
Greg Kurz <groug@kaod.org> wrote:
> All these errors are caused by a buggy guest: let's switch the device to
> the broken state instead of terminating QEMU.
>
> Signed-off-by: Greg Kurz <groug@kaod.org>
> ---
> hw/block/virtio-blk.c | 27 +++++++++++++++++----------
> 1 file changed, 17 insertions(+), 10 deletions(-)
>
> diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
> index 3a6112fbf4c4..1285d196a40f 100644
> --- a/hw/block/virtio-blk.c
> +++ b/hw/block/virtio-blk.c
> @@ -468,30 +468,32 @@ static bool virtio_blk_sect_range_ok(VirtIOBlock *dev,
> return true;
> }
>
> -void virtio_blk_handle_request(VirtIOBlockReq *req, MultiReqBuffer *mrb)
> +int virtio_blk_handle_request(VirtIOBlockReq *req, MultiReqBuffer *mrb)
Unrelated to your patch: It seems there are no callers (left) outside
of this file; should the function be made static?
Related to your patch: You didn't change the prototype in the header :)
(...)
> @@ -586,7 +589,9 @@ void virtio_blk_handle_vq(VirtIOBlock *s, VirtQueue *vq)
> blk_io_plug(s->blk);
>
> while ((req = virtio_blk_get_request(s, vq))) {
> - virtio_blk_handle_request(req, &mrb);
> + if (virtio_blk_handle_request(req, &mrb)) {
> + return;
Does the missing blk_io_unplug() have any side-effects outside of this
device, which is broken anyway?
> + }
> }
>
> if (mrb.num_reqs) {
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-21 14:01 ` Fam Zheng
@ 2016-09-21 14:29 ` Eric Blake
2016-09-22 5:39 ` Fam Zheng
2016-09-21 14:34 ` Greg Kurz
2016-09-21 17:38 ` Michael S. Tsirkin
2 siblings, 1 reply; 34+ messages in thread
From: Eric Blake @ 2016-09-21 14:29 UTC (permalink / raw)
To: Fam Zheng, Greg Kurz
Cc: kwolf, mst, jasowang, qemu-devel, mreitz, aneesh.kumar, stefanha,
cornelia.huck, pbonzini
[-- Attachment #1: Type: text/plain, Size: 2102 bytes --]
On 09/21/2016 09:01 AM, Fam Zheng wrote:
> On Wed, 09/21 15:44, Greg Kurz wrote:
>> On Wed, 21 Sep 2016 06:35:04 -0700 (PDT)
>> no-reply@patchew.org wrote:
>>
>>> Hi,
>>>
>>> Your series failed automatic build test. Please find the testing commands and
>>> their output below. If you have docker installed, you can probably reproduce it
>>> locally.
>>>
>>
>> Heh... of course patchew doesn't know about Stefan's series. :)
>
> Usually those patchsets fail to apply and patchew keeps quiet. This series is
> the first victim of a exception, seemingly. :)
While we're at it, is there a way to make the error messages include the
last 15 lines or so of the build log first, and then the full build log?
Usually, the failure is easy to identify from the tail of the message,
but having to scroll to the bottom past all the successful portion of
the log is slower than seeing the tail up front. At the same time, the
full log is useful for the cases where the failure occurs earlier than
the last 15 lines.
>
>>
>> Is there an appropriate way to avoid complaints when sending a patchset that
>> isn't based on QEMU master ?
>
> Currently we don't, but we can invent one. Like:
>
> Base: http://github.com/someone/qemu branch
I like that idea (these patches apply from that point; then it is up to
patchew whether to bother chasing down that point or just skipping the
series)
>
> for the "base on maintainer tree" case, or just inform patchew to "pull"
> instead of apply:
>
> Git: http://github.com/someone/qemu topic
Maybe Pull: instead of Git:, but again a nice idea.
>
> for the "base on the other series" case.
>
> Supporting this is not complicated, the tricky thing is to remember to put that
> magic in cover letters every time a series doesn't base on master.
>
> Any thoughts on the harder question? :)
Which one was the harder question? How to get people to remember to use
magic that patchew can recognize?
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 3/7] virtio-net: handle virtio_net_handle_ctrl() error
2016-09-21 13:14 ` [Qemu-devel] [PATCH 3/7] virtio-net: handle virtio_net_handle_ctrl() error Greg Kurz
@ 2016-09-21 14:30 ` Cornelia Huck
2016-09-21 15:03 ` Greg Kurz
0 siblings, 1 reply; 34+ messages in thread
From: Cornelia Huck @ 2016-09-21 14:30 UTC (permalink / raw)
To: Greg Kurz
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Paolo Bonzini
On Wed, 21 Sep 2016 15:14:17 +0200
Greg Kurz <groug@kaod.org> wrote:
> This error is caused by a buggy guest: let's switch the device to the
> broken state instead of terminating QEMU.
>
> Signed-off-by: Greg Kurz <groug@kaod.org>
> ---
> hw/net/virtio-net.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> index 01f1351554aa..68a448acd81b 100644
> --- a/hw/net/virtio-net.c
> +++ b/hw/net/virtio-net.c
> @@ -892,8 +892,8 @@ 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)) {
> - error_report("virtio-net ctrl missing headers");
> - exit(1);
> + virtio_error(vdev, "virtio-net ctrl missing headers");
> + return;
Do a 'break;' for consistency's sake?
> }
>
> iov_cnt = elem->out_num;
>
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-21 14:01 ` Fam Zheng
2016-09-21 14:29 ` Eric Blake
@ 2016-09-21 14:34 ` Greg Kurz
2016-09-21 17:38 ` Michael S. Tsirkin
2 siblings, 0 replies; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 14:34 UTC (permalink / raw)
To: Fam Zheng
Cc: qemu-devel, kwolf, mst, jasowang, mreitz, aneesh.kumar, stefanha,
cornelia.huck, pbonzini
On Wed, 21 Sep 2016 22:01:30 +0800
Fam Zheng <famz@redhat.com> wrote:
> On Wed, 09/21 15:44, Greg Kurz wrote:
> > On Wed, 21 Sep 2016 06:35:04 -0700 (PDT)
> > no-reply@patchew.org wrote:
> >
> > > Hi,
> > >
> > > Your series failed automatic build test. Please find the testing commands and
> > > their output below. If you have docker installed, you can probably reproduce it
> > > locally.
> > >
> >
> > Heh... of course patchew doesn't know about Stefan's series. :)
>
> Usually those patchsets fail to apply and patchew keeps quiet. This series is
> the first victim of a exception, seemingly. :)
>
This patchset applies indeed but calls a function that only exists in Stefan's
series. It is of course impossible for patchew to guess that :)
The default behaviour of keeping quiest when patchsets fail to apply is good
IMHO.
> >
> > Is there an appropriate way to avoid complaints when sending a patchset that
> > isn't based on QEMU master ?
>
> Currently we don't, but we can invent one. Like:
>
> Base: http://github.com/someone/qemu branch
>
> for the "base on maintainer tree" case, or just inform patchew to "pull"
> instead of apply:
>
> Git: http://github.com/someone/qemu topic
>
> for the "base on the other series" case.
>
> Supporting this is not complicated, the tricky thing is to remember to put that
> magic in cover letters every time a series doesn't base on master.
>
> Any thoughts on the harder question? :)
>
Be smart enough ? :)
> Fam
Cheers.
--
Greg
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 4/7] virtio-net: handle virtio_net_receive() errors
2016-09-21 13:14 ` [Qemu-devel] [PATCH 4/7] virtio-net: handle virtio_net_receive() errors Greg Kurz
@ 2016-09-21 14:38 ` Cornelia Huck
0 siblings, 0 replies; 34+ messages in thread
From: Cornelia Huck @ 2016-09-21 14:38 UTC (permalink / raw)
To: Greg Kurz
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Paolo Bonzini
On Wed, 21 Sep 2016 15:14:25 +0200
Greg Kurz <groug@kaod.org> wrote:
> All these errors are caused by a buggy guest: let's switch the device to
> the broken state instead of terminating QEMU.
>
> Signed-off-by: Greg Kurz <groug@kaod.org>
> ---
> hw/net/virtio-net.c | 25 +++++++++++++------------
> 1 file changed, 13 insertions(+), 12 deletions(-)
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 1/7] virtio-9p: handle handle_9p_output() error
2016-09-21 14:16 ` Cornelia Huck
@ 2016-09-21 14:38 ` Greg Kurz
2016-09-21 14:43 ` Cornelia Huck
2016-09-21 14:42 ` Greg Kurz
1 sibling, 1 reply; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 14:38 UTC (permalink / raw)
To: Cornelia Huck
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Paolo Bonzini
On Wed, 21 Sep 2016 16:16:59 +0200
Cornelia Huck <cornelia.huck@de.ibm.com> wrote:
> On Wed, 21 Sep 2016 15:14:00 +0200
> Greg Kurz <groug@kaod.org> wrote:
>
> > A broken guest may send a request with only non-empty out buffers
> > or only non-empty in buffers, virtqueue_pop() will then return a
> > VirtQueueElement with out_num == 0 or in_num == 0 respectively.
> >
> > All 9P requests are expected to start with the following 7-byte header:
> >
> > uint32_t size_le;
> > uint8_t id;
> > uint16_t tag_le;
> >
> > If iov_to_buf() fails to return these 7 bytes, then something is wrong in
> > the guest.
> >
> > In both cases, it is wrong to crash QEMU, since the root cause lies in the
> > guest. Let's switch the device to the broken state instead.
> >
> > Signed-off-by: Greg Kurz <groug@kaod.org>
> > ---
> > hw/9pfs/virtio-9p-device.c | 14 ++++++++++++--
> > 1 file changed, 12 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c
> > index 009b43f6d045..0f09bef13392 100644
> > --- a/hw/9pfs/virtio-9p-device.c
> > +++ b/hw/9pfs/virtio-9p-device.c
> > @@ -56,13 +56,23 @@ static void handle_9p_output(VirtIODevice *vdev, VirtQueue *vq)
> > break;
> > }
> >
> > - BUG_ON(elem->out_num == 0 || elem->in_num == 0);
> > + if (elem->out_num == 0 || elem->in_num == 0) {
> > + virtio_error(vdev,
> > + "The guest sent a VirtFS request without headers");
> > + pdu_free(pdu);
> > + return;
>
> Make that 'break;' to be more consistent with the code right above?
>
The code right above isn't an error path, unlike here. Maybe I should
even add an out_err: label to make it explicit.
> > + }
> > QEMU_BUILD_BUG_ON(sizeof out != 7);
> >
> > v->elems[pdu->idx] = elem;
> > len = iov_to_buf(elem->out_sg, elem->out_num, 0,
> > &out, sizeof out);
> > - BUG_ON(len != sizeof out);
> > + if (len != sizeof out) {
>
> I always find 'sizeof foo' instead of 'sizeof(foo)' a bit jarring...
>
> > + virtio_error(vdev, "The guest sent a malformed VirtFS request: "
> > + "header size is %zd, should be 7", len);
> > + pdu_free(pdu);
> > + return;
And same here.
> > + }
> >
> > pdu->size = le32_to_cpu(out.size_le);
> >
> >
>
> Looks good to me.
>
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 1/7] virtio-9p: handle handle_9p_output() error
2016-09-21 14:16 ` Cornelia Huck
2016-09-21 14:38 ` Greg Kurz
@ 2016-09-21 14:42 ` Greg Kurz
1 sibling, 0 replies; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 14:42 UTC (permalink / raw)
To: Cornelia Huck
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Paolo Bonzini
On Wed, 21 Sep 2016 16:16:59 +0200
Cornelia Huck <cornelia.huck@de.ibm.com> wrote:
> On Wed, 21 Sep 2016 15:14:00 +0200
> Greg Kurz <groug@kaod.org> wrote:
>
> > A broken guest may send a request with only non-empty out buffers
> > or only non-empty in buffers, virtqueue_pop() will then return a
> > VirtQueueElement with out_num == 0 or in_num == 0 respectively.
> >
> > All 9P requests are expected to start with the following 7-byte header:
> >
> > uint32_t size_le;
> > uint8_t id;
> > uint16_t tag_le;
> >
> > If iov_to_buf() fails to return these 7 bytes, then something is wrong in
> > the guest.
> >
> > In both cases, it is wrong to crash QEMU, since the root cause lies in the
> > guest. Let's switch the device to the broken state instead.
> >
> > Signed-off-by: Greg Kurz <groug@kaod.org>
> > ---
> > hw/9pfs/virtio-9p-device.c | 14 ++++++++++++--
> > 1 file changed, 12 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c
> > index 009b43f6d045..0f09bef13392 100644
> > --- a/hw/9pfs/virtio-9p-device.c
> > +++ b/hw/9pfs/virtio-9p-device.c
> > @@ -56,13 +56,23 @@ static void handle_9p_output(VirtIODevice *vdev, VirtQueue *vq)
> > break;
> > }
> >
> > - BUG_ON(elem->out_num == 0 || elem->in_num == 0);
> > + if (elem->out_num == 0 || elem->in_num == 0) {
> > + virtio_error(vdev,
> > + "The guest sent a VirtFS request without headers");
> > + pdu_free(pdu);
> > + return;
>
> Make that 'break;' to be more consistent with the code right above?
>
> > + }
> > QEMU_BUILD_BUG_ON(sizeof out != 7);
> >
> > v->elems[pdu->idx] = elem;
> > len = iov_to_buf(elem->out_sg, elem->out_num, 0,
> > &out, sizeof out);
> > - BUG_ON(len != sizeof out);
> > + if (len != sizeof out) {
>
> I always find 'sizeof foo' instead of 'sizeof(foo)' a bit jarring...
>
Oops... hit the send button to quickly :)
I agree. I will fix this in a preparatory patch.
> > + virtio_error(vdev, "The guest sent a malformed VirtFS request: "
> > + "header size is %zd, should be 7", len);
> > + pdu_free(pdu);
> > + return;
> > + }
> >
> > pdu->size = le32_to_cpu(out.size_le);
> >
> >
>
> Looks good to me.
>
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 1/7] virtio-9p: handle handle_9p_output() error
2016-09-21 14:38 ` Greg Kurz
@ 2016-09-21 14:43 ` Cornelia Huck
0 siblings, 0 replies; 34+ messages in thread
From: Cornelia Huck @ 2016-09-21 14:43 UTC (permalink / raw)
To: Greg Kurz
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Paolo Bonzini
On Wed, 21 Sep 2016 16:38:26 +0200
Greg Kurz <groug@kaod.org> wrote:
> On Wed, 21 Sep 2016 16:16:59 +0200
> Cornelia Huck <cornelia.huck@de.ibm.com> wrote:
>
> > On Wed, 21 Sep 2016 15:14:00 +0200
> > Greg Kurz <groug@kaod.org> wrote:
> >
> > > A broken guest may send a request with only non-empty out buffers
> > > or only non-empty in buffers, virtqueue_pop() will then return a
> > > VirtQueueElement with out_num == 0 or in_num == 0 respectively.
> > >
> > > All 9P requests are expected to start with the following 7-byte header:
> > >
> > > uint32_t size_le;
> > > uint8_t id;
> > > uint16_t tag_le;
> > >
> > > If iov_to_buf() fails to return these 7 bytes, then something is wrong in
> > > the guest.
> > >
> > > In both cases, it is wrong to crash QEMU, since the root cause lies in the
> > > guest. Let's switch the device to the broken state instead.
> > >
> > > Signed-off-by: Greg Kurz <groug@kaod.org>
> > > ---
> > > hw/9pfs/virtio-9p-device.c | 14 ++++++++++++--
> > > 1 file changed, 12 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/hw/9pfs/virtio-9p-device.c b/hw/9pfs/virtio-9p-device.c
> > > index 009b43f6d045..0f09bef13392 100644
> > > --- a/hw/9pfs/virtio-9p-device.c
> > > +++ b/hw/9pfs/virtio-9p-device.c
> > > @@ -56,13 +56,23 @@ static void handle_9p_output(VirtIODevice *vdev, VirtQueue *vq)
> > > break;
> > > }
> > >
> > > - BUG_ON(elem->out_num == 0 || elem->in_num == 0);
> > > + if (elem->out_num == 0 || elem->in_num == 0) {
> > > + virtio_error(vdev,
> > > + "The guest sent a VirtFS request without headers");
> > > + pdu_free(pdu);
> > > + return;
> >
> > Make that 'break;' to be more consistent with the code right above?
> >
>
> The code right above isn't an error path, unlike here. Maybe I should
> even add an out_err: label to make it explicit.
I think our tastes differ a bit. But it's your code :)
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 2/7] virtio-blk: handle virtio_blk_handle_request() errors
2016-09-21 14:28 ` Cornelia Huck
@ 2016-09-21 15:01 ` Greg Kurz
0 siblings, 0 replies; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 15:01 UTC (permalink / raw)
To: Cornelia Huck
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Paolo Bonzini
On Wed, 21 Sep 2016 16:28:34 +0200
Cornelia Huck <cornelia.huck@de.ibm.com> wrote:
> On Wed, 21 Sep 2016 15:14:09 +0200
> Greg Kurz <groug@kaod.org> wrote:
>
> > All these errors are caused by a buggy guest: let's switch the device to
> > the broken state instead of terminating QEMU.
> >
> > Signed-off-by: Greg Kurz <groug@kaod.org>
> > ---
> > hw/block/virtio-blk.c | 27 +++++++++++++++++----------
> > 1 file changed, 17 insertions(+), 10 deletions(-)
> >
> > diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
> > index 3a6112fbf4c4..1285d196a40f 100644
> > --- a/hw/block/virtio-blk.c
> > +++ b/hw/block/virtio-blk.c
> > @@ -468,30 +468,32 @@ static bool virtio_blk_sect_range_ok(VirtIOBlock *dev,
> > return true;
> > }
> >
> > -void virtio_blk_handle_request(VirtIOBlockReq *req, MultiReqBuffer *mrb)
> > +int virtio_blk_handle_request(VirtIOBlockReq *req, MultiReqBuffer *mrb)
>
> Unrelated to your patch: It seems there are no callers (left) outside
> of this file; should the function be made static?
>
Yeah you're right. The dataplane does not call this function anymore since:
"03de2f527499 virtio-blk: do not use vring in dataplane"
I'll fix this in a preparatory patch.
> Related to your patch: You didn't change the prototype in the header :)
>
Oops... caught in the act of not running a final build before sending :)
> (...)
>
> > @@ -586,7 +589,9 @@ void virtio_blk_handle_vq(VirtIOBlock *s, VirtQueue *vq)
> > blk_io_plug(s->blk);
> >
> > while ((req = virtio_blk_get_request(s, vq))) {
> > - virtio_blk_handle_request(req, &mrb);
> > + if (virtio_blk_handle_request(req, &mrb)) {
> > + return;
>
> Does the missing blk_io_unplug() have any side-effects outside of this
> device, which is broken anyway?
>
Ugh, this is not intentional... and since it may go down many paths, I
won't bet there are no side effects.
I'll fix this with an explicit err_out: label.
> > + }
> > }
> >
> > if (mrb.num_reqs) {
>
>
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 3/7] virtio-net: handle virtio_net_handle_ctrl() error
2016-09-21 14:30 ` Cornelia Huck
@ 2016-09-21 15:03 ` Greg Kurz
0 siblings, 0 replies; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 15:03 UTC (permalink / raw)
To: Cornelia Huck
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Paolo Bonzini
On Wed, 21 Sep 2016 16:30:16 +0200
Cornelia Huck <cornelia.huck@de.ibm.com> wrote:
> On Wed, 21 Sep 2016 15:14:17 +0200
> Greg Kurz <groug@kaod.org> wrote:
>
> > This error is caused by a buggy guest: let's switch the device to the
> > broken state instead of terminating QEMU.
> >
> > Signed-off-by: Greg Kurz <groug@kaod.org>
> > ---
> > hw/net/virtio-net.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/hw/net/virtio-net.c b/hw/net/virtio-net.c
> > index 01f1351554aa..68a448acd81b 100644
> > --- a/hw/net/virtio-net.c
> > +++ b/hw/net/virtio-net.c
> > @@ -892,8 +892,8 @@ 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)) {
> > - error_report("virtio-net ctrl missing headers");
> > - exit(1);
> > + virtio_error(vdev, "virtio-net ctrl missing headers");
> > + return;
>
> Do a 'break;' for consistency's sake?
>
Would an out_err label be okay ?
> > }
> >
> > iov_cnt = elem->out_num;
> >
>
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-21 13:44 ` Greg Kurz
2016-09-21 14:01 ` Fam Zheng
@ 2016-09-21 17:35 ` Michael S. Tsirkin
2016-09-21 18:12 ` Greg Kurz
1 sibling, 1 reply; 34+ messages in thread
From: Michael S. Tsirkin @ 2016-09-21 17:35 UTC (permalink / raw)
To: Greg Kurz
Cc: no-reply, famz, qemu-devel, kwolf, jasowang, mreitz,
aneesh.kumar, stefanha, cornelia.huck, pbonzini
On Wed, Sep 21, 2016 at 03:44:33PM +0200, Greg Kurz wrote:
> On Wed, 21 Sep 2016 06:35:04 -0700 (PDT)
> no-reply@patchew.org wrote:
>
> > Hi,
> >
> > Your series failed automatic build test. Please find the testing commands and
> > their output below. If you have docker installed, you can probably reproduce it
> > locally.
> >
>
> Heh... of course patchew doesn't know about Stefan's series. :)
>
> Is there an appropriate way to avoid complaints when sending a patchset that
> isn't based on QEMU master ?
It's a good idea to be explicit which tree does the patchset
target, and on top of which patches it is applied.
qemu master is kind of the default, but even then it's
a good idea to tell everyone which hash it was based on -
imagine someone trying to use your patchset several years from now.
--
MST
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-21 14:01 ` Fam Zheng
2016-09-21 14:29 ` Eric Blake
2016-09-21 14:34 ` Greg Kurz
@ 2016-09-21 17:38 ` Michael S. Tsirkin
2 siblings, 0 replies; 34+ messages in thread
From: Michael S. Tsirkin @ 2016-09-21 17:38 UTC (permalink / raw)
To: Fam Zheng
Cc: Greg Kurz, qemu-devel, kwolf, jasowang, mreitz, aneesh.kumar,
stefanha, cornelia.huck, pbonzini
On Wed, Sep 21, 2016 at 10:01:30PM +0800, Fam Zheng wrote:
> On Wed, 09/21 15:44, Greg Kurz wrote:
> > On Wed, 21 Sep 2016 06:35:04 -0700 (PDT)
> > no-reply@patchew.org wrote:
> >
> > > Hi,
> > >
> > > Your series failed automatic build test. Please find the testing commands and
> > > their output below. If you have docker installed, you can probably reproduce it
> > > locally.
> > >
> >
> > Heh... of course patchew doesn't know about Stefan's series. :)
>
> Usually those patchsets fail to apply and patchew keeps quiet. This series is
> the first victim of a exception, seemingly. :)
> >
> > Is there an appropriate way to avoid complaints when sending a patchset that
> > isn't based on QEMU master ?
>
> Currently we don't, but we can invent one. Like:
>
> Base: http://github.com/someone/qemu branch
>
> for the "base on maintainer tree" case, or just inform patchew to "pull"
> instead of apply:
>
> Git: http://github.com/someone/qemu topic
>
> for the "base on the other series" case.
>
> Supporting this is not complicated, the tricky thing is to remember to put that
> magic in cover letters every time a series doesn't base on master.
Including the message id of the base series is being nice to humans, not
just the robots. I mean Stefan does a lot of work, merely saying
"follow up to Stefan's work" isn't really sufficient.
>
> Any thoughts on the harder question? :)
>
> Fam
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-21 17:35 ` Michael S. Tsirkin
@ 2016-09-21 18:12 ` Greg Kurz
0 siblings, 0 replies; 34+ messages in thread
From: Greg Kurz @ 2016-09-21 18:12 UTC (permalink / raw)
To: Michael S. Tsirkin
Cc: no-reply, famz, qemu-devel, kwolf, jasowang, mreitz,
aneesh.kumar, stefanha, cornelia.huck, pbonzini
On Wed, 21 Sep 2016 20:35:49 +0300
"Michael S. Tsirkin" <mst@redhat.com> wrote:
> On Wed, Sep 21, 2016 at 03:44:33PM +0200, Greg Kurz wrote:
> > On Wed, 21 Sep 2016 06:35:04 -0700 (PDT)
> > no-reply@patchew.org wrote:
> >
> > > Hi,
> > >
> > > Your series failed automatic build test. Please find the testing commands and
> > > their output below. If you have docker installed, you can probably reproduce it
> > > locally.
> > >
> >
> > Heh... of course patchew doesn't know about Stefan's series. :)
> >
> > Is there an appropriate way to avoid complaints when sending a patchset that
> > isn't based on QEMU master ?
>
> It's a good idea to be explicit which tree does the patchset
> target, and on top of which patches it is applied.
>
I thought that referring to the current patchset to eradicate exit() from the
virtio code was enough. But I agree it isn't that explicit.
> qemu master is kind of the default, but even then it's
> a good idea to tell everyone which hash it was based on -
> imagine someone trying to use your patchset several years from now.
>
I understand. I'll try to remember that next time. In the case of a
patchset which isn't committed yet, I like the suggestion to put
the Message-Id you made in another mail.
Cheers.
--
Greg
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-21 13:13 [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination Greg Kurz
` (7 preceding siblings ...)
2016-09-21 13:35 ` [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination no-reply
@ 2016-09-22 1:19 ` Gonglei
2016-09-22 6:43 ` Greg Kurz
8 siblings, 1 reply; 34+ messages in thread
From: Gonglei @ 2016-09-22 1:19 UTC (permalink / raw)
To: Greg Kurz, qemu-devel
Cc: Kevin Wolf, Michael S. Tsirkin, Jason Wang, Max Reitz,
Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck, Paolo Bonzini
On 2016/9/21 21:13, Greg Kurz wrote:
> This series is a follow up to Stefan's work to eradicate most calls to
> exit() we currently have in the virtio code.
>
> It addresses all exit() call sites in the blk, net and scsi device code,
> where the error is about a missing or malformed in/out header sent by
> the guest. They are converted to use virtio_error() and stop any processing,
> instead of exiting.
>
Actually if you just stop procesing when encounter a missing in/out header but
send a interrupt to the guest, the guest maybe be stuck. virtio_net_handle_ctrl()
is an example, the guest frontend driver infinite loop to wait the interrupt's coming.
The guest can't work anymore though you don't exit the Qemu process .
Regards,
-Gonglei
> The remaining call sites are related to a host misconfiguration or a
> migration stream issue.
>
> The 9P code currently calls assert() instead of exit(), but it also about
> malformed or missing headers, so it gets converted the same way.
>
> Next work will be to check all assert() call sites in the device code, in
> case some of them actually refer to a bug in the guest, and should be
> converted to use virtio_error() as well.
>
> ---
>
> Greg Kurz (7):
> virtio-9p: handle handle_9p_output() error
> virtio-blk: handle virtio_blk_handle_request() errors
> virtio-net: handle virtio_net_handle_ctrl() error
> virtio-net: handle virtio_net_receive() errors
> virtio-net: handle virtio_net_flush_tx() errors
> virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error()
> virtio-scsi: handle virtio_scsi_set_config() error
>
>
> hw/9pfs/virtio-9p-device.c | 14 ++++++++++--
> hw/block/virtio-blk.c | 27 +++++++++++++++--------
> hw/net/virtio-net.c | 51 +++++++++++++++++++++++++-------------------
> hw/scsi/virtio-scsi.c | 21 ++++++++++--------
> 4 files changed, 70 insertions(+), 43 deletions(-)
>
> --
> Greg
>
>
>
>
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-21 14:29 ` Eric Blake
@ 2016-09-22 5:39 ` Fam Zheng
0 siblings, 0 replies; 34+ messages in thread
From: Fam Zheng @ 2016-09-22 5:39 UTC (permalink / raw)
To: Eric Blake
Cc: Greg Kurz, kwolf, mst, jasowang, qemu-devel, mreitz,
aneesh.kumar, stefanha, cornelia.huck, pbonzini
On Wed, 09/21 09:29, Eric Blake wrote:
> On 09/21/2016 09:01 AM, Fam Zheng wrote:
> > On Wed, 09/21 15:44, Greg Kurz wrote:
> >> On Wed, 21 Sep 2016 06:35:04 -0700 (PDT)
> >> no-reply@patchew.org wrote:
> >>
> >>> Hi,
> >>>
> >>> Your series failed automatic build test. Please find the testing commands and
> >>> their output below. If you have docker installed, you can probably reproduce it
> >>> locally.
> >>>
> >>
> >> Heh... of course patchew doesn't know about Stefan's series. :)
> >
> > Usually those patchsets fail to apply and patchew keeps quiet. This series is
> > the first victim of a exception, seemingly. :)
>
> While we're at it, is there a way to make the error messages include the
> last 15 lines or so of the build log first, and then the full build log?
> Usually, the failure is easy to identify from the tail of the message,
> but having to scroll to the bottom past all the successful portion of
> the log is slower than seeing the tail up front. At the same time, the
> full log is useful for the cases where the failure occurs earlier than
> the last 15 lines.
Scrolling to bottom is quite easy in any email client, while more sections in a
long email demand extra effort to manage and read. I doubt adding a "tail of
log" section just before the full log helps us much. I'd rather keep it simple
and stupid.
>
> >
> >>
> >> Is there an appropriate way to avoid complaints when sending a patchset that
> >> isn't based on QEMU master ?
> >
> > Currently we don't, but we can invent one. Like:
> >
> > Base: http://github.com/someone/qemu branch
>
> I like that idea (these patches apply from that point; then it is up to
> patchew whether to bother chasing down that point or just skipping the
> series)
>
> >
> > for the "base on maintainer tree" case, or just inform patchew to "pull"
> > instead of apply:
> >
> > Git: http://github.com/someone/qemu topic
>
> Maybe Pull: instead of Git:, but again a nice idea.
I'm adding them to my list.
>
>
> >
> > for the "base on the other series" case.
> >
> > Supporting this is not complicated, the tricky thing is to remember to put that
> > magic in cover letters every time a series doesn't base on master.
> >
> > Any thoughts on the harder question? :)
>
> Which one was the harder question? How to get people to remember to use
> magic that patchew can recognize?
Yes. :)
>
> --
> Eric Blake eblake redhat com +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
>
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-22 1:19 ` Gonglei
@ 2016-09-22 6:43 ` Greg Kurz
2016-09-22 6:55 ` Gonglei (Arei)
0 siblings, 1 reply; 34+ messages in thread
From: Greg Kurz @ 2016-09-22 6:43 UTC (permalink / raw)
To: Gonglei
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck,
Paolo Bonzini
On Thu, 22 Sep 2016 09:19:49 +0800
Gonglei <arei.gonglei@huawei.com> wrote:
> On 2016/9/21 21:13, Greg Kurz wrote:
> > This series is a follow up to Stefan's work to eradicate most calls to
> > exit() we currently have in the virtio code.
> >
> > It addresses all exit() call sites in the blk, net and scsi device code,
> > where the error is about a missing or malformed in/out header sent by
> > the guest. They are converted to use virtio_error() and stop any processing,
> > instead of exiting.
> >
> Actually if you just stop procesing when encounter a missing in/out header but
> send a interrupt to the guest, the guest maybe be stuck. virtio_net_handle_ctrl()
The virtio_error() function sets the device status to DEVICE_NEEDS_RESET and
does send a device configuration change interrupt to the guest, so it can take
appropriate action (i.e. reset the device).
Maybe I should have mentioned that in the changelog...
Cheers.
--
Greg
> is an example, the guest frontend driver infinite loop to wait the interrupt's coming.
> The guest can't work anymore though you don't exit the Qemu process .
>
> Regards,
> -Gonglei
>
> > The remaining call sites are related to a host misconfiguration or a
> > migration stream issue.
> >
> > The 9P code currently calls assert() instead of exit(), but it also about
> > malformed or missing headers, so it gets converted the same way.
> >
> > Next work will be to check all assert() call sites in the device code, in
> > case some of them actually refer to a bug in the guest, and should be
> > converted to use virtio_error() as well.
> >
> > ---
> >
> > Greg Kurz (7):
> > virtio-9p: handle handle_9p_output() error
> > virtio-blk: handle virtio_blk_handle_request() errors
> > virtio-net: handle virtio_net_handle_ctrl() error
> > virtio-net: handle virtio_net_receive() errors
> > virtio-net: handle virtio_net_flush_tx() errors
> > virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error()
> > virtio-scsi: handle virtio_scsi_set_config() error
> >
> >
> > hw/9pfs/virtio-9p-device.c | 14 ++++++++++--
> > hw/block/virtio-blk.c | 27 +++++++++++++++--------
> > hw/net/virtio-net.c | 51 +++++++++++++++++++++++++-------------------
> > hw/scsi/virtio-scsi.c | 21 ++++++++++--------
> > 4 files changed, 70 insertions(+), 43 deletions(-)
> >
> > --
> > Greg
> >
> >
> >
> >
>
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-22 6:43 ` Greg Kurz
@ 2016-09-22 6:55 ` Gonglei (Arei)
2016-09-22 7:21 ` Greg Kurz
0 siblings, 1 reply; 34+ messages in thread
From: Gonglei (Arei) @ 2016-09-22 6:55 UTC (permalink / raw)
To: Greg Kurz
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck,
Paolo Bonzini
> -----Original Message-----
> From: Greg Kurz [mailto:groug@kaod.org]
> Sent: Thursday, September 22, 2016 2:43 PM
> To: Gonglei (Arei)
> Cc: qemu-devel@nongnu.org; Kevin Wolf; Michael S. Tsirkin; Jason Wang; Max
> Reitz; Aneesh Kumar K.V; Stefan Hajnoczi; Cornelia Huck; Paolo Bonzini
> Subject: Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU
> termination
>
> On Thu, 22 Sep 2016 09:19:49 +0800
> Gonglei <arei.gonglei@huawei.com> wrote:
>
> > On 2016/9/21 21:13, Greg Kurz wrote:
> > > This series is a follow up to Stefan's work to eradicate most calls to
> > > exit() we currently have in the virtio code.
> > >
> > > It addresses all exit() call sites in the blk, net and scsi device code,
> > > where the error is about a missing or malformed in/out header sent by
> > > the guest. They are converted to use virtio_error() and stop any processing,
> > > instead of exiting.
> > >
> > Actually if you just stop procesing when encounter a missing in/out header
> but
> > send a interrupt to the guest, the guest maybe be stuck.
> virtio_net_handle_ctrl()
>
> The virtio_error() function sets the device status to DEVICE_NEEDS_RESET and
> does send a device configuration change interrupt to the guest, so it can take
> appropriate action (i.e. reset the device).
>
That's appropriate. Where is realization of virtio_error() ?
I'm sure I missed something.
Regards,
-Gonglei
> Maybe I should have mentioned that in the changelog...
>
> Cheers.
>
> --
> Greg
>
> > is an example, the guest frontend driver infinite loop to wait the interrupt's
> coming.
> > The guest can't work anymore though you don't exit the Qemu process .
> >
> > Regards,
> > -Gonglei
> >
> > > The remaining call sites are related to a host misconfiguration or a
> > > migration stream issue.
> > >
> > > The 9P code currently calls assert() instead of exit(), but it also about
> > > malformed or missing headers, so it gets converted the same way.
> > >
> > > Next work will be to check all assert() call sites in the device code, in
> > > case some of them actually refer to a bug in the guest, and should be
> > > converted to use virtio_error() as well.
> > >
> > > ---
> > >
> > > Greg Kurz (7):
> > > virtio-9p: handle handle_9p_output() error
> > > virtio-blk: handle virtio_blk_handle_request() errors
> > > virtio-net: handle virtio_net_handle_ctrl() error
> > > virtio-net: handle virtio_net_receive() errors
> > > virtio-net: handle virtio_net_flush_tx() errors
> > > virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error()
> > > virtio-scsi: handle virtio_scsi_set_config() error
> > >
> > >
> > > hw/9pfs/virtio-9p-device.c | 14 ++++++++++--
> > > hw/block/virtio-blk.c | 27 +++++++++++++++--------
> > > hw/net/virtio-net.c | 51
> +++++++++++++++++++++++++-------------------
> > > hw/scsi/virtio-scsi.c | 21 ++++++++++--------
> > > 4 files changed, 70 insertions(+), 43 deletions(-)
> > >
> > > --
> > > Greg
> > >
> > >
> > >
> > >
> >
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-22 6:55 ` Gonglei (Arei)
@ 2016-09-22 7:21 ` Greg Kurz
2016-09-22 7:30 ` Gonglei (Arei)
2016-09-22 7:38 ` Gonglei (Arei)
0 siblings, 2 replies; 34+ messages in thread
From: Greg Kurz @ 2016-09-22 7:21 UTC (permalink / raw)
To: Gonglei (Arei)
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck,
Paolo Bonzini
On Thu, 22 Sep 2016 06:55:43 +0000
"Gonglei (Arei)" <arei.gonglei@huawei.com> wrote:
> > -----Original Message-----
> > From: Greg Kurz [mailto:groug@kaod.org]
> > Sent: Thursday, September 22, 2016 2:43 PM
> > To: Gonglei (Arei)
> > Cc: qemu-devel@nongnu.org; Kevin Wolf; Michael S. Tsirkin; Jason Wang; Max
> > Reitz; Aneesh Kumar K.V; Stefan Hajnoczi; Cornelia Huck; Paolo Bonzini
> > Subject: Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU
> > termination
> >
> > On Thu, 22 Sep 2016 09:19:49 +0800
> > Gonglei <arei.gonglei@huawei.com> wrote:
> >
> > > On 2016/9/21 21:13, Greg Kurz wrote:
> > > > This series is a follow up to Stefan's work to eradicate most calls to
> > > > exit() we currently have in the virtio code.
> > > >
> > > > It addresses all exit() call sites in the blk, net and scsi device code,
> > > > where the error is about a missing or malformed in/out header sent by
> > > > the guest. They are converted to use virtio_error() and stop any processing,
> > > > instead of exiting.
> > > >
> > > Actually if you just stop procesing when encounter a missing in/out header
> > but
> > > send a interrupt to the guest, the guest maybe be stuck.
> > virtio_net_handle_ctrl()
> >
> > The virtio_error() function sets the device status to DEVICE_NEEDS_RESET and
> > does send a device configuration change interrupt to the guest, so it can take
> > appropriate action (i.e. reset the device).
> >
> That's appropriate. Where is realization of virtio_error() ?
> I'm sure I missed something.
>
Sorry for that... Michael already "lectured" me about not providing these
details. He is right indeed :)
This is work in progress by Stefan. The latest version of the patchset (v5) was
posted yesterday:
<1474473146-19337-1-git-send-email-stefanha@redhat.com>
The virtio_error() function itself is in patch 2/9:
<1474473146-19337-3-git-send-email-stefanha@redhat.com>
Cheers.
--
Greg
> Regards,
> -Gonglei
>
> > Maybe I should have mentioned that in the changelog...
> >
> > Cheers.
> >
> > --
> > Greg
> >
> > > is an example, the guest frontend driver infinite loop to wait the interrupt's
> > coming.
> > > The guest can't work anymore though you don't exit the Qemu process .
> > >
> > > Regards,
> > > -Gonglei
> > >
> > > > The remaining call sites are related to a host misconfiguration or a
> > > > migration stream issue.
> > > >
> > > > The 9P code currently calls assert() instead of exit(), but it also about
> > > > malformed or missing headers, so it gets converted the same way.
> > > >
> > > > Next work will be to check all assert() call sites in the device code, in
> > > > case some of them actually refer to a bug in the guest, and should be
> > > > converted to use virtio_error() as well.
> > > >
> > > > ---
> > > >
> > > > Greg Kurz (7):
> > > > virtio-9p: handle handle_9p_output() error
> > > > virtio-blk: handle virtio_blk_handle_request() errors
> > > > virtio-net: handle virtio_net_handle_ctrl() error
> > > > virtio-net: handle virtio_net_receive() errors
> > > > virtio-net: handle virtio_net_flush_tx() errors
> > > > virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error()
> > > > virtio-scsi: handle virtio_scsi_set_config() error
> > > >
> > > >
> > > > hw/9pfs/virtio-9p-device.c | 14 ++++++++++--
> > > > hw/block/virtio-blk.c | 27 +++++++++++++++--------
> > > > hw/net/virtio-net.c | 51
> > +++++++++++++++++++++++++-------------------
> > > > hw/scsi/virtio-scsi.c | 21 ++++++++++--------
> > > > 4 files changed, 70 insertions(+), 43 deletions(-)
> > > >
> > > > --
> > > > Greg
> > > >
> > > >
> > > >
> > > >
> > >
>
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-22 7:21 ` Greg Kurz
@ 2016-09-22 7:30 ` Gonglei (Arei)
2016-09-22 7:38 ` Gonglei (Arei)
1 sibling, 0 replies; 34+ messages in thread
From: Gonglei (Arei) @ 2016-09-22 7:30 UTC (permalink / raw)
To: Greg Kurz
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck,
Paolo Bonzini
> -----Original Message-----
> From: Greg Kurz [mailto:groug@kaod.org]
> Sent: Thursday, September 22, 2016 3:22 PM
> To: Gonglei (Arei)
> Cc: qemu-devel@nongnu.org; Kevin Wolf; Michael S. Tsirkin; Jason Wang; Max
> Reitz; Aneesh Kumar K.V; Stefan Hajnoczi; Cornelia Huck; Paolo Bonzini
> Subject: Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU
> termination
>
> On Thu, 22 Sep 2016 06:55:43 +0000
> "Gonglei (Arei)" <arei.gonglei@huawei.com> wrote:
>
> > > -----Original Message-----
> > > From: Greg Kurz [mailto:groug@kaod.org]
> > > Sent: Thursday, September 22, 2016 2:43 PM
> > > To: Gonglei (Arei)
> > > Cc: qemu-devel@nongnu.org; Kevin Wolf; Michael S. Tsirkin; Jason Wang;
> Max
> > > Reitz; Aneesh Kumar K.V; Stefan Hajnoczi; Cornelia Huck; Paolo Bonzini
> > > Subject: Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU
> > > termination
> > >
> > > On Thu, 22 Sep 2016 09:19:49 +0800
> > > Gonglei <arei.gonglei@huawei.com> wrote:
> > >
> > > > On 2016/9/21 21:13, Greg Kurz wrote:
> > > > > This series is a follow up to Stefan's work to eradicate most calls to
> > > > > exit() we currently have in the virtio code.
> > > > >
> > > > > It addresses all exit() call sites in the blk, net and scsi device code,
> > > > > where the error is about a missing or malformed in/out header sent by
> > > > > the guest. They are converted to use virtio_error() and stop any
> processing,
> > > > > instead of exiting.
> > > > >
> > > > Actually if you just stop procesing when encounter a missing in/out header
> > > but
> > > > send a interrupt to the guest, the guest maybe be stuck.
> > > virtio_net_handle_ctrl()
> > >
> > > The virtio_error() function sets the device status to DEVICE_NEEDS_RESET
> and
> > > does send a device configuration change interrupt to the guest, so it can
> take
> > > appropriate action (i.e. reset the device).
> > >
> > That's appropriate. Where is realization of virtio_error() ?
> > I'm sure I missed something.
> >
>
> Sorry for that... Michael already "lectured" me about not providing these
> details. He is right indeed :)
>
>
> This is work in progress by Stefan. The latest version of the patchset (v5) was
> posted yesterday:
>
> <1474473146-19337-1-git-send-email-stefanha@redhat.com>
>
> The virtio_error() function itself is in patch 2/9:
>
> <1474473146-19337-3-git-send-email-stefanha@redhat.com>
>
I see, thanks.
Regards,
-Gonglei
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-22 7:21 ` Greg Kurz
2016-09-22 7:30 ` Gonglei (Arei)
@ 2016-09-22 7:38 ` Gonglei (Arei)
2016-09-22 8:14 ` Greg Kurz
1 sibling, 1 reply; 34+ messages in thread
From: Gonglei (Arei) @ 2016-09-22 7:38 UTC (permalink / raw)
To: Greg Kurz
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck,
Paolo Bonzini
Hi Greg,
> -----Original Message-----
> From: Greg Kurz [mailto:groug@kaod.org]
> Sent: Thursday, September 22, 2016 3:22 PM
> To: Gonglei (Arei)
> Cc: qemu-devel@nongnu.org; Kevin Wolf; Michael S. Tsirkin; Jason Wang; Max
> Reitz; Aneesh Kumar K.V; Stefan Hajnoczi; Cornelia Huck; Paolo Bonzini
> Subject: Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU
> termination
>
> On Thu, 22 Sep 2016 06:55:43 +0000
> "Gonglei (Arei)" <arei.gonglei@huawei.com> wrote:
>
> > > -----Original Message-----
> > > From: Greg Kurz [mailto:groug@kaod.org]
> > > Sent: Thursday, September 22, 2016 2:43 PM
> > > To: Gonglei (Arei)
> > > Cc: qemu-devel@nongnu.org; Kevin Wolf; Michael S. Tsirkin; Jason Wang;
> Max
> > > Reitz; Aneesh Kumar K.V; Stefan Hajnoczi; Cornelia Huck; Paolo Bonzini
> > > Subject: Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU
> > > termination
> > >
> > > On Thu, 22 Sep 2016 09:19:49 +0800
> > > Gonglei <arei.gonglei@huawei.com> wrote:
> > >
> > > > On 2016/9/21 21:13, Greg Kurz wrote:
> > > > > This series is a follow up to Stefan's work to eradicate most calls to
> > > > > exit() we currently have in the virtio code.
> > > > >
> > > > > It addresses all exit() call sites in the blk, net and scsi device code,
> > > > > where the error is about a missing or malformed in/out header sent by
> > > > > the guest. They are converted to use virtio_error() and stop any
> processing,
> > > > > instead of exiting.
> > > > >
> > > > Actually if you just stop procesing when encounter a missing in/out header
> > > but
> > > > send a interrupt to the guest, the guest maybe be stuck.
> > > virtio_net_handle_ctrl()
> > >
> > > The virtio_error() function sets the device status to DEVICE_NEEDS_RESET
> and
> > > does send a device configuration change interrupt to the guest, so it can
> take
> > > appropriate action (i.e. reset the device).
> > >
I saw virtio_error() only handle the virtio 1.0 device, the legacy virtio device may
still stuck, am I right?
+void GCC_FMT_ATTR(2, 3) virtio_error(VirtIODevice *vdev, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start(ap, fmt);
+ error_vreport(fmt, ap);
+ va_end(ap);
+
+ vdev->broken = true;
+
+ 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);
+ }
+}
Regards,
-Gonglei
> > That's appropriate. Where is realization of virtio_error() ?
> > I'm sure I missed something.
> >
>
> Sorry for that... Michael already "lectured" me about not providing these
> details. He is right indeed :)
>
>
> This is work in progress by Stefan. The latest version of the patchset (v5) was
> posted yesterday:
>
> <1474473146-19337-1-git-send-email-stefanha@redhat.com>
>
> The virtio_error() function itself is in patch 2/9:
>
> <1474473146-19337-3-git-send-email-stefanha@redhat.com>
>
> Cheers.
>
> --
> Greg
>
> > Regards,
> > -Gonglei
> >
> > > Maybe I should have mentioned that in the changelog...
> > >
> > > Cheers.
> > >
> > > --
> > > Greg
> > >
> > > > is an example, the guest frontend driver infinite loop to wait the
> interrupt's
> > > coming.
> > > > The guest can't work anymore though you don't exit the Qemu process .
> > > >
> > > > Regards,
> > > > -Gonglei
> > > >
> > > > > The remaining call sites are related to a host misconfiguration or a
> > > > > migration stream issue.
> > > > >
> > > > > The 9P code currently calls assert() instead of exit(), but it also about
> > > > > malformed or missing headers, so it gets converted the same way.
> > > > >
> > > > > Next work will be to check all assert() call sites in the device code, in
> > > > > case some of them actually refer to a bug in the guest, and should be
> > > > > converted to use virtio_error() as well.
> > > > >
> > > > > ---
> > > > >
> > > > > Greg Kurz (7):
> > > > > virtio-9p: handle handle_9p_output() error
> > > > > virtio-blk: handle virtio_blk_handle_request() errors
> > > > > virtio-net: handle virtio_net_handle_ctrl() error
> > > > > virtio-net: handle virtio_net_receive() errors
> > > > > virtio-net: handle virtio_net_flush_tx() errors
> > > > > virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error()
> > > > > virtio-scsi: handle virtio_scsi_set_config() error
> > > > >
> > > > >
> > > > > hw/9pfs/virtio-9p-device.c | 14 ++++++++++--
> > > > > hw/block/virtio-blk.c | 27 +++++++++++++++--------
> > > > > hw/net/virtio-net.c | 51
> > > +++++++++++++++++++++++++-------------------
> > > > > hw/scsi/virtio-scsi.c | 21 ++++++++++--------
> > > > > 4 files changed, 70 insertions(+), 43 deletions(-)
> > > > >
> > > > > --
> > > > > Greg
> > > > >
> > > > >
> > > > >
> > > > >
> > > >
> >
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-22 7:38 ` Gonglei (Arei)
@ 2016-09-22 8:14 ` Greg Kurz
2016-09-22 8:28 ` Cornelia Huck
0 siblings, 1 reply; 34+ messages in thread
From: Greg Kurz @ 2016-09-22 8:14 UTC (permalink / raw)
To: Gonglei (Arei)
Cc: qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Cornelia Huck,
Paolo Bonzini
On Thu, 22 Sep 2016 07:38:29 +0000
"Gonglei (Arei)" <arei.gonglei@huawei.com> wrote:
> Hi Greg,
>
>
>
> > -----Original Message-----
> > From: Greg Kurz [mailto:groug@kaod.org]
> > Sent: Thursday, September 22, 2016 3:22 PM
> > To: Gonglei (Arei)
> > Cc: qemu-devel@nongnu.org; Kevin Wolf; Michael S. Tsirkin; Jason Wang; Max
> > Reitz; Aneesh Kumar K.V; Stefan Hajnoczi; Cornelia Huck; Paolo Bonzini
> > Subject: Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU
> > termination
> >
> > On Thu, 22 Sep 2016 06:55:43 +0000
> > "Gonglei (Arei)" <arei.gonglei@huawei.com> wrote:
> >
> > > > -----Original Message-----
> > > > From: Greg Kurz [mailto:groug@kaod.org]
> > > > Sent: Thursday, September 22, 2016 2:43 PM
> > > > To: Gonglei (Arei)
> > > > Cc: qemu-devel@nongnu.org; Kevin Wolf; Michael S. Tsirkin; Jason Wang;
> > Max
> > > > Reitz; Aneesh Kumar K.V; Stefan Hajnoczi; Cornelia Huck; Paolo Bonzini
> > > > Subject: Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU
> > > > termination
> > > >
> > > > On Thu, 22 Sep 2016 09:19:49 +0800
> > > > Gonglei <arei.gonglei@huawei.com> wrote:
> > > >
> > > > > On 2016/9/21 21:13, Greg Kurz wrote:
> > > > > > This series is a follow up to Stefan's work to eradicate most calls to
> > > > > > exit() we currently have in the virtio code.
> > > > > >
> > > > > > It addresses all exit() call sites in the blk, net and scsi device code,
> > > > > > where the error is about a missing or malformed in/out header sent by
> > > > > > the guest. They are converted to use virtio_error() and stop any
> > processing,
> > > > > > instead of exiting.
> > > > > >
> > > > > Actually if you just stop procesing when encounter a missing in/out header
> > > > but
> > > > > send a interrupt to the guest, the guest maybe be stuck.
> > > > virtio_net_handle_ctrl()
> > > >
> > > > The virtio_error() function sets the device status to DEVICE_NEEDS_RESET
> > and
> > > > does send a device configuration change interrupt to the guest, so it can
> > take
> > > > appropriate action (i.e. reset the device).
> > > >
>
> I saw virtio_error() only handle the virtio 1.0 device, the legacy virtio device may
> still stuck, am I right?
>
The DEVICE_NEEDS_RESET bit was introduced by the virtio 1.0 specification.
http://docs.oasis-open.org/virtio/virtio/v1.0/cs04/virtio-v1.0-cs04.html#x1-100001
Yes, the legacy device will stay stuck since the broken flag is set.
Cheers.
--
Greg
> +void GCC_FMT_ATTR(2, 3) virtio_error(VirtIODevice *vdev, const char *fmt, ...)
> +{
> + va_list ap;
> +
> + va_start(ap, fmt);
> + error_vreport(fmt, ap);
> + va_end(ap);
> +
> + vdev->broken = true;
> +
> + 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);
> + }
> +}
>
>
> Regards,
> -Gonglei
>
> > > That's appropriate. Where is realization of virtio_error() ?
> > > I'm sure I missed something.
> > >
> >
> > Sorry for that... Michael already "lectured" me about not providing these
> > details. He is right indeed :)
> >
> >
> > This is work in progress by Stefan. The latest version of the patchset (v5) was
> > posted yesterday:
> >
> > <1474473146-19337-1-git-send-email-stefanha@redhat.com>
> >
> > The virtio_error() function itself is in patch 2/9:
> >
> > <1474473146-19337-3-git-send-email-stefanha@redhat.com>
> >
> > Cheers.
> >
> > --
> > Greg
> >
> > > Regards,
> > > -Gonglei
> > >
> > > > Maybe I should have mentioned that in the changelog...
> > > >
> > > > Cheers.
> > > >
> > > > --
> > > > Greg
> > > >
> > > > > is an example, the guest frontend driver infinite loop to wait the
> > interrupt's
> > > > coming.
> > > > > The guest can't work anymore though you don't exit the Qemu process .
> > > > >
> > > > > Regards,
> > > > > -Gonglei
> > > > >
> > > > > > The remaining call sites are related to a host misconfiguration or a
> > > > > > migration stream issue.
> > > > > >
> > > > > > The 9P code currently calls assert() instead of exit(), but it also about
> > > > > > malformed or missing headers, so it gets converted the same way.
> > > > > >
> > > > > > Next work will be to check all assert() call sites in the device code, in
> > > > > > case some of them actually refer to a bug in the guest, and should be
> > > > > > converted to use virtio_error() as well.
> > > > > >
> > > > > > ---
> > > > > >
> > > > > > Greg Kurz (7):
> > > > > > virtio-9p: handle handle_9p_output() error
> > > > > > virtio-blk: handle virtio_blk_handle_request() errors
> > > > > > virtio-net: handle virtio_net_handle_ctrl() error
> > > > > > virtio-net: handle virtio_net_receive() errors
> > > > > > virtio-net: handle virtio_net_flush_tx() errors
> > > > > > virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error()
> > > > > > virtio-scsi: handle virtio_scsi_set_config() error
> > > > > >
> > > > > >
> > > > > > hw/9pfs/virtio-9p-device.c | 14 ++++++++++--
> > > > > > hw/block/virtio-blk.c | 27 +++++++++++++++--------
> > > > > > hw/net/virtio-net.c | 51
> > > > +++++++++++++++++++++++++-------------------
> > > > > > hw/scsi/virtio-scsi.c | 21 ++++++++++--------
> > > > > > 4 files changed, 70 insertions(+), 43 deletions(-)
> > > > > >
> > > > > > --
> > > > > > Greg
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > >
> > >
>
^ permalink raw reply [flat|nested] 34+ messages in thread
* Re: [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination
2016-09-22 8:14 ` Greg Kurz
@ 2016-09-22 8:28 ` Cornelia Huck
0 siblings, 0 replies; 34+ messages in thread
From: Cornelia Huck @ 2016-09-22 8:28 UTC (permalink / raw)
To: Greg Kurz
Cc: Gonglei (Arei),
qemu-devel, Kevin Wolf, Michael S. Tsirkin, Jason Wang,
Max Reitz, Aneesh Kumar K.V, Stefan Hajnoczi, Paolo Bonzini
On Thu, 22 Sep 2016 10:14:56 +0200
Greg Kurz <groug@kaod.org> wrote:
> On Thu, 22 Sep 2016 07:38:29 +0000
> "Gonglei (Arei)" <arei.gonglei@huawei.com> wrote:
> > I saw virtio_error() only handle the virtio 1.0 device, the legacy virtio device may
> > still stuck, am I right?
> >
>
> The DEVICE_NEEDS_RESET bit was introduced by the virtio 1.0 specification.
>
> http://docs.oasis-open.org/virtio/virtio/v1.0/cs04/virtio-v1.0-cs04.html#x1-100001
>
> Yes, the legacy device will stay stuck since the broken flag is set.
Yes, I fear there's nothing we can do to handle legacy devices
gracefully. If one broken device doesn't drag down the rest of the
machine with it, it's still a net win, I think.
^ permalink raw reply [flat|nested] 34+ messages in thread
end of thread, other threads:[~2016-09-22 8:28 UTC | newest]
Thread overview: 34+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-09-21 13:13 [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination Greg Kurz
2016-09-21 13:14 ` [Qemu-devel] [PATCH 1/7] virtio-9p: handle handle_9p_output() error Greg Kurz
2016-09-21 14:16 ` Cornelia Huck
2016-09-21 14:38 ` Greg Kurz
2016-09-21 14:43 ` Cornelia Huck
2016-09-21 14:42 ` Greg Kurz
2016-09-21 13:14 ` [Qemu-devel] [PATCH 2/7] virtio-blk: handle virtio_blk_handle_request() errors Greg Kurz
2016-09-21 14:28 ` Cornelia Huck
2016-09-21 15:01 ` Greg Kurz
2016-09-21 13:14 ` [Qemu-devel] [PATCH 3/7] virtio-net: handle virtio_net_handle_ctrl() error Greg Kurz
2016-09-21 14:30 ` Cornelia Huck
2016-09-21 15:03 ` Greg Kurz
2016-09-21 13:14 ` [Qemu-devel] [PATCH 4/7] virtio-net: handle virtio_net_receive() errors Greg Kurz
2016-09-21 14:38 ` Cornelia Huck
2016-09-21 13:14 ` [Qemu-devel] [PATCH 5/7] virtio-net: handle virtio_net_flush_tx() errors Greg Kurz
2016-09-21 13:14 ` [Qemu-devel] [PATCH 6/7] virtio-scsi: convert virtio_scsi_bad_req() to use virtio_error() Greg Kurz
2016-09-21 13:14 ` [Qemu-devel] [PATCH 7/7] virtio-scsi: handle virtio_scsi_set_config() error Greg Kurz
2016-09-21 13:35 ` [Qemu-devel] [PATCH 0/7] virtio: avoid inappropriate QEMU termination no-reply
2016-09-21 13:44 ` Greg Kurz
2016-09-21 14:01 ` Fam Zheng
2016-09-21 14:29 ` Eric Blake
2016-09-22 5:39 ` Fam Zheng
2016-09-21 14:34 ` Greg Kurz
2016-09-21 17:38 ` Michael S. Tsirkin
2016-09-21 17:35 ` Michael S. Tsirkin
2016-09-21 18:12 ` Greg Kurz
2016-09-22 1:19 ` Gonglei
2016-09-22 6:43 ` Greg Kurz
2016-09-22 6:55 ` Gonglei (Arei)
2016-09-22 7:21 ` Greg Kurz
2016-09-22 7:30 ` Gonglei (Arei)
2016-09-22 7:38 ` Gonglei (Arei)
2016-09-22 8:14 ` Greg Kurz
2016-09-22 8:28 ` Cornelia Huck
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.