NOTE: This series should complete the framework for guest code tracing. From here on, other series can concurrently add actual events and improve the guest code tracing features and performance (e.g., control tracing independently on each vCPU).
This series introduces the "vcpu" property for tracing events. This property identifies events that are tied to a particular virtual CPU (e.g., executing an instruction). Events with this property have an implicit vcpu argument, which is shown in the trace. In the case of events executed at TCG translation time, two implicit arguments are added: * The vCPU performing the code translation (shown in the translation-time trace) * The vCPU executing the translated code (shown in the execution-time trace) Note that the "vcpu" and "tcg" properties are not merged into a single one, since events can be defined that relate to a vCPU but are never raised from TCG code (e.g., interrupts). Changes in v7 ============= * Fix the modified event copying code. * Minor fix in commit message for patch 3. Changes in v6 ============= * Rebase on 84c0781. * Replace the added 'TCGv_cpu' type for 'TCGv_env', since the users are really pointing to 'CPUArchState'. * Add functions to simplify event argument management. * Add minor event copy cleanup (remove long "event.original.original" chains). * Make it easier to change arguments injected by the 'vcpu' property. Changes in v5 ============= * Rebase on 357e81c. * Split from the previous (larger and more complex) v4 series. Changes in v4 ============= * Fix typo in commit message (Stefan Hajnoczi). * Simplify per-vCPU tracing state initialization (Stefan Hajnoczi). * Update copyright years. Changes in v3 ============= * Update QAPI version (Eric Blake). * Fix '#optional' annotation in QAPI (Eric Blake). Changes in v2 ============= * Rebase on 5522a84. * Improve patch descriptions. * Refactor code generation into a separate patch. * Fix forward declarations (Stefan Hajnoczi & Eduardo Habkost). * Fix "since" tags in QAPI interface (Eric Blake). * Unify QAPI/QMP interface with an optional 'vcpu' argument (Eric Blake). * Fix QMP+GTK header workaround (Stefan Hajnoczi). Signed-off-by: Lluís Vilanova <vilan...@ac.upc.edu> Acked-by: Stefan Hajnoczi <stefa...@redhat.com> --- Lluís Vilanova (4): trace: Extend API to manage event arguments trace: Remove unnecessary intermediate event copies tcg: Add type for vCPU pointers trace: Add 'vcpu' event property to trace guest vCPU docs/tracing.txt | 41 +++++++++++++ include/qemu/typedefs.h | 1 scripts/tracetool/__init__.py | 31 ++++++++-- scripts/tracetool/format/events_h.py | 4 + scripts/tracetool/format/h.py | 3 + scripts/tracetool/format/tcg_h.py | 33 +++++++---- scripts/tracetool/format/tcg_helper_c.py | 35 +++++++++-- scripts/tracetool/format/tcg_helper_h.py | 7 +- scripts/tracetool/format/tcg_helper_wrapper_h.py | 5 +- scripts/tracetool/format/ust_events_c.py | 1 scripts/tracetool/transform.py | 4 + scripts/tracetool/vcpu.py | 69 ++++++++++++++++++++++ target-alpha/translate.c | 2 - target-arm/translate.c | 2 - target-arm/translate.h | 2 - target-cris/translate.c | 2 - target-i386/translate.c | 2 - target-lm32/translate.c | 2 - target-m68k/translate.c | 2 - target-microblaze/translate.c | 2 - target-mips/translate.c | 2 - target-moxie/translate.c | 2 - target-openrisc/translate.c | 2 - target-ppc/translate.c | 2 - target-s390x/translate.c | 2 - target-sh4/translate.c | 2 - target-sparc/translate.c | 5 +- target-tilegx/translate.c | 2 - target-tricore/translate.c | 2 - target-unicore32/translate.c | 2 - target-xtensa/translate.c | 2 - tcg/tcg.h | 1 trace/control.h | 3 + 33 files changed, 224 insertions(+), 55 deletions(-) create mode 100644 scripts/tracetool/vcpu.py To: qemu-devel@nongnu.org Cc: Stefan Hajnoczi <stefa...@redhat.com> Cc: Eduardo Habkost <ehabk...@redhat.com> Cc: Eric Blake <ebl...@redhat.com> Cc: Alex Bennée <alex.ben...@linaro.org>