* [Qemu-devel] [PULL 0/2] Block patches @ 2017-06-28 12:20 Stefan Hajnoczi 2017-06-28 12:20 ` [Qemu-devel] [PULL 1/2] virtio-blk: trace vdev so devices can be distinguished Stefan Hajnoczi ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: Stefan Hajnoczi @ 2017-06-28 12:20 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi The following changes since commit 577caa2672ccde7352fda3ef17e44993de862f0e: Merge remote-tracking branch 'remotes/edgar/tags/edgar/mmio-exec-v2.for-upstream' into staging (2017-06-27 16:56:55 +0100) are available in the git repository at: git://github.com/stefanha/qemu.git tags/block-pull-request for you to fetch changes up to 439778e6b4a20c8fe6a6a92a17013b09c4ae55d0: virtio-pci: use ioeventfd even when KVM is disabled (2017-06-28 13:18:53 +0100) ---------------------------------------------------------------- ---------------------------------------------------------------- Stefan Hajnoczi (2): virtio-blk: trace vdev so devices can be distinguished virtio-pci: use ioeventfd even when KVM is disabled hw/block/virtio-blk.c | 12 +++++++----- hw/virtio/virtio-pci.c | 2 +- hw/block/trace-events | 10 +++++----- 3 files changed, 13 insertions(+), 11 deletions(-) -- 2.9.4 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Qemu-devel] [PULL 1/2] virtio-blk: trace vdev so devices can be distinguished 2017-06-28 12:20 [Qemu-devel] [PULL 0/2] Block patches Stefan Hajnoczi @ 2017-06-28 12:20 ` Stefan Hajnoczi 2017-06-28 12:20 ` [Qemu-devel] [PULL 2/2] virtio-pci: use ioeventfd even when KVM is disabled Stefan Hajnoczi 2017-06-28 12:48 ` [Qemu-devel] [PULL 0/2] Block patches Stefan Hajnoczi 2 siblings, 0 replies; 4+ messages in thread From: Stefan Hajnoczi @ 2017-06-28 12:20 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi It is hard to analyze trace logs with multiple virtio-blk devices because none of the trace events include the VirtIODevice *vdev. This patch adds vdev so it's clear which device a request is associated with. I considered using VirtIOBlock *s instead but VirtIODevice *vdev is more general and may be correlated with generic virtio trace events like virtio_set_status. Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Message-id: 20170614092930.11234-1-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- hw/block/virtio-blk.c | 12 +++++++----- hw/block/trace-events | 10 +++++----- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index 604d37d..c0bd247 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -50,7 +50,7 @@ static void virtio_blk_req_complete(VirtIOBlockReq *req, unsigned char status) VirtIOBlock *s = req->dev; VirtIODevice *vdev = VIRTIO_DEVICE(s); - trace_virtio_blk_req_complete(req, status); + trace_virtio_blk_req_complete(vdev, req, status); stb_p(&req->in->status, status); virtqueue_push(req->vq, &req->elem, req->in_len); @@ -88,12 +88,13 @@ static void virtio_blk_rw_complete(void *opaque, int ret) { VirtIOBlockReq *next = opaque; VirtIOBlock *s = next->dev; + VirtIODevice *vdev = VIRTIO_DEVICE(s); aio_context_acquire(blk_get_aio_context(s->conf.conf.blk)); while (next) { VirtIOBlockReq *req = next; next = req->mr_next; - trace_virtio_blk_rw_complete(req, ret); + trace_virtio_blk_rw_complete(vdev, req, ret); if (req->qiov.nalloc != -1) { /* If nalloc is != 1 req->qiov is a local copy of the original @@ -355,7 +356,8 @@ static inline void submit_requests(BlockBackend *blk, MultiReqBuffer *mrb, mrb->reqs[i - 1]->mr_next = mrb->reqs[i]; } - trace_virtio_blk_submit_multireq(mrb, start, num_reqs, + trace_virtio_blk_submit_multireq(VIRTIO_DEVICE(mrb->reqs[start]->dev), + mrb, start, num_reqs, sector_num << BDRV_SECTOR_BITS, qiov->size, is_write); block_acct_merge_done(blk_get_stats(blk), @@ -526,11 +528,11 @@ static int virtio_blk_handle_request(VirtIOBlockReq *req, MultiReqBuffer *mrb) if (is_write) { qemu_iovec_init_external(&req->qiov, iov, out_num); - trace_virtio_blk_handle_write(req, req->sector_num, + trace_virtio_blk_handle_write(vdev, req, req->sector_num, req->qiov.size / BDRV_SECTOR_SIZE); } else { qemu_iovec_init_external(&req->qiov, in_iov, in_num); - trace_virtio_blk_handle_read(req, req->sector_num, + trace_virtio_blk_handle_read(vdev, req, req->sector_num, req->qiov.size / BDRV_SECTOR_SIZE); } diff --git a/hw/block/trace-events b/hw/block/trace-events index 65e83dc..c332c01 100644 --- a/hw/block/trace-events +++ b/hw/block/trace-events @@ -1,11 +1,11 @@ # See docs/tracing.txt for syntax documentation. # hw/block/virtio-blk.c -virtio_blk_req_complete(void *req, int status) "req %p status %d" -virtio_blk_rw_complete(void *req, int ret) "req %p ret %d" -virtio_blk_handle_write(void *req, uint64_t sector, size_t nsectors) "req %p sector %"PRIu64" nsectors %zu" -virtio_blk_handle_read(void *req, uint64_t sector, size_t nsectors) "req %p sector %"PRIu64" nsectors %zu" -virtio_blk_submit_multireq(void *mrb, int start, int num_reqs, uint64_t offset, size_t size, bool is_write) "mrb %p start %d num_reqs %d offset %"PRIu64" size %zu is_write %d" +virtio_blk_req_complete(void *vdev, void *req, int status) "vdev %p req %p status %d" +virtio_blk_rw_complete(void *vdev, void *req, int ret) "vdev %p req %p ret %d" +virtio_blk_handle_write(void *vdev, void *req, uint64_t sector, size_t nsectors) "vdev %p req %p sector %"PRIu64" nsectors %zu" +virtio_blk_handle_read(void *vdev, void *req, uint64_t sector, size_t nsectors) "vdev %p req %p sector %"PRIu64" nsectors %zu" +virtio_blk_submit_multireq(void *vdev, void *mrb, int start, int num_reqs, uint64_t offset, size_t size, bool is_write) "vdev %p mrb %p start %d num_reqs %d offset %"PRIu64" size %zu is_write %d" # hw/block/hd-geometry.c hd_geometry_lchs_guess(void *blk, int cyls, int heads, int secs) "blk %p LCHS %d %d %d" -- 2.9.4 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* [Qemu-devel] [PULL 2/2] virtio-pci: use ioeventfd even when KVM is disabled 2017-06-28 12:20 [Qemu-devel] [PULL 0/2] Block patches Stefan Hajnoczi 2017-06-28 12:20 ` [Qemu-devel] [PULL 1/2] virtio-blk: trace vdev so devices can be distinguished Stefan Hajnoczi @ 2017-06-28 12:20 ` Stefan Hajnoczi 2017-06-28 12:48 ` [Qemu-devel] [PULL 0/2] Block patches Stefan Hajnoczi 2 siblings, 0 replies; 4+ messages in thread From: Stefan Hajnoczi @ 2017-06-28 12:20 UTC (permalink / raw) To: qemu-devel; +Cc: Peter Maydell, Stefan Hajnoczi, Michael S . Tsirkin Old kvm.ko versions only supported a tiny number of ioeventfds so virtio-pci avoids ioeventfds when kvm_has_many_ioeventfds() returns 0. Do not check kvm_has_many_ioeventfds() when KVM is disabled since it always returns 0. Since commit 8c56c1a592b5092d91da8d8943c17777d6462a6f ("memory: emulate ioeventfd") it has been possible to use ioeventfds in qtest or TCG mode. This patch makes -device virtio-blk-pci,iothread=iothread0 work even when KVM is disabled. I have tested that virtio-blk-pci works under TCG both with and without iothread. This patch fixes qemu-iotests 068, which was accidentally merged early despite the dependency on ioeventfd. Cc: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Message-id: 20170615163813.7255-2-stefanha@redhat.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- hw/virtio/virtio-pci.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw/virtio/virtio-pci.c b/hw/virtio/virtio-pci.c index 20d6a08..301920e 100644 --- a/hw/virtio/virtio-pci.c +++ b/hw/virtio/virtio-pci.c @@ -1740,7 +1740,7 @@ static void virtio_pci_realize(PCIDevice *pci_dev, Error **errp) bool pcie_port = pci_bus_is_express(pci_dev->bus) && !pci_bus_is_root(pci_dev->bus); - if (!kvm_has_many_ioeventfds()) { + if (kvm_enabled() && !kvm_has_many_ioeventfds()) { proxy->flags &= ~VIRTIO_PCI_FLAG_USE_IOEVENTFD; } -- 2.9.4 ^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PULL 0/2] Block patches 2017-06-28 12:20 [Qemu-devel] [PULL 0/2] Block patches Stefan Hajnoczi 2017-06-28 12:20 ` [Qemu-devel] [PULL 1/2] virtio-blk: trace vdev so devices can be distinguished Stefan Hajnoczi 2017-06-28 12:20 ` [Qemu-devel] [PULL 2/2] virtio-pci: use ioeventfd even when KVM is disabled Stefan Hajnoczi @ 2017-06-28 12:48 ` Stefan Hajnoczi 2 siblings, 0 replies; 4+ messages in thread From: Stefan Hajnoczi @ 2017-06-28 12:48 UTC (permalink / raw) To: Stefan Hajnoczi; +Cc: qemu-devel, Peter Maydell On Wed, Jun 28, 2017 at 1:20 PM, Stefan Hajnoczi <stefanha@redhat.com> wrote: > The following changes since commit 577caa2672ccde7352fda3ef17e44993de862f0e: > > Merge remote-tracking branch 'remotes/edgar/tags/edgar/mmio-exec-v2.for-upstream' into staging (2017-06-27 16:56:55 +0100) > > are available in the git repository at: > > git://github.com/stefanha/qemu.git tags/block-pull-request > > for you to fetch changes up to 439778e6b4a20c8fe6a6a92a17013b09c4ae55d0: > > virtio-pci: use ioeventfd even when KVM is disabled (2017-06-28 13:18:53 +0100) > > ---------------------------------------------------------------- > > ---------------------------------------------------------------- > > Stefan Hajnoczi (2): > virtio-blk: trace vdev so devices can be distinguished > virtio-pci: use ioeventfd even when KVM is disabled NACK I missed the mail discussing the virtio-scsi-test assertion failure caused by "virtio-pci: use ioeventfd even when KVM is disabled". Stefan ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2017-06-28 12:48 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-06-28 12:20 [Qemu-devel] [PULL 0/2] Block patches Stefan Hajnoczi 2017-06-28 12:20 ` [Qemu-devel] [PULL 1/2] virtio-blk: trace vdev so devices can be distinguished Stefan Hajnoczi 2017-06-28 12:20 ` [Qemu-devel] [PULL 2/2] virtio-pci: use ioeventfd even when KVM is disabled Stefan Hajnoczi 2017-06-28 12:48 ` [Qemu-devel] [PULL 0/2] Block patches Stefan Hajnoczi
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.