aboutsummaryrefslogtreecommitdiff
path: root/hw/virtio
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2017-06-01 15:54:47 +0200
committerMichael S. Tsirkin <mst@redhat.com>2017-06-02 18:57:17 +0300
commitb0ac429f1346e9fa13206d748bedc9bd497a55bc (patch)
tree49702182aaf9732f140f7f8c48384938e9304664 /hw/virtio
parentf811f97040a48358b456b46ecbc9167f0131034f (diff)
downloadqemu-b0ac429f1346e9fa13206d748bedc9bd497a55bc.zip
qemu-b0ac429f1346e9fa13206d748bedc9bd497a55bc.tar.gz
qemu-b0ac429f1346e9fa13206d748bedc9bd497a55bc.tar.bz2
virtio: add virtqueue_alloc_element tracepoint
This tracepoint can help diagnosing failures due to memory fragmentation in the guest. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/virtio')
-rw-r--r--hw/virtio/trace-events1
-rw-r--r--hw/virtio/virtio.c1
2 files changed, 2 insertions, 0 deletions
diff --git a/hw/virtio/trace-events b/hw/virtio/trace-events
index 1f7a7c1..e24d8fa 100644
--- a/hw/virtio/trace-events
+++ b/hw/virtio/trace-events
@@ -1,6 +1,7 @@
# See docs/tracing.txt for syntax documentation.
# hw/virtio/virtio.c
+virtqueue_alloc_element(void *elem, size_t sz, unsigned in_num, unsigned out_num) "elem %p size %zd in_num %u out_num %u"
virtqueue_fill(void *vq, const void *elem, unsigned int len, unsigned int idx) "vq %p elem %p len %u idx %u"
virtqueue_flush(void *vq, unsigned int count) "vq %p count %u"
virtqueue_pop(void *vq, void *elem, unsigned int in_num, unsigned int out_num) "vq %p elem %p in_num %u out_num %u"
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index f99d99f..464947f 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -815,6 +815,7 @@ static void *virtqueue_alloc_element(size_t sz, unsigned out_num, unsigned in_nu
assert(sz >= sizeof(VirtQueueElement));
elem = g_malloc(out_sg_end);
+ trace_virtqueue_alloc_element(elem, sz, in_num, out_num);
elem->out_num = out_num;
elem->in_num = in_num;
elem->in_addr = (void *)elem + in_addr_ofs;