* Re: [Qemu-devel] [PATCH v5 00/11] trace: [tcg] Allow tracing guest events in TCG-generated code
[not found] <20140530121117.6581.71271.stgit@fimbulvetr.bsc.es>
@ 2014-07-09 7:40 ` Stefan Hajnoczi
0 siblings, 0 replies; only message in thread
From: Stefan Hajnoczi @ 2014-07-09 7:40 UTC (permalink / raw)
To: Lluís Vilanova
Cc: Peter Maydell, qemu-devel, Stefan Hajnoczi, Richard Henderson
[-- Attachment #1: Type: text/plain, Size: 7158 bytes --]
On Fri, May 30, 2014 at 02:11:20PM +0200, Lluís Vilanova wrote:
> NOTE: TCG code for execution-time event tracing is always generated, regardless
> of wether the event has been dynamically disabled or not (unless the event
> has the static "disable" property).
>
> This approach keeps this series simple, and a future series will handle
> the case of having per-CPU tracing states for these events, and only
> generate the code if the event is dynamicaly enabled.
>
> Adds the base ability to specify which events in the "trace-events" file may be
> used to trace guest activity in the TCG code (using the "tcg" event propery).
>
> An event with that property actually generates two independent events
> "${name}_trans" and "${name}_exec", and a set of conveniency functions. Having
> two events allows us to trace both translation and execution of guest code
> (e.g., generating vs executing a basic block). See the first patch for more
> information on its usage.
>
> Files generating guest code (TCG) must include "trace-tcg.h".
>
> The flow of the generated routines is (convenience wrappers are inlined):
>
>
> [At translation time]
>
> * trace_${name}_tcg(bool, TCGv)
> Declared: "trace/generated-tcg-tracers.h"
> Defined : "trace/generated-tcg-tracers.h"
>
> Invokes "trace_${name}_trans" (with all non-TCG arguments) and
> "gen_helper_trace_${name}_exec" (with all arguments).
>
> * trace_${name}_trans(bool)
> Declared: "trace/generated-tracers.h"
> Defined : "trace/generated-tracers.h"
>
> Invokes the actual tracing backends for the translation-time event.
>
> * gen_helper_trace_${name}_exec_wrapper(bool, TCGv)
> Declared: "trace/generated-helpers-wrappers.h"
> Defined : "trace/generated-helpers-wrappers.h"
>
> Convenience wrapper that will allocate (and free) TCG temporaries for all
> non-TCG arguments before calling "gen_helper_trace_${name}_exec_proxy".
>
> * gen_helper_trace_${name}_exec_proxy(TCGi32, TCGv)
> Declared: "trace/generated-helpers.h"
> Defined : "trace/generated-helpers.h" (using helper machinery)
>
> The actual TCG helper function, created using QEMU's TCG helper machinery.
>
>
> [At execution time]
>
> * helper_trace_${name}_exec_proxy(uint32_t, uint64_t)
> Declared: "trace/generated-helpers.h"
> Defined : "trace/generated-helpers.c"
>
> Convenience wrapper that casts arguments to the appropriate type before
> calling "trace_${name}_exec".
>
> This is necessary because TCG helpers can only receive a limited number of
> argument types (e.g., must use 'uint32_t' instead of 'bool').
>
> * trace_${name}_exec(bool, uint64_t)
> Declared: "trace/generated-tracers.h"
> Defined : "trace/generated-tracers.h"
>
> Invokes the actual tracing backends for the execution-time event.
>
> Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>
> ---
>
> Changes in v5:
>
> * Rename 'gen_helper_trace_${name}_exec' as
> 'gen_helper_trace_${name}_exec_wrapper'.
> * Split generation of 'gen_helper_trace_${name}_exec_wrapper' into a separate
> file ("trace/generated-helpers-wrappers.h"), using the new
> 'tcg-helper-wrapper-h' tracetool backend.
>
> Changes in v4:
>
> * Rebase on d7d3d60 (use new helper header machinery).
>
> Changes in v3:
>
> * None (re-send with cover).
>
> Changes in v2:
>
> * Split the guest memory access event out of this series.
> * Generate two independent events from each "tcg" event (one for
> translation-time events and one for execution-time events).
>
>
> Lluís Vilanova (11):
> trace: [tcg] Add documentation
> trace: [tcg] Argument type transformation rules
> trace: [tcg] Argument type transformation machinery
> trace: [tcg] Add 'tcg' event property
> trace: [tcg] Declare TCG tracing helper routines
> trace: [tcg] Define TCG tracing helper routines
> trace: [tcg] Define TCG tracing helper routine wrappers
> trace: [tcg] Include TCG-tracing helpers
> trace: [tcg] Generate TCG tracing routines
> trace: [tcg] Include event definitions in "trace.h"
> trace: [tcg] Include TCG-tracing header on all targets
>
>
> .gitignore | 4 +
> Makefile | 6 +
> Makefile.objs | 7 +
> Makefile.target | 5 +
> docs/tracing.txt | 40 +++++
> include/exec/helper-gen.h | 2
> include/exec/helper-proto.h | 1
> include/exec/helper-tcg.h | 1
> include/trace-tcg.h | 7 +
> include/trace.h | 1
> scripts/tracetool/__init__.py | 95 ++++++++++++-
> scripts/tracetool/format/events_h.py | 5 +
> scripts/tracetool/format/tcg_h.py | 57 ++++++++
> scripts/tracetool/format/tcg_helper_c.py | 50 +++++++
> scripts/tracetool/format/tcg_helper_h.py | 50 +++++++
> scripts/tracetool/format/tcg_helper_wrapper_h.py | 70 +++++++++
> scripts/tracetool/transform.py | 166 ++++++++++++++++++++++
> target-alpha/translate.c | 3
> target-arm/translate-a64.c | 2
> target-arm/translate.c | 3
> target-cris/translate.c | 3
> target-i386/translate.c | 3
> target-lm32/translate.c | 3
> target-m68k/translate.c | 3
> target-microblaze/translate.c | 3
> target-mips/translate.c | 3
> target-openrisc/translate.c | 3
> target-ppc/translate.c | 3
> target-s390x/translate.c | 2
> target-sh4/translate.c | 3
> target-sparc/translate.c | 3
> target-unicore32/translate.c | 3
> target-xtensa/translate.c | 3
> trace/Makefile.objs | 53 ++++++-
> 34 files changed, 654 insertions(+), 12 deletions(-)
> create mode 100644 include/trace-tcg.h
> create mode 100644 scripts/tracetool/format/tcg_h.py
> create mode 100644 scripts/tracetool/format/tcg_helper_c.py
> create mode 100644 scripts/tracetool/format/tcg_helper_h.py
> create mode 100644 scripts/tracetool/format/tcg_helper_wrapper_h.py
> create mode 100644 scripts/tracetool/transform.py
>
>
> To: qemu-devel@nongnu.org
> Cc: Stefan Hajnoczi <stefanha@redhat.com>
> Cc: Richard Henderson <rth@twiddle.net>
> Cc: Peter Maydell <peter.maydell@linaro.org>
>
Merged for QEMU 2.2.
Thanks, applied to my tracing-next tree:
https://github.com/stefanha/qemu/commits/tracing-next
Stefan
[-- Attachment #2: Type: application/pgp-signature, Size: 473 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2014-07-09 7:40 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20140530121117.6581.71271.stgit@fimbulvetr.bsc.es>
2014-07-09 7:40 ` [Qemu-devel] [PATCH v5 00/11] trace: [tcg] Allow tracing guest events in TCG-generated code Stefan Hajnoczi
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).