From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Stefan Hajnoczi" <stefanha@redhat.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
aaron@os.amperecomputing.com, robhenry@microsoft.com,
"Luis Vilanova" <vilanova@imperial.ac.uk>,
mahmoudabdalghany@outlook.com, minyihh@uci.edu, cota@braap.org,
Luke.Craig@ll.mit.edu, "Paolo Bonzini" <pbonzini@redhat.com>,
kuhn.chenqun@huawei.com, ma.mandourr@gmail.com,
"Alex Bennée" <alex.bennee@linaro.org>
Subject: [PATCH v1 16/22] tracing: excise the tcg related from tracetool
Date: Mon, 24 Jan 2022 20:16:02 +0000 [thread overview]
Message-ID: <20220124201608.604599-17-alex.bennee@linaro.org> (raw)
In-Reply-To: <20220124201608.604599-1-alex.bennee@linaro.org>
Now we have no TCG trace events and no longer handle them in the code
we can remove the handling from the tracetool to generate them. vcpu
tracing is still available although the existing syscall event is an
exercise in redundancy (plugins and -strace can also get the
information).
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Cc: Luis Vilanova <vilanova@imperial.ac.uk>
Cc: Stefan Hajnoczi <stefanha@redhat.com>
---
meson.build | 4 -
include/exec/helper-gen.h | 2 -
scripts/tracetool/__init__.py | 41 +--------
scripts/tracetool/format/tcg_h.py | 83 -------------------
scripts/tracetool/format/tcg_helper_c.py | 79 ------------------
scripts/tracetool/format/tcg_helper_h.py | 48 -----------
.../tracetool/format/tcg_helper_wrapper_h.py | 70 ----------------
scripts/tracetool/vcpu.py | 14 +---
trace/meson.build | 13 ---
9 files changed, 4 insertions(+), 350 deletions(-)
delete mode 100644 scripts/tracetool/format/tcg_h.py
delete mode 100644 scripts/tracetool/format/tcg_helper_c.py
delete mode 100644 scripts/tracetool/format/tcg_helper_h.py
delete mode 100644 scripts/tracetool/format/tcg_helper_wrapper_h.py
diff --git a/meson.build b/meson.build
index 51e3090438..73533f9eaa 100644
--- a/meson.build
+++ b/meson.build
@@ -2355,19 +2355,15 @@ tracetool_depends = files(
'scripts/tracetool/backend/simple.py',
'scripts/tracetool/backend/syslog.py',
'scripts/tracetool/backend/ust.py',
- 'scripts/tracetool/format/tcg_h.py',
'scripts/tracetool/format/ust_events_c.py',
'scripts/tracetool/format/ust_events_h.py',
'scripts/tracetool/format/__init__.py',
'scripts/tracetool/format/d.py',
- 'scripts/tracetool/format/tcg_helper_c.py',
'scripts/tracetool/format/simpletrace_stap.py',
'scripts/tracetool/format/c.py',
'scripts/tracetool/format/h.py',
- 'scripts/tracetool/format/tcg_helper_h.py',
'scripts/tracetool/format/log_stap.py',
'scripts/tracetool/format/stap.py',
- 'scripts/tracetool/format/tcg_helper_wrapper_h.py',
'scripts/tracetool/__init__.py',
'scripts/tracetool/transform.py',
'scripts/tracetool/vcpu.py'
diff --git a/include/exec/helper-gen.h b/include/exec/helper-gen.h
index 1c2e7a8ed3..7b6ca975ef 100644
--- a/include/exec/helper-gen.h
+++ b/include/exec/helper-gen.h
@@ -79,8 +79,6 @@ static inline void glue(gen_helper_, name)(dh_retvar_decl(ret) \
}
#include "helper.h"
-#include "trace/generated-helpers.h"
-#include "trace/generated-helpers-wrappers.h"
#include "accel/tcg/tcg-runtime.h"
#include "accel/tcg/plugin-helpers.h"
diff --git a/scripts/tracetool/__init__.py b/scripts/tracetool/__init__.py
index 5bc94d95cf..5393c7fc5c 100644
--- a/scripts/tracetool/__init__.py
+++ b/scripts/tracetool/__init__.py
@@ -87,8 +87,6 @@ def out(*lines, **kwargs):
"ssize_t",
"uintptr_t",
"ptrdiff_t",
- # Magic substitution is done by tracetool
- "TCGv",
]
def validate_type(name):
@@ -232,7 +230,7 @@ class Event(object):
"(?:(?:(?P<fmt_trans>\".+),)?\s*(?P<fmt>\".+))?"
"\s*")
- _VALID_PROPS = set(["disable", "tcg", "tcg-trans", "tcg-exec", "vcpu"])
+ _VALID_PROPS = set(["disable", "vcpu"])
def __init__(self, name, props, fmt, args, lineno, filename, orig=None,
event_trans=None, event_exec=None):
@@ -321,15 +319,6 @@ def build(line_str, lineno, filename):
fmt = [fmt_trans, fmt]
args = Arguments.build(groups["args"])
- if "tcg-trans" in props:
- raise ValueError("Invalid property 'tcg-trans'")
- if "tcg-exec" in props:
- raise ValueError("Invalid property 'tcg-exec'")
- if "tcg" not in props and not isinstance(fmt, str):
- raise ValueError("Only events with 'tcg' property can have two format strings")
- if "tcg" in props and isinstance(fmt, str):
- raise ValueError("Events with 'tcg' property must have two format strings")
-
event = Event(name, props, fmt, args, lineno, filename)
# add implicit arguments when using the 'vcpu' property
@@ -409,33 +398,7 @@ def read_events(fobj, fname):
e.args = (arg0,) + e.args[1:]
raise
- # transform TCG-enabled events
- if "tcg" not in event.properties:
- events.append(event)
- else:
- event_trans = event.copy()
- event_trans.name += "_trans"
- event_trans.properties += ["tcg-trans"]
- event_trans.fmt = event.fmt[0]
- # ignore TCG arguments
- args_trans = []
- for atrans, aorig in zip(
- event_trans.transform(tracetool.transform.TCG_2_HOST).args,
- event.args):
- if atrans == aorig:
- args_trans.append(atrans)
- event_trans.args = Arguments(args_trans)
-
- event_exec = event.copy()
- event_exec.name += "_exec"
- event_exec.properties += ["tcg-exec"]
- event_exec.fmt = event.fmt[1]
- event_exec.args = event_exec.args.transform(tracetool.transform.TCG_2_HOST)
-
- new_event = [event_trans, event_exec]
- event.event_trans, event.event_exec = new_event
-
- events.extend(new_event)
+ events.append(event)
return events
diff --git a/scripts/tracetool/format/tcg_h.py b/scripts/tracetool/format/tcg_h.py
deleted file mode 100644
index 4d84440aff..0000000000
--- a/scripts/tracetool/format/tcg_h.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-Generate .h file for TCG code generation.
-"""
-
-__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>"
-__copyright__ = "Copyright 2012-2017, Lluís Vilanova <vilanova@ac.upc.edu>"
-__license__ = "GPL version 2 or (at your option) any later version"
-
-__maintainer__ = "Stefan Hajnoczi"
-__email__ = "stefanha@redhat.com"
-
-
-from tracetool import out, Arguments
-import tracetool.vcpu
-
-
-def vcpu_transform_args(args):
- assert len(args) == 1
- return Arguments([
- args,
- # NOTE: this name must be kept in sync with the one in "tcg_h"
- # NOTE: Current helper code uses TCGv_env (CPUArchState*)
- ("TCGv_env", "__tcg_" + args.names()[0]),
- ])
-
-
-def generate(events, backend, group):
- if group == "root":
- header = "trace/trace-root.h"
- else:
- header = "trace.h"
-
- out('/* This file is autogenerated by tracetool, do not edit. */',
- '/* You must include this file after the inclusion of helper.h */',
- '',
- '#ifndef TRACE_%s_GENERATED_TCG_TRACERS_H' % group.upper(),
- '#define TRACE_%s_GENERATED_TCG_TRACERS_H' % group.upper(),
- '',
- '#include "exec/helper-proto.h"',
- '#include "%s"' % header,
- '',
- )
-
- for e in events:
- # just keep one of them
- if "tcg-exec" not in e.properties:
- continue
-
- out('static inline void %(name_tcg)s(%(args)s)',
- '{',
- name_tcg=e.original.api(e.QEMU_TRACE_TCG),
- args=tracetool.vcpu.transform_args("tcg_h", e.original))
-
- if "disable" not in e.properties:
- args_trans = e.original.event_trans.args
- args_exec = tracetool.vcpu.transform_args(
- "tcg_helper_c", e.original.event_exec, "wrapper")
- if "vcpu" in e.properties:
- trace_cpu = e.args.names()[0]
- cond = "trace_event_get_vcpu_state(%(cpu)s,"\
- " TRACE_%(id)s)"\
- % dict(
- cpu=trace_cpu,
- id=e.original.event_exec.name.upper())
- else:
- cond = "true"
-
- out(' %(name_trans)s(%(argnames_trans)s);',
- ' if (%(cond)s) {',
- ' gen_helper_%(name_exec)s(%(argnames_exec)s);',
- ' }',
- name_trans=e.original.event_trans.api(e.QEMU_TRACE),
- name_exec=e.original.event_exec.api(e.QEMU_TRACE),
- argnames_trans=", ".join(args_trans.names()),
- argnames_exec=", ".join(args_exec.names()),
- cond=cond)
-
- out('}')
-
- out('',
- '#endif /* TRACE_%s_GENERATED_TCG_TRACERS_H */' % group.upper())
diff --git a/scripts/tracetool/format/tcg_helper_c.py b/scripts/tracetool/format/tcg_helper_c.py
deleted file mode 100644
index 72576e67d1..0000000000
--- a/scripts/tracetool/format/tcg_helper_c.py
+++ /dev/null
@@ -1,79 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-Generate trace/generated-helpers.c.
-"""
-
-__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>"
-__copyright__ = "Copyright 2012-2017, Lluís Vilanova <vilanova@ac.upc.edu>"
-__license__ = "GPL version 2 or (at your option) any later version"
-
-__maintainer__ = "Stefan Hajnoczi"
-__email__ = "stefanha@redhat.com"
-
-
-from tracetool import Arguments, out
-from tracetool.transform import *
-import tracetool.vcpu
-
-
-def vcpu_transform_args(args, mode):
- assert len(args) == 1
- # NOTE: this name must be kept in sync with the one in "tcg_h"
- args = Arguments([(args.types()[0], "__tcg_" + args.names()[0])])
- if mode == "code":
- return Arguments([
- # Does cast from helper requirements to tracing types
- ("CPUState *", "env_cpu(%s)" % args.names()[0]),
- ])
- else:
- args = Arguments([
- # NOTE: Current helper code uses TCGv_env (CPUArchState*)
- ("CPUArchState *", args.names()[0]),
- ])
- if mode == "header":
- return args
- elif mode == "wrapper":
- return args.transform(HOST_2_TCG)
- else:
- assert False
-
-
-def generate(events, backend, group):
- if group == "root":
- header = "trace/trace-root.h"
- else:
- header = "trace.h"
-
- events = [e for e in events
- if "disable" not in e.properties]
-
- out('/* This file is autogenerated by tracetool, do not edit. */',
- '',
- '#include "qemu/osdep.h"',
- '#include "cpu.h"',
- '#include "exec/helper-proto.h"',
- '#include "%s"' % header,
- '',
- )
-
- for e in events:
- if "tcg-exec" not in e.properties:
- continue
-
- e_args_api = tracetool.vcpu.transform_args(
- "tcg_helper_c", e.original, "header").transform(
- HOST_2_TCG_COMPAT, TCG_2_TCG_HELPER_DEF)
- e_args_call = tracetool.vcpu.transform_args(
- "tcg_helper_c", e, "code")
-
- out('void %(name_tcg)s(%(args_api)s)',
- '{',
- # NOTE: the check was already performed at TCG-generation time
- ' %(name)s(%(args_call)s);',
- '}',
- name_tcg="helper_%s_proxy" % e.api(),
- name=e.api(e.QEMU_TRACE_NOCHECK),
- args_api=e_args_api,
- args_call=", ".join(e_args_call.casted()),
- )
diff --git a/scripts/tracetool/format/tcg_helper_h.py b/scripts/tracetool/format/tcg_helper_h.py
deleted file mode 100644
index 08554fbc85..0000000000
--- a/scripts/tracetool/format/tcg_helper_h.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-Generate trace/generated-helpers.h.
-"""
-
-__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>"
-__copyright__ = "Copyright 2012-2016, Lluís Vilanova <vilanova@ac.upc.edu>"
-__license__ = "GPL version 2 or (at your option) any later version"
-
-__maintainer__ = "Stefan Hajnoczi"
-__email__ = "stefanha@redhat.com"
-
-
-from tracetool import out
-from tracetool.transform import *
-import tracetool.vcpu
-
-
-def generate(events, backend, group):
- events = [e for e in events
- if "disable" not in e.properties]
-
- out('/* This file is autogenerated by tracetool, do not edit. */',
- '',
- )
-
- for e in events:
- if "tcg-exec" not in e.properties:
- continue
-
- # TCG helper proxy declaration
- fmt = "DEF_HELPER_FLAGS_%(argc)d(%(name)s, %(flags)svoid%(types)s)"
- e_args = tracetool.vcpu.transform_args("tcg_helper_c", e.original, "header")
- args = e_args.transform(HOST_2_TCG_COMPAT, HOST_2_TCG,
- TCG_2_TCG_HELPER_DECL)
- types = ", ".join(args.types())
- if types != "":
- types = ", " + types
-
- flags = "TCG_CALL_NO_RWG, "
-
- out(fmt,
- flags=flags,
- argc=len(args),
- name=e.api() + "_proxy",
- types=types,
- )
diff --git a/scripts/tracetool/format/tcg_helper_wrapper_h.py b/scripts/tracetool/format/tcg_helper_wrapper_h.py
deleted file mode 100644
index 0c5a9797d1..0000000000
--- a/scripts/tracetool/format/tcg_helper_wrapper_h.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# -*- coding: utf-8 -*-
-
-"""
-Generate trace/generated-helpers-wrappers.h.
-"""
-
-__author__ = "Lluís Vilanova <vilanova@ac.upc.edu>"
-__copyright__ = "Copyright 2012-2016, Lluís Vilanova <vilanova@ac.upc.edu>"
-__license__ = "GPL version 2 or (at your option) any later version"
-
-__maintainer__ = "Stefan Hajnoczi"
-__email__ = "stefanha@redhat.com"
-
-
-from tracetool import out
-from tracetool.transform import *
-import tracetool.vcpu
-
-
-def generate(events, backend, group):
- events = [e for e in events
- if "disable" not in e.properties]
-
- out('/* This file is autogenerated by tracetool, do not edit. */',
- '',
- '#define tcg_temp_new_nop(v) (v)',
- '#define tcg_temp_free_nop(v)',
- '',
- )
-
- for e in events:
- if "tcg-exec" not in e.properties:
- continue
-
- # tracetool.generate always transforms types to host
- e_args = tracetool.vcpu.transform_args("tcg_helper_c", e.original, "wrapper")
-
- # mixed-type to TCG helper bridge
- args_tcg_compat = e_args.transform(HOST_2_TCG_COMPAT)
-
- code_new = [
- "%(tcg_type)s __%(name)s = %(tcg_func)s(%(name)s);" %
- {"tcg_type": transform_type(type_, HOST_2_TCG),
- "tcg_func": transform_type(type_, HOST_2_TCG_TMP_NEW),
- "name": name}
- for (type_, name) in args_tcg_compat
- ]
-
- code_free = [
- "%(tcg_func)s(__%(name)s);" %
- {"tcg_func": transform_type(type_, HOST_2_TCG_TMP_FREE),
- "name": name}
- for (type_, name) in args_tcg_compat
- ]
-
- gen_name = "gen_helper_" + e.api()
-
- out('static inline void %(name)s(%(args)s)',
- '{',
- ' %(code_new)s',
- ' %(proxy_name)s(%(tmp_names)s);',
- ' %(code_free)s',
- '}',
- name=gen_name,
- args=e_args,
- proxy_name=gen_name + "_proxy",
- code_new="\n ".join(code_new),
- code_free="\n ".join(code_free),
- tmp_names=", ".join(["__%s" % name for _, name in e_args]),
- )
diff --git a/scripts/tracetool/vcpu.py b/scripts/tracetool/vcpu.py
index 868b4cb04c..d232cb1d06 100644
--- a/scripts/tracetool/vcpu.py
+++ b/scripts/tracetool/vcpu.py
@@ -19,19 +19,9 @@
def transform_event(event):
"""Transform event to comply with the 'vcpu' property (if present)."""
if "vcpu" in event.properties:
- # events with 'tcg-trans' and 'tcg-exec' are auto-generated from
- # already-patched events
- assert "tcg-trans" not in event.properties
- assert "tcg-exec" not in event.properties
-
event.args = Arguments([("void *", "__cpu"), event.args])
- if "tcg" in event.properties:
- fmt = "\"cpu=%p \""
- event.fmt = [fmt + event.fmt[0],
- fmt + event.fmt[1]]
- else:
- fmt = "\"cpu=%p \""
- event.fmt = fmt + event.fmt
+ fmt = "\"cpu=%p \""
+ event.fmt = fmt + event.fmt
return event
diff --git a/trace/meson.build b/trace/meson.build
index e279e33d4d..298926036a 100644
--- a/trace/meson.build
+++ b/trace/meson.build
@@ -61,19 +61,6 @@ trace_events_all = custom_target('trace-events-all',
install: true,
install_dir: qemu_datadir)
-foreach d : [
- ['generated-helpers.c', 'tcg-helper-c'],
- ['generated-helpers.h', 'tcg-helper-h'],
- ['generated-helpers-wrappers.h', 'tcg-helper-wrapper-h'],
-]
- gen = custom_target(d[0],
- output: d[0],
- input: meson.project_source_root() / 'trace-events',
- command: [ tracetool, '--group=root', '--format=@0@'.format(d[1]), '@INPUT@', '@OUTPUT@' ],
- depend_files: tracetool_depends)
- specific_ss.add(when: 'CONFIG_TCG', if_true: gen)
-endforeach
-
if 'ust' in get_option('trace_backends')
trace_ust_all_h = custom_target('trace-ust-all.h',
output: 'trace-ust-all.h',
--
2.30.2
next prev parent reply other threads:[~2022-01-24 20:57 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-24 20:15 [PATCH v1 00/22] testing and plugin updates Alex Bennée
2022-01-24 20:15 ` [PATCH v1 01/22] tests/Makefile.include: clean-up old code Alex Bennée
2022-01-24 20:38 ` Philippe Mathieu-Daudé via
2022-01-24 20:15 ` [PATCH v1 02/22] tests/qtest: enable more vhost-user tests by default Alex Bennée
2022-01-25 8:18 ` Thomas Huth
2022-01-24 20:15 ` [PATCH v1 03/22] Makefile: also remove .gcno files when cleaning Alex Bennée
2022-01-25 7:40 ` Thomas Huth
2022-01-24 20:15 ` [PATCH v1 04/22] .gitignore: add .gcov pattern Alex Bennée
2022-01-24 20:38 ` Philippe Mathieu-Daudé via
2022-01-24 20:15 ` [PATCH v1 05/22] MAINTAINERS: Cover lcitool submodule with build test / automation Alex Bennée
2022-01-24 20:15 ` [PATCH v1 06/22] gitmodules: Correct libvirt-ci submodule URL Alex Bennée
2022-01-24 20:15 ` [PATCH v1 07/22] tests/lcitool: Include local qemu.yml when refreshing cirrus-ci files Alex Bennée
2022-01-24 20:15 ` [PATCH v1 08/22] drop libxml2 checks since libxml is not actually used (for parallels) Alex Bennée
2022-01-25 21:29 ` Vladimir Sementsov-Ogievskiy
2022-01-24 20:15 ` [PATCH v1 09/22] tests/lcitool: Refresh submodule and remove libxml2 Alex Bennée
2022-01-25 10:23 ` Thomas Huth
2022-01-25 10:48 ` Philippe Mathieu-Daudé via
2022-01-24 20:15 ` [PATCH v1 10/22] tests: Manually remove libxml2 on MSYS2 runners Alex Bennée
2022-01-24 20:15 ` [PATCH v1 11/22] tests/lcitool: Install libibumad to cover RDMA on Debian based distros Alex Bennée
2022-01-24 20:15 ` [PATCH v1 12/22] plugins: stxp test case from Aaron (!upstream) Alex Bennée
2022-01-25 8:17 ` Thomas Huth
2022-02-01 14:58 ` Aaron Lindsay via
2022-02-01 15:00 ` Aaron Lindsay via
2022-02-01 15:29 ` Alex Bennée
2022-02-02 14:17 ` Aaron Lindsay via
2022-01-24 20:15 ` [PATCH v1 13/22] docs: remove references to TCG tracing Alex Bennée
2022-01-24 20:16 ` [PATCH v1 14/22] tracing: remove TCG memory access tracing Alex Bennée
2022-01-24 22:06 ` Philippe Mathieu-Daudé via
2022-01-24 20:16 ` [PATCH v1 15/22] tracing: remove the trace-tcg includes from the build Alex Bennée
2022-01-24 22:07 ` Philippe Mathieu-Daudé via
2022-01-24 20:16 ` Alex Bennée [this message]
2022-01-24 20:16 ` [PATCH v1 17/22] plugins: add helper functions for coverage plugins Alex Bennée
2022-01-24 20:16 ` [PATCH v1 18/22] contrib/plugins: add a drcov plugin Alex Bennée
2022-01-24 20:16 ` [PATCH v1 19/22] tests/plugin: allow libinsn.so per-CPU counts Alex Bennée
2022-01-24 20:16 ` [PATCH v1 20/22] tests/plugins: add instruction matching to libinsn.so Alex Bennée
2022-01-24 22:13 ` Philippe Mathieu-Daudé via
2022-01-24 20:16 ` [PATCH v1 21/22] target/i386: use CPU_LOG_INT for IRQ servicing Alex Bennée
2022-01-24 22:14 ` Philippe Mathieu-Daudé via
2022-01-26 21:33 ` Richard Henderson
2022-01-24 20:16 ` [PATCH v1 22/22] plugins: move reset of plugin data to tb_start Alex Bennée
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=20220124201608.604599-17-alex.bennee@linaro.org \
--to=alex.bennee@linaro.org \
--cc=Luke.Craig@ll.mit.edu \
--cc=aaron@os.amperecomputing.com \
--cc=cota@braap.org \
--cc=kuhn.chenqun@huawei.com \
--cc=ma.mandourr@gmail.com \
--cc=mahmoudabdalghany@outlook.com \
--cc=minyihh@uci.edu \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=robhenry@microsoft.com \
--cc=stefanha@redhat.com \
--cc=vilanova@imperial.ac.uk \
/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).