qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Hajnoczi <stefanha@redhat.com>
To: qemu-devel@nongnu.org
Cc: Peter Maydell <peter.maydell@linaro.org>,
	"Daniel P. Berrange" <berrange@redhat.com>,
	Stefan Hajnoczi <stefanha@redhat.com>
Subject: [Qemu-devel] [PULL 03/42] trace: add build framework for merging trace-events files
Date: Fri, 17 Jun 2016 16:59:14 +0100	[thread overview]
Message-ID: <1466179193-11232-4-git-send-email-stefanha@redhat.com> (raw)
In-Reply-To: <1466179193-11232-1-git-send-email-stefanha@redhat.com>

From: "Daniel P. Berrange" <berrange@redhat.com>

Switch make rules over to use trace-events-all as the
master trace events input file. Add rule that will
construct trace-events-all from $(trace-events-y).

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
Message-id: 1466066426-16657-2-git-send-email-berrange@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 .gitignore          |  1 +
 Makefile            |  2 +-
 Makefile.objs       |  4 ++++
 Makefile.target     |  6 +++---
 docs/tracing.txt    | 32 ++++++++++++++++++--------------
 qemu-options.hx     |  8 ++++----
 trace/Makefile.objs | 25 ++++++++++++++-----------
 7 files changed, 45 insertions(+), 33 deletions(-)

diff --git a/.gitignore b/.gitignore
index 38ee1c5..9b6a968 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,7 @@
 /config-target.*
 /config.status
 /config-temp
+/trace-events-all
 /trace/generated-tracers.h
 /trace/generated-tracers.c
 /trace/generated-tracers-dtrace.h
diff --git a/Makefile b/Makefile
index 53e4119..7087fc2 100644
--- a/Makefile
+++ b/Makefile
@@ -487,7 +487,7 @@ endif
 	set -e; for x in $(KEYMAPS); do \
 		$(INSTALL_DATA) $(SRC_PATH)/pc-bios/keymaps/$$x "$(DESTDIR)$(qemu_datadir)/keymaps"; \
 	done
-	$(INSTALL_DATA) $(SRC_PATH)/trace-events "$(DESTDIR)$(qemu_datadir)/trace-events"
+	$(INSTALL_DATA) $(BUILD_DIR)/trace-events-all "$(DESTDIR)$(qemu_datadir)/trace-events-all"
 	for d in $(TARGET_DIRS); do \
 	$(MAKE) $(SUBDIR_MAKEFLAGS) TARGET_DIR=$$d/ -C $$d $@ || exit 1 ; \
         done
diff --git a/Makefile.objs b/Makefile.objs
index da49b71..697fc66 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -115,3 +115,7 @@ qga-vss-dll-obj-y = qga/
 # contrib
 ivshmem-client-obj-y = contrib/ivshmem-client/
 ivshmem-server-obj-y = contrib/ivshmem-server/
+
+
+######################################################################
+trace-events-y = trace-events
diff --git a/Makefile.target b/Makefile.target
index 495b474..d720b3e 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -48,7 +48,7 @@ else
 TARGET_TYPE=system
 endif
 
-$(QEMU_PROG).stp-installed: $(SRC_PATH)/trace-events
+$(QEMU_PROG).stp-installed: $(BUILD_DIR)/trace-events-all
 	$(call quiet-command,$(TRACETOOL) \
 		--format=stap \
 		--backends=$(TRACE_BACKENDS) \
@@ -57,7 +57,7 @@ $(QEMU_PROG).stp-installed: $(SRC_PATH)/trace-events
 		--target-type=$(TARGET_TYPE) \
 		< $< > $@,"  GEN   $(TARGET_DIR)$(QEMU_PROG).stp-installed")
 
-$(QEMU_PROG).stp: $(SRC_PATH)/trace-events
+$(QEMU_PROG).stp: $(BUILD_DIR)/trace-events-all
 	$(call quiet-command,$(TRACETOOL) \
 		--format=stap \
 		--backends=$(TRACE_BACKENDS) \
@@ -66,7 +66,7 @@ $(QEMU_PROG).stp: $(SRC_PATH)/trace-events
 		--target-type=$(TARGET_TYPE) \
 		< $< > $@,"  GEN   $(TARGET_DIR)$(QEMU_PROG).stp")
 
-$(QEMU_PROG)-simpletrace.stp: $(SRC_PATH)/trace-events
+$(QEMU_PROG)-simpletrace.stp: $(BUILD_DIR)/trace-events-all
 	$(call quiet-command,$(TRACETOOL) \
 		--format=simpletrace-stap \
 		--backends=$(TRACE_BACKENDS) \
diff --git a/docs/tracing.txt b/docs/tracing.txt
index 0bd6b9c..29f2f9a 100644
--- a/docs/tracing.txt
+++ b/docs/tracing.txt
@@ -23,20 +23,24 @@ for debugging, profiling, and observing execution.
 
 4. Pretty-print the binary trace file:
 
-    ./scripts/simpletrace.py trace-events trace-* # Override * with QEMU <pid>
+    ./scripts/simpletrace.py trace-events-all trace-* # Override * with QEMU <pid>
 
 == Trace events ==
 
-There is a set of static trace events declared in the "trace-events" source
-file.  Each trace event declaration names the event, its arguments, and the
-format string which can be used for pretty-printing:
+Each directory in the source tree can declare a set of static trace events
+in a "trace-events" file. Each trace event declaration names the event, its
+arguments, and the format string which can be used for pretty-printing:
 
     qemu_vmalloc(size_t size, void *ptr) "size %zu ptr %p"
     qemu_vfree(void *ptr) "ptr %p"
 
-The "trace-events" file is processed by the "tracetool" script during build to
-generate code for the trace events.  Trace events are invoked directly from
-source code like this:
+All "trace-events" files must be listed in the "trace-event-y" make variable
+in the top level Makefile.objs. During build the individual files are combined
+to create a "trace-events-all" file, which is processed by the "tracetool"
+script during build to generate code for the trace events. The
+"trace-events-all" file is also installed into "/usr/share/qemu".
+
+Trace events are invoked directly from source code like this:
 
     #include "trace.h"  /* needed for trace event prototype */
     
@@ -196,12 +200,12 @@ Restriction: "ftrace" backend is restricted to Linux only.
 ==== Analyzing trace files ====
 
 The "simple" backend produces binary trace files that can be formatted with the
-simpletrace.py script.  The script takes the "trace-events" file and the binary
-trace:
+simpletrace.py script.  The script takes the "trace-events-all" file and the
+binary trace:
 
-    ./scripts/simpletrace.py trace-events trace-12345
+    ./scripts/simpletrace.py trace-events-all trace-12345
 
-You must ensure that the same "trace-events" file was used to build QEMU,
+You must ensure that the same "trace-events-all" file was used to build QEMU,
 otherwise trace event declarations may have changed and output will not be
 consistent.
 
@@ -259,11 +263,11 @@ probes:
                          --binary path/to/qemu-binary \
                          --target-type system \
                          --target-name x86_64 \
-                         <trace-events >qemu.stp
+                         <trace-events-all >qemu.stp
 
 == Trace event properties ==
 
-Each event in the "trace-events" file can be prefixed with a space-separated
+Each event in the "trace-events-all" file can be prefixed with a space-separated
 list of zero or more of the following event properties.
 
 === "disable" ===
@@ -275,7 +279,7 @@ programmatically disabled.
 In this case you should declare such event with the "disable" property. This
 will effectively disable the event at compile time (by using the "nop" backend),
 thus having no performance impact at all on regular builds (i.e., unless you
-edit the "trace-events" file).
+edit the "trace-events-all" file).
 
 In addition, there might be cases where relatively complex computations must be
 performed to generate values that are only used as arguments for a trace
diff --git a/qemu-options.hx b/qemu-options.hx
index 17f15ad..44c658f 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -3677,8 +3677,8 @@ Specify tracing options.
 @table @option
 @item [enable=]@var{pattern}
 Immediately enable events matching @var{pattern}.
-The file must contain one event name (as listed in the @file{trace-events} file)
-per line; globbing patterns are accepted too.  This option is only
+The file must contain one event name (as listed in the @file{trace-events-all}
+file) per line; globbing patterns are accepted too.  This option is only
 available if QEMU has been compiled with the @var{simple}, @var{stderr}
 or @var{ftrace} tracing backend.  To specify multiple events or patterns,
 specify the @option{-trace} option multiple times.
@@ -3687,8 +3687,8 @@ Use @code{-trace help} to print a list of names of trace points.
 
 @item events=@var{file}
 Immediately enable events listed in @var{file}.
-The file must contain one event name (as listed in the @file{trace-events} file)
-per line; globbing patterns are accepted too.  This option is only
+The file must contain one event name (as listed in the @file{trace-events-all}
+file) per line; globbing patterns are accepted too.  This option is only
 available if QEMU has been compiled with the @var{simple}, @var{stderr} or
 @var{ftrace} tracing backend.
 
diff --git a/trace/Makefile.objs b/trace/Makefile.objs
index 5145b34..cbe188e 100644
--- a/trace/Makefile.objs
+++ b/trace/Makefile.objs
@@ -8,13 +8,16 @@
 tracetool-y = $(SRC_PATH)/scripts/tracetool.py
 tracetool-y += $(shell find $(SRC_PATH)/scripts/tracetool -name "*.py")
 
+$(BUILD_DIR)/trace-events-all: $(trace-events-y:%=$(SRC_PATH)/%)
+	$(call quiet-command,cat $^ > $@)
+
 ######################################################################
 # Auto-generated event descriptions for LTTng ust code
 
 ifeq ($(findstring ust,$(TRACE_BACKENDS)),ust)
 $(obj)/generated-ust-provider.h: $(obj)/generated-ust-provider.h-timestamp
 	@cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-ust-provider.h-timestamp: $(SRC_PATH)/trace-events $(tracetool-y)
+$(obj)/generated-ust-provider.h-timestamp: $(BUILD_DIR)/trace-events-all $(tracetool-y)
 	$(call quiet-command,$(TRACETOOL) \
 		--format=ust-events-h \
 		--backends=$(TRACE_BACKENDS) \
@@ -22,7 +25,7 @@ $(obj)/generated-ust-provider.h-timestamp: $(SRC_PATH)/trace-events $(tracetool-
 
 $(obj)/generated-ust.c: $(obj)/generated-ust.c-timestamp $(BUILD_DIR)/config-host.mak
 	@cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-ust.c-timestamp: $(SRC_PATH)/trace-events $(tracetool-y)
+$(obj)/generated-ust.c-timestamp: $(BUILD_DIR)/trace-events-all $(tracetool-y)
 	$(call quiet-command,$(TRACETOOL) \
 		--format=ust-events-c \
 		--backends=$(TRACE_BACKENDS) \
@@ -37,7 +40,7 @@ endif
 
 $(obj)/generated-events.h: $(obj)/generated-events.h-timestamp
 	@cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-events.h-timestamp: $(SRC_PATH)/trace-events $(tracetool-y)
+$(obj)/generated-events.h-timestamp: $(BUILD_DIR)/trace-events-all $(tracetool-y)
 	$(call quiet-command,$(TRACETOOL) \
 		--format=events-h \
 		--backends=$(TRACE_BACKENDS) \
@@ -45,7 +48,7 @@ $(obj)/generated-events.h-timestamp: $(SRC_PATH)/trace-events $(tracetool-y)
 
 $(obj)/generated-events.c: $(obj)/generated-events.c-timestamp $(BUILD_DIR)/config-host.mak
 	@cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-events.c-timestamp: $(SRC_PATH)/trace-events $(tracetool-y)
+$(obj)/generated-events.c-timestamp: $(BUILD_DIR)/trace-events-all $(tracetool-y)
 	$(call quiet-command,$(TRACETOOL) \
 		--format=events-c \
 		--backends=$(TRACE_BACKENDS) \
@@ -62,7 +65,7 @@ util-obj-y += generated-events.o
 
 $(obj)/generated-tracers.h: $(obj)/generated-tracers.h-timestamp
 	@cmp -s $< $@ || cp $< $@
-$(obj)/generated-tracers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
+$(obj)/generated-tracers.h-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
 	$(call quiet-command,$(TRACETOOL) \
 		--format=h \
 		--backends=$(TRACE_BACKENDS) \
@@ -73,7 +76,7 @@ $(obj)/generated-tracers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/conf
 
 $(obj)/generated-tracers.c: $(obj)/generated-tracers.c-timestamp
 	@cmp -s $< $@ || cp $< $@
-$(obj)/generated-tracers.c-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
+$(obj)/generated-tracers.c-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
 	$(call quiet-command,$(TRACETOOL) \
 		--format=c \
 		--backends=$(TRACE_BACKENDS) \
@@ -90,7 +93,7 @@ $(obj)/generated-tracers.o: $(obj)/generated-tracers.c $(obj)/generated-tracers.
 ifeq ($(findstring dtrace,$(TRACE_BACKENDS)),dtrace)
 $(obj)/generated-tracers-dtrace.dtrace: $(obj)/generated-tracers-dtrace.dtrace-timestamp
 	@cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-tracers-dtrace.dtrace-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
+$(obj)/generated-tracers-dtrace.dtrace-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
 	$(call quiet-command,$(TRACETOOL) \
 		--format=d \
 		--backends=$(TRACE_BACKENDS) \
@@ -109,7 +112,7 @@ endif
 
 $(obj)/generated-helpers-wrappers.h: $(obj)/generated-helpers-wrappers.h-timestamp
 	@cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-helpers-wrappers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
+$(obj)/generated-helpers-wrappers.h-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
 	$(call quiet-command,$(TRACETOOL) \
 		--format=tcg-helper-wrapper-h \
 		--backend=$(TRACE_BACKENDS) \
@@ -117,7 +120,7 @@ $(obj)/generated-helpers-wrappers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_
 
 $(obj)/generated-helpers.h: $(obj)/generated-helpers.h-timestamp
 	@cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-helpers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
+$(obj)/generated-helpers.h-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
 	$(call quiet-command,$(TRACETOOL) \
 		--format=tcg-helper-h \
 		--backend=$(TRACE_BACKENDS) \
@@ -125,7 +128,7 @@ $(obj)/generated-helpers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/conf
 
 $(obj)/generated-helpers.c: $(obj)/generated-helpers.c-timestamp
 	@cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-helpers.c-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
+$(obj)/generated-helpers.c-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
 	$(call quiet-command,$(TRACETOOL) \
 		--format=tcg-helper-c \
 		--backend=$(TRACE_BACKENDS) \
@@ -138,7 +141,7 @@ target-obj-y += generated-helpers.o
 
 $(obj)/generated-tcg-tracers.h: $(obj)/generated-tcg-tracers.h-timestamp
 	@cmp $< $@ >/dev/null 2>&1 || cp $< $@
-$(obj)/generated-tcg-tracers.h-timestamp: $(SRC_PATH)/trace-events $(BUILD_DIR)/config-host.mak $(tracetool-y)
+$(obj)/generated-tcg-tracers.h-timestamp: $(BUILD_DIR)/trace-events-all $(BUILD_DIR)/config-host.mak $(tracetool-y)
 	$(call quiet-command,$(TRACETOOL) \
 		--format=tcg-h \
 		--backend=$(TRACE_BACKENDS) \
-- 
2.5.5

  parent reply	other threads:[~2016-06-17 16:00 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-17 15:59 [Qemu-devel] [PULL 00/42] Tracing patches Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 01/42] exec: [tcg] Track which vCPU is performing translation and execution Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 02/42] trace: [all] Add "guest_mem_before" event Stefan Hajnoczi
2016-06-17 15:59 ` Stefan Hajnoczi [this message]
2016-06-17 15:59 ` [Qemu-devel] [PULL 04/42] trace: split out trace events for util/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 05/42] trace: split out trace events for crypto/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 06/42] trace: split out trace events for io/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 07/42] trace: split out trace events for migration/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 08/42] trace: split out trace events for block/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 09/42] trace: split out trace events for hw/block/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 10/42] trace: split out trace events for hw/char/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 11/42] trace: split out trace events for hw/intc/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 12/42] trace: split out trace events for hw/net/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 13/42] trace: split out trace events for hw/virtio/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 14/42] trace: split out trace events for hw/audio/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 15/42] trace: split out trace events for hw/misc/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 16/42] trace: split out trace events for hw/usb/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 17/42] trace: split out trace events for hw/scsi/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 18/42] trace: split out trace events for hw/nvram/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 19/42] trace: split out trace events for hw/display/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 20/42] trace: split out trace events for hw/input/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 21/42] trace: split out trace events for hw/timer/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 22/42] trace: split out trace events for hw/dma/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 23/42] trace: split out trace events for hw/sparc/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 24/42] trace: split out trace events for hw/sd/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 25/42] trace: split out trace events for hw/isa/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 26/42] trace: split out trace events for hw/i386/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 27/42] trace: split out trace events for hw/9pfs/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 28/42] trace: split out trace events for hw/ppc/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 29/42] trace: split out trace events for hw/pci/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 30/42] trace: split out trace events for hw/s390x/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 31/42] trace: split out trace events for hw/vfio/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 32/42] trace: split out trace events for hw/acpi/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 33/42] trace: split out trace events for hw/arm/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 34/42] trace: split out trace events for hw/alpha/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 35/42] trace: split out trace events for ui/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 36/42] trace: split out trace events for audio/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 37/42] trace: split out trace events for net/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 38/42] trace: split out trace events for target-sparc/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 39/42] trace: split out trace events for target-s390x/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 40/42] trace: split out trace events for target-ppc/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 41/42] trace: split out trace events for qom/ directory Stefan Hajnoczi
2016-06-17 15:59 ` [Qemu-devel] [PULL 42/42] trace: split out trace events for linux-user/ directory Stefan Hajnoczi
2016-06-20  8:45 ` [Qemu-devel] [PULL 00/42] Tracing patches Peter Maydell
  -- strict thread matches above, loose matches on Subject: below --
2016-06-20 20:29 Stefan Hajnoczi
2016-06-20 20:29 ` [Qemu-devel] [PULL 03/42] trace: add build framework for merging trace-events files Stefan Hajnoczi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1466179193-11232-4-git-send-email-stefanha@redhat.com \
    --to=stefanha@redhat.com \
    --cc=berrange@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).