From: Anup Patel <apatel@ventanamicro.com>
To: Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Paul Walmsley <paul.walmsley@sifive.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
Greg KH <gregkh@linuxfoundation.org>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Ian Rogers <irogers@google.com>
Cc: Mark Rutland <mark.rutland@arm.com>,
devicetree@vger.kernel.org, Alexandre Ghiti <alex@ghiti.fr>,
Atish Patra <atish.patra@linux.dev>,
Peter Zijlstra <peterz@infradead.org>,
Anup Patel <anup@brainfault.org>,
Adrian Hunter <adrian.hunter@intel.com>,
linux-kernel@vger.kernel.org, Ingo Molnar <mingo@redhat.com>,
Jiri Olsa <jolsa@kernel.org>,
Anup Patel <apatel@ventanamicro.com>,
Mayuresh Chitale <mchitale@gmail.com>,
Namhyung Kim <namhyung@kernel.org>,
linux-riscv@lists.infradead.org,
Andrew Jones <ajones@ventanamicro.com>,
Liang Kan <kan.liang@linux.intel.com>
Subject: [PATCH 00/11] Linux RISC-V trace framework and drivers
Date: Thu, 2 Oct 2025 11:37:21 +0530 [thread overview]
Message-ID: <20251002060732.100213-1-apatel@ventanamicro.com> (raw)
This series adds initial support for RISC-V trace framework and drivers.
The RISC-V trace v1.0 specification is already ratified and can be found at:
https://github.com/riscv-non-isa/e-trace-encap/releases/tag/v1.0.0-ratified
https://github.com/riscv-non-isa/tg-nexus-trace/releases/tag/1.0_Ratified
The RISC-V trace framework and drivers are designed to be agnostic to the
underlying trace protocol hence both RISC-V E-trace and RISC-V N-trace should
work fine. The discovery of trace protocl parameters are left to user-space
trace decoder.
In ther future, there will be subsequent series adding:
1) Sysfs support
2) ACPI support
3) More trace drivers (such as funnel, ATB, etc)
4) Support for upcoming self-hosted trace specification
5) ... and more ...
These patches can also be found in the riscv_trace_support_v1 branch at:
https://github.com/avpatel/linux.git
To test the patches, we need QEMU virt machine with RISC-V trace support
which can be found in rv-etrace branch at:
https://gitlab.com/danielhb/qemu.git
To capture rvtrace data using perf on QEMU virt machine do the following:
1) Launch QEMU virt machine
$ qemu-system-riscv64 -nographic -M virt -smp 2 -bios fw_dynamic.bin \
-kernel Image -append "root=/dev/vda rw console=ttyS0 earlycon=sbi" \
-drive file=/path/to/rootfs.img,id=disk1,if=none,format=raw \
-device virtio-blk-device,drive=disk1
2) Run perf record to capture rvtrace data
$ perf record --all-cpus -e rvtrace/event=0x1/ <command>
3) The step2 would create a perf.data file which has the rvtrace data.
Now run perf report -D and look for PERF_RECORD_AUXTRACE event
section(s) which point(s) to the actual rvtrace data offset.
Anup Patel (5):
dt-bindings: Add RISC-V trace component bindings
rvtrace: Initial implementation of driver framework
rvtrace: Add functions to create/destroy a trace component path
rvtrace: Add function to copy into perf AUX buffer
MAINTAINERS: Add entry for RISC-V trace framework and drivers
Mayuresh Chitale (6):
rvtrace: Add functions to start/stop tracing on a component path
rvtrace: Add trace encoder driver
rvtrace: Add trace ramsink driver
rvtrace: Add perf driver for tracing using perf tool
perf tools: Add RISC-V trace PMU record capabilities
perf tools: Initial support for RISC-V trace decoder
.../bindings/riscv/riscv,trace-component.yaml | 110 +++
MAINTAINERS | 11 +
drivers/Makefile | 1 +
drivers/hwtracing/Kconfig | 2 +
drivers/hwtracing/rvtrace/Kconfig | 32 +
drivers/hwtracing/rvtrace/Makefile | 6 +
drivers/hwtracing/rvtrace/rvtrace-core.c | 781 ++++++++++++++++++
drivers/hwtracing/rvtrace/rvtrace-encoder.c | 107 +++
drivers/hwtracing/rvtrace/rvtrace-perf.c | 343 ++++++++
drivers/hwtracing/rvtrace/rvtrace-platform.c | 174 ++++
drivers/hwtracing/rvtrace/rvtrace-ramsink.c | 198 +++++
include/linux/rvtrace.h | 341 ++++++++
tools/perf/arch/riscv/util/Build | 1 +
tools/perf/arch/riscv/util/auxtrace.c | 218 +++++
tools/perf/util/Build | 1 +
tools/perf/util/auxtrace.c | 4 +
tools/perf/util/auxtrace.h | 1 +
tools/perf/util/rvtrace-decoder.c | 91 ++
tools/perf/util/rvtrace.h | 20 +
19 files changed, 2442 insertions(+)
create mode 100644 Documentation/devicetree/bindings/riscv/riscv,trace-component.yaml
create mode 100644 drivers/hwtracing/rvtrace/Kconfig
create mode 100644 drivers/hwtracing/rvtrace/Makefile
create mode 100644 drivers/hwtracing/rvtrace/rvtrace-core.c
create mode 100644 drivers/hwtracing/rvtrace/rvtrace-encoder.c
create mode 100644 drivers/hwtracing/rvtrace/rvtrace-perf.c
create mode 100644 drivers/hwtracing/rvtrace/rvtrace-platform.c
create mode 100644 drivers/hwtracing/rvtrace/rvtrace-ramsink.c
create mode 100644 include/linux/rvtrace.h
create mode 100644 tools/perf/arch/riscv/util/auxtrace.c
create mode 100644 tools/perf/util/rvtrace-decoder.c
create mode 100644 tools/perf/util/rvtrace.h
--
2.43.0
_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv
WARNING: multiple messages have this Message-ID (diff)
From: Anup Patel <apatel@ventanamicro.com>
To: Rob Herring <robh@kernel.org>,
Krzysztof Kozlowski <krzk+dt@kernel.org>,
Conor Dooley <conor+dt@kernel.org>,
Paul Walmsley <paul.walmsley@sifive.com>,
Palmer Dabbelt <palmer@dabbelt.com>,
Greg KH <gregkh@linuxfoundation.org>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Ian Rogers <irogers@google.com>
Cc: Alexandre Ghiti <alex@ghiti.fr>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Namhyung Kim <namhyung@kernel.org>,
Mark Rutland <mark.rutland@arm.com>, Jiri Olsa <jolsa@kernel.org>,
Adrian Hunter <adrian.hunter@intel.com>,
Liang Kan <kan.liang@linux.intel.com>,
Mayuresh Chitale <mchitale@gmail.com>,
Anup Patel <anup@brainfault.org>,
Atish Patra <atish.patra@linux.dev>,
Andrew Jones <ajones@ventanamicro.com>,
Sunil V L <sunilvl@ventanamicro.com>,
linux-riscv@lists.infradead.org, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org,
Anup Patel <apatel@ventanamicro.com>
Subject: [PATCH 00/11] Linux RISC-V trace framework and drivers
Date: Thu, 2 Oct 2025 11:37:21 +0530 [thread overview]
Message-ID: <20251002060732.100213-1-apatel@ventanamicro.com> (raw)
This series adds initial support for RISC-V trace framework and drivers.
The RISC-V trace v1.0 specification is already ratified and can be found at:
https://github.com/riscv-non-isa/e-trace-encap/releases/tag/v1.0.0-ratified
https://github.com/riscv-non-isa/tg-nexus-trace/releases/tag/1.0_Ratified
The RISC-V trace framework and drivers are designed to be agnostic to the
underlying trace protocol hence both RISC-V E-trace and RISC-V N-trace should
work fine. The discovery of trace protocl parameters are left to user-space
trace decoder.
In ther future, there will be subsequent series adding:
1) Sysfs support
2) ACPI support
3) More trace drivers (such as funnel, ATB, etc)
4) Support for upcoming self-hosted trace specification
5) ... and more ...
These patches can also be found in the riscv_trace_support_v1 branch at:
https://github.com/avpatel/linux.git
To test the patches, we need QEMU virt machine with RISC-V trace support
which can be found in rv-etrace branch at:
https://gitlab.com/danielhb/qemu.git
To capture rvtrace data using perf on QEMU virt machine do the following:
1) Launch QEMU virt machine
$ qemu-system-riscv64 -nographic -M virt -smp 2 -bios fw_dynamic.bin \
-kernel Image -append "root=/dev/vda rw console=ttyS0 earlycon=sbi" \
-drive file=/path/to/rootfs.img,id=disk1,if=none,format=raw \
-device virtio-blk-device,drive=disk1
2) Run perf record to capture rvtrace data
$ perf record --all-cpus -e rvtrace/event=0x1/ <command>
3) The step2 would create a perf.data file which has the rvtrace data.
Now run perf report -D and look for PERF_RECORD_AUXTRACE event
section(s) which point(s) to the actual rvtrace data offset.
Anup Patel (5):
dt-bindings: Add RISC-V trace component bindings
rvtrace: Initial implementation of driver framework
rvtrace: Add functions to create/destroy a trace component path
rvtrace: Add function to copy into perf AUX buffer
MAINTAINERS: Add entry for RISC-V trace framework and drivers
Mayuresh Chitale (6):
rvtrace: Add functions to start/stop tracing on a component path
rvtrace: Add trace encoder driver
rvtrace: Add trace ramsink driver
rvtrace: Add perf driver for tracing using perf tool
perf tools: Add RISC-V trace PMU record capabilities
perf tools: Initial support for RISC-V trace decoder
.../bindings/riscv/riscv,trace-component.yaml | 110 +++
MAINTAINERS | 11 +
drivers/Makefile | 1 +
drivers/hwtracing/Kconfig | 2 +
drivers/hwtracing/rvtrace/Kconfig | 32 +
drivers/hwtracing/rvtrace/Makefile | 6 +
drivers/hwtracing/rvtrace/rvtrace-core.c | 781 ++++++++++++++++++
drivers/hwtracing/rvtrace/rvtrace-encoder.c | 107 +++
drivers/hwtracing/rvtrace/rvtrace-perf.c | 343 ++++++++
drivers/hwtracing/rvtrace/rvtrace-platform.c | 174 ++++
drivers/hwtracing/rvtrace/rvtrace-ramsink.c | 198 +++++
include/linux/rvtrace.h | 341 ++++++++
tools/perf/arch/riscv/util/Build | 1 +
tools/perf/arch/riscv/util/auxtrace.c | 218 +++++
tools/perf/util/Build | 1 +
tools/perf/util/auxtrace.c | 4 +
tools/perf/util/auxtrace.h | 1 +
tools/perf/util/rvtrace-decoder.c | 91 ++
tools/perf/util/rvtrace.h | 20 +
19 files changed, 2442 insertions(+)
create mode 100644 Documentation/devicetree/bindings/riscv/riscv,trace-component.yaml
create mode 100644 drivers/hwtracing/rvtrace/Kconfig
create mode 100644 drivers/hwtracing/rvtrace/Makefile
create mode 100644 drivers/hwtracing/rvtrace/rvtrace-core.c
create mode 100644 drivers/hwtracing/rvtrace/rvtrace-encoder.c
create mode 100644 drivers/hwtracing/rvtrace/rvtrace-perf.c
create mode 100644 drivers/hwtracing/rvtrace/rvtrace-platform.c
create mode 100644 drivers/hwtracing/rvtrace/rvtrace-ramsink.c
create mode 100644 include/linux/rvtrace.h
create mode 100644 tools/perf/arch/riscv/util/auxtrace.c
create mode 100644 tools/perf/util/rvtrace-decoder.c
create mode 100644 tools/perf/util/rvtrace.h
--
2.43.0
next reply other threads:[~2025-10-02 6:08 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-02 6:07 Anup Patel [this message]
2025-10-02 6:07 ` [PATCH 00/11] Linux RISC-V trace framework and drivers Anup Patel
2025-10-02 6:07 ` [PATCH 01/11] dt-bindings: Add RISC-V trace component bindings Anup Patel
2025-10-02 6:07 ` Anup Patel
2025-10-02 19:25 ` Rob Herring
2025-10-02 19:25 ` Rob Herring
2025-10-09 13:34 ` Anup Patel
2025-10-09 13:34 ` Anup Patel
2025-10-02 6:07 ` [PATCH 02/11] rvtrace: Initial implementation of driver framework Anup Patel
2025-10-02 6:07 ` Anup Patel
2025-10-11 1:07 ` Bo Gan
2025-10-11 1:07 ` Bo Gan
2025-10-30 8:37 ` Anup Patel
2025-10-30 8:37 ` Anup Patel
2026-01-21 7:50 ` Vincent Chen
2026-01-21 7:50 ` Vincent Chen
2026-01-26 13:36 ` Anup Patel
2026-01-26 13:36 ` Anup Patel
2026-01-27 12:19 ` Bo Gan
2026-01-27 12:19 ` Bo Gan
2026-03-13 2:10 ` Vincent Chen
2026-03-13 2:10 ` Vincent Chen
2025-10-02 6:07 ` [PATCH 03/11] rvtrace: Add functions to create/destroy a trace component path Anup Patel
2025-10-02 6:07 ` Anup Patel
2025-10-02 6:07 ` [PATCH 04/11] rvtrace: Add functions to start/stop tracing on a " Anup Patel
2025-10-02 6:07 ` Anup Patel
2025-10-08 9:13 ` Bo Gan
2025-10-08 9:13 ` Bo Gan
2025-10-13 3:43 ` Anup Patel
2025-10-13 3:43 ` Anup Patel
2025-10-13 4:52 ` Bo Gan
2025-10-13 4:52 ` Bo Gan
2025-10-14 8:10 ` Mayuresh Chitale
2025-10-14 8:10 ` Mayuresh Chitale
2025-10-14 8:59 ` Bo Gan
2025-10-14 8:59 ` Bo Gan
2025-10-02 6:07 ` [PATCH 05/11] rvtrace: Add trace encoder driver Anup Patel
2025-10-02 6:07 ` Anup Patel
2025-10-07 7:09 ` Bo Gan
2025-10-07 7:09 ` Bo Gan
2025-10-08 8:48 ` Bo Gan
2025-10-08 8:48 ` Bo Gan
[not found] ` <CAN37VV7uBkRzYsQcgGtw_iFg=za91OH7_1OSJ+b8eeuCzL5iDw@mail.gmail.com>
2025-10-08 9:51 ` Bo Gan
2025-10-08 9:51 ` Bo Gan
2025-10-02 6:07 ` [PATCH 06/11] rvtrace: Add function to copy into perf AUX buffer Anup Patel
2025-10-02 6:07 ` Anup Patel
2025-10-02 6:07 ` [PATCH 07/11] rvtrace: Add trace ramsink driver Anup Patel
2025-10-02 6:07 ` Anup Patel
2025-10-07 7:49 ` Bo Gan
2025-10-07 7:49 ` Bo Gan
[not found] ` <CAN37VV5J2+gzpraR2NhaJBNfQ3dPsr-72Mmg03+ykcLoouZ8_Q@mail.gmail.com>
2025-10-11 0:41 ` Bo Gan
2025-10-11 0:41 ` Bo Gan
2025-10-13 13:38 ` Mayuresh Chitale
2025-10-13 13:38 ` Mayuresh Chitale
2025-10-02 6:07 ` [PATCH 08/11] rvtrace: Add perf driver for tracing using perf tool Anup Patel
2025-10-02 6:07 ` Anup Patel
2025-10-02 6:07 ` [PATCH 09/11] perf tools: Add RISC-V trace PMU record capabilities Anup Patel
2025-10-02 6:07 ` Anup Patel
2025-10-02 6:07 ` [PATCH 10/11] perf tools: Initial support for RISC-V trace decoder Anup Patel
2025-10-02 6:07 ` Anup Patel
2025-10-02 6:07 ` [PATCH 11/11] MAINTAINERS: Add entry for RISC-V trace framework and drivers Anup Patel
2025-10-02 6:07 ` Anup Patel
2025-10-02 6:26 ` [PATCH 00/11] Linux " Greg KH
2025-10-02 6:26 ` Greg KH
2025-10-02 6:39 ` Anup Patel
2025-10-02 6:39 ` Anup Patel
2025-10-02 6:44 ` Greg KH
2025-10-02 6:44 ` Greg KH
2025-10-02 20:42 ` Bo Gan
2025-10-02 20:42 ` Bo Gan
2025-10-03 4:15 ` Anup Patel
2025-10-03 4:15 ` Anup Patel
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=20251002060732.100213-1-apatel@ventanamicro.com \
--to=apatel@ventanamicro.com \
--cc=adrian.hunter@intel.com \
--cc=ajones@ventanamicro.com \
--cc=alex@ghiti.fr \
--cc=alexander.shishkin@linux.intel.com \
--cc=anup@brainfault.org \
--cc=atish.patra@linux.dev \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=irogers@google.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=krzk+dt@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=mark.rutland@arm.com \
--cc=mchitale@gmail.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=peterz@infradead.org \
--cc=robh@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.