Pierrick Bouvier <[email protected]> writes: > On 2025-08-08 13:41, Pierrick Bouvier wrote: >> This plugin generates a binary trace compatible with the excellent uftrace: >> https://github.com/namhyung/uftrace >> In short, it tracks all function calls performed during execution, >> based on >> frame pointer analysis. A big advantage over "uftrace record" is that it >> works >> in system mode, allowing to trace a full system execution, which was the >> original goal. It works as well in user mode, but uftrace itself already does >> this. It's implemented for aarch64 and x86_64. >> Let's start with concrete examples of the result. >> First, in system mode, booting a stack using TF-A + U-boot + Linux: >> - Two first stages of boot sequence in Arm Trusted Firmware (EL3 and S-EL1) >> https://fileserver.linaro.org/s/kkxBS552W7nYESX/preview >> - Stat and open syscalls in kernel >> https://fileserver.linaro.org/s/dXe4MfraKg2F476/preview >> - Poweroff sequence (from kernel back to firmware, NS-EL2 to EL3) >> https://fileserver.linaro.org/s/oR2PtyGKJrqnfRf/preview >> Full trace is available here: >> https://fileserver.linaro.org/s/WsemLboPEzo24nw/download/aarch64_boot.json.gz >> You can download and open it on https://ui.perfetto.dev/ to explore it. >> Second, in user mode, tracing qemu-aarch64 (itself) running git >> --help: >> - Loading program and its interpreter >> https://fileserver.linaro.org/s/fie8JgX76yyL5cq/preview >> - TB creation >> https://fileserver.linaro.org/s/GXY6NKMw5EeRCew/preview >> Full trace is available here: >> https://fileserver.linaro.org/s/N8X8fnZ5yGRZLsT/download/qemu_aarch64_git_help.json.gz >> If you had curiosity and now you're ready to give some attention, >> most of the >> details you want to read are included in the documentation patch (final one). >> Overhead is around x5-x15, and long traces can be directly filtered >> with uftrace >> if needed. >> I hope this plugin can help people trying to understand what happens >> out of the >> user space, and get a better grasp of how firmwares, bootloader, and kernel >> interact behind the curtain. >> v6 >> -- >> - fix types and spelling mistakes >> - use _MAX for privilege level enums >> - uftrace info file: use empty strings >> - trace flush: assert we wrote all data >> - doc: added style for keyboard keys >> - added URL to document uftrace entry format >> - updated comment in vcpu_tb_trans to explain why we always instrument the >> first >> instruction in tb >> v5 >> -- >> - addressed Alex comments >> - split plugin implementation in several commits >> - removed instruction based timestamps (only use time based timestamps) >> - removed sampling implementation >> v4 >> -- >> - add support for x64 >> v3 >> -- >> - fix missing include unistd.h (build failed on MacOS only) >> v2 >> -- >> - trace active stacks on exit >> - do not erase map generated in system_emulation >> - add documentation to generate restricted visual traces around specific >> events >> of execution >> Pierrick Bouvier (9): >> contrib/plugins/uftrace: skeleton file >> contrib/plugins/uftrace: define cpu operations and implement aarch64 >> contrib/plugins/uftrace: track callstack >> contrib/plugins/uftrace: implement tracing >> contrib/plugins/uftrace: implement privilege level tracing >> contrib/plugins/uftrace: generate additional files for uftrace >> contrib/plugins/uftrace: implement x64 support >> contrib/plugins/uftrace_symbols.py >> contrib/plugins/uftrace: add documentation >> docs/about/emulation.rst | 199 +++++++ >> contrib/plugins/uftrace.c | 876 +++++++++++++++++++++++++++++ >> contrib/plugins/meson.build | 3 +- >> contrib/plugins/uftrace_symbols.py | 152 +++++ >> 4 files changed, 1229 insertions(+), 1 deletion(-) >> create mode 100644 contrib/plugins/uftrace.c >> create mode 100755 contrib/plugins/uftrace_symbols.py >> > > Ping on this series. > Comments from reviewers have been addressed. > Alex, are there other changes you would like before pulling this?
I thought there were the some changes Philippe asked for? I can pull v7 once it is posted. There is no massive rush as the tree has just re-opened. > > Regards, > Pierrick -- Alex Bennée Virtualisation Tech Lead @ Linaro
