On Fri, Sep 19, 2025 at 01:25:20PM +0200, Paolo Bonzini wrote: > This is the result of the summer project of Tanish Desai. It mostly > consists of changes to tracetool, which I used to add tracepoint support > to the pl011 device. All the backends are supported except dtrace and > ust; support for Linux in dtrace should be easy using the "probe" crate, > the rest (ust, and dtrace on macOS or Solaris) less so. For ust, the > plan is to deprecate it, since LTTng can use uprobes. For dtrace on > macOS or Solaris, support would have to be added to the "probe" crate. > > Patches 1-5 are cleanups that could be committed separately. > > Patches 6-7 are tracetool patches that have been posted before, now > rebased on top of the "make check-tracetool" series. Their purpose > is to simplify .h code generation for tracetool backends, and these > simplifications translate directly to the new .rs code generation. > > Patches 8-9 add the minimal support for adding tracepoint functions > in Rust, albeit with no content and thus no actual tracing. > > Patches 10-11 add back tracepoints to the Rust pl011 device model. > > Patches 12-16 finally add Rust code generation to the supported > tracing backends. > > The tracetool testsuite is now part of QEMU and is extended to > cover the generated Rust code.
Looks very close. The main issue I noticed in the Rust code is that the
dynamic state of trace events is not being checked correctly
(trace_event_get_state_dynamic_by_id()).
>
> Paolo
>
> v1->v2:
> - new patch "tracetool: fix usage of try_import()"
> - new patch "tracetool: remove dead code" [Manos]
> - new patch "treewide: remove unnessary "coding" header" [Manos]
> - new patch "tracetool: add SPDX headers" [Manos]
> - dropped patch "treewide: write "unsigned long int" instead of "long
> unsigned int""
> - merge patch "rust: move dependencies to rust/Cargo.toml"
> - gathered Reviewed-by tags
> - sort keywords for primitive C types [Manos]
> - fix incorrect string "_{name}" in "tracetool: Add Rust format support"
> [Manos, Daniel]
> - adjust for moved crates
> - add SPDX headers to generated file [Daniel]
> - add @generated tag to generated file [Manos]
> - add #[allow()] to include_trace macro, in order to pacify clippy
> - tweaks to trace/Cargo.toml [Manos]
> - fix more clippy issues in generated code
> - change include_trace! macro to not require the "trace-" prefix [Zhao]
> - rename Clock::get() and get_hz() methods to period() and hz() respectively
> [Zhao]
> - drop the "..._ENABLED" symbols [Daniel]
>
> Paolo Bonzini (8):
> tracetool: fix usage of try_import()
> tracetool: remove dead code
> treewide: remove unnessary "coding" header
> tracetool: add SPDX headers
> trace/ftrace: move snprintf+write from tracepoints to ftrace.c
> rust: qdev: add minimal clock bindings
> rust: pl011: add tracepoints
> log: change qemu_loglevel to unsigned
>
> Tanish Desai (8):
> tracetool: add CHECK_TRACE_EVENT_GET_STATE
> tracetool/backend: remove redundant trace event checks
> tracetool: Add Rust format support
> rust: add trace crate
> tracetool/simple: add Rust support
> tracetool/log: add Rust support
> tracetool/ftrace: add Rust support
> tracetool/syslog: add Rust support
>
> docs/conf.py | 2 -
> docs/sphinx-static/theme_overrides.css | 3 +-
> include/qemu/log-for-trace.h | 4 +-
> include/qemu/log.h | 44 ++--
> tests/tracetool/ftrace.h | 28 +--
> tests/tracetool/log.h | 16 +-
> trace/ftrace.h | 1 +
> trace/ftrace.c | 15 ++
> util/log.c | 2 +-
> hw/char/trace-events | 14 +-
> rust/Cargo.lock | 8 +
> rust/Cargo.toml | 1 +
> rust/hw/char/pl011/Cargo.toml | 1 +
> rust/hw/char/pl011/meson.build | 1 +
> rust/hw/char/pl011/src/device.rs | 57 +++--
> rust/hw/core/src/qdev.rs | 33 +++
> rust/meson.build | 2 +-
> rust/trace/Cargo.toml | 19 ++
> rust/trace/meson.build | 19 ++
> rust/trace/src/lib.rs | 39 ++++
> rust/util/src/log.rs | 2 +-
> scripts/analyse-locks-simpletrace.py | 1 -
> scripts/modinfo-collect.py | 1 -
> scripts/modinfo-generate.py | 1 -
> scripts/oss-fuzz/minimize_qtest_trace.py | 1 -
> scripts/oss-fuzz/output_reproducer.py | 1 -
> .../oss-fuzz/reorder_fuzzer_qtest_trace.py | 1 -
> scripts/probe-gdb-support.py | 1 -
> scripts/qapi/error.py | 2 -
> scripts/qapi/expr.py | 2 -
> scripts/qapi/gen.py | 2 -
> scripts/qapi/parser.py | 2 -
> scripts/qapi/schema.py | 2 -
> scripts/qemu-plugin-symbols.py | 1 -
> scripts/qemugdb/tcg.py | 2 -
> scripts/qemugdb/timers.py | 1 -
> scripts/replay-dump.py | 1 -
> scripts/tracetool.py | 1 -
> scripts/tracetool/__init__.py | 201 ++++++++++++++----
> scripts/tracetool/backend/__init__.py | 43 ++--
> scripts/tracetool/backend/dtrace.py | 2 +-
> scripts/tracetool/backend/ftrace.py | 26 +--
> scripts/tracetool/backend/log.py | 22 +-
> scripts/tracetool/backend/simple.py | 17 +-
> scripts/tracetool/backend/syslog.py | 17 +-
> scripts/tracetool/backend/ust.py | 2 +-
> scripts/tracetool/format/__init__.py | 4 +-
> scripts/tracetool/format/c.py | 2 +-
> scripts/tracetool/format/d.py | 2 +-
> scripts/tracetool/format/h.py | 18 +-
> scripts/tracetool/format/log_stap.py | 2 +-
> scripts/tracetool/format/rs.py | 71 +++++++
> scripts/tracetool/format/simpletrace_stap.py | 2 +-
> scripts/tracetool/format/stap.py | 2 +-
> scripts/tracetool/format/ust_events_c.py | 2 +-
> scripts/tracetool/format/ust_events_h.py | 2 +-
> tests/tracetool/ftrace.rs | 40 ++++
> tests/tracetool/log.rs | 44 ++++
> tests/tracetool/simple.rs | 40 ++++
> tests/tracetool/syslog.rs | 40 ++++
> tests/tracetool/tracetool-test.py | 2 +
> trace/meson.build | 8 +-
> 62 files changed, 727 insertions(+), 218 deletions(-)
> create mode 100644 rust/trace/Cargo.toml
> create mode 100644 rust/trace/meson.build
> create mode 100644 rust/trace/src/lib.rs
> create mode 100644 scripts/tracetool/format/rs.py
> create mode 100644 tests/tracetool/ftrace.rs
> create mode 100644 tests/tracetool/log.rs
> create mode 100644 tests/tracetool/simple.rs
> create mode 100644 tests/tracetool/syslog.rs
>
> --
> 2.51.0
>
signature.asc
Description: PGP signature
