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,
Mayuresh Chitale <mchitale@ventanamicro.com>,
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 06/11] rvtrace: Add function to copy into perf AUX buffer
Date: Thu, 2 Oct 2025 11:37:27 +0530 [thread overview]
Message-ID: <20251002060732.100213-7-apatel@ventanamicro.com> (raw)
In-Reply-To: <20251002060732.100213-1-apatel@ventanamicro.com>
The RISC-V trace ramsink will need a mechanism to copy trace data
into the perf AUX buffer. Add rvtrace_path_copyto_auxbuf() function
and corresponding trace driver callback copyto_auxbuf() for this
purpose.
Co-developed-by: Mayuresh Chitale <mchitale@ventanamicro.com>
Signed-off-by: Mayuresh Chitale <mchitale@ventanamicro.com>
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
---
drivers/hwtracing/rvtrace/rvtrace-core.c | 22 ++++++++++++++++++++++
include/linux/rvtrace.h | 21 +++++++++++++++++++++
2 files changed, 43 insertions(+)
diff --git a/drivers/hwtracing/rvtrace/rvtrace-core.c b/drivers/hwtracing/rvtrace/rvtrace-core.c
index 109be40d4b24..e874899c8b43 100644
--- a/drivers/hwtracing/rvtrace/rvtrace-core.c
+++ b/drivers/hwtracing/rvtrace/rvtrace-core.c
@@ -658,6 +658,28 @@ int rvtrace_path_stop(struct rvtrace_path *path)
}
EXPORT_SYMBOL_GPL(rvtrace_path_stop);
+int rvtrace_path_copyto_auxbuf(struct rvtrace_path *path,
+ struct rvtrace_perf_auxbuf *buf,
+ size_t *bytes_copied)
+{
+ const struct rvtrace_driver *rtdrv;
+ struct rvtrace_component *comp;
+ struct rvtrace_path_node *node;
+
+ list_for_each_entry(node, &path->comp_list, head) {
+ comp = node->comp;
+ rtdrv = to_rvtrace_driver(comp->dev.driver);
+ if (!rtdrv->copyto_auxbuf)
+ continue;
+
+ *bytes_copied = rtdrv->copyto_auxbuf(comp, buf);
+ return 0;
+ }
+
+ return -EOPNOTSUPP;
+}
+EXPORT_SYMBOL_GPL(rvtrace_path_copyto_auxbuf);
+
struct rvtrace_path *rvtrace_create_path(struct rvtrace_component *source,
struct rvtrace_component *sink,
enum rvtrace_component_mode mode)
diff --git a/include/linux/rvtrace.h b/include/linux/rvtrace.h
index e7bd335d388f..17d2fd9234c2 100644
--- a/include/linux/rvtrace.h
+++ b/include/linux/rvtrace.h
@@ -276,9 +276,28 @@ void rvtrace_destroy_path(struct rvtrace_path *path);
int rvtrace_path_start(struct rvtrace_path *path);
int rvtrace_path_stop(struct rvtrace_path *path);
+/**
+ * struct rvtrace_perf_auxbuf - Representation of the perf AUX buffer
+ * @length: size of the AUX buffer
+ * @nr_pages: number of pages of the AUX buffer
+ * @base: start address of AUX buffer
+ * @pos: position in the AUX buffer to commit traced data
+ */
+struct rvtrace_perf_auxbuf {
+ size_t length;
+ int nr_pages;
+ void *base;
+ long pos;
+};
+
+int rvtrace_path_copyto_auxbuf(struct rvtrace_path *path,
+ struct rvtrace_perf_auxbuf *buf,
+ size_t *bytes_copied);
+
/**
* struct rvtrace_driver - Representation of a RISC-V trace driver
* id_table: Table to match components handled by the driver
+ * copyto_auxbuf:Callback to copy data into perf AUX buffer
* start: Callback to start tracing
* stop: Callback to stop tracing
* probe: Driver probe() function
@@ -289,6 +308,8 @@ int rvtrace_path_stop(struct rvtrace_path *path);
*/
struct rvtrace_driver {
const struct rvtrace_component_id *id_table;
+ size_t (*copyto_auxbuf)(struct rvtrace_component *comp,
+ struct rvtrace_perf_auxbuf *buf);
int (*start)(struct rvtrace_component *comp);
int (*stop)(struct rvtrace_component *comp);
int (*probe)(struct rvtrace_component *comp);
--
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>,
Mayuresh Chitale <mchitale@ventanamicro.com>
Subject: [PATCH 06/11] rvtrace: Add function to copy into perf AUX buffer
Date: Thu, 2 Oct 2025 11:37:27 +0530 [thread overview]
Message-ID: <20251002060732.100213-7-apatel@ventanamicro.com> (raw)
In-Reply-To: <20251002060732.100213-1-apatel@ventanamicro.com>
The RISC-V trace ramsink will need a mechanism to copy trace data
into the perf AUX buffer. Add rvtrace_path_copyto_auxbuf() function
and corresponding trace driver callback copyto_auxbuf() for this
purpose.
Co-developed-by: Mayuresh Chitale <mchitale@ventanamicro.com>
Signed-off-by: Mayuresh Chitale <mchitale@ventanamicro.com>
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
---
drivers/hwtracing/rvtrace/rvtrace-core.c | 22 ++++++++++++++++++++++
include/linux/rvtrace.h | 21 +++++++++++++++++++++
2 files changed, 43 insertions(+)
diff --git a/drivers/hwtracing/rvtrace/rvtrace-core.c b/drivers/hwtracing/rvtrace/rvtrace-core.c
index 109be40d4b24..e874899c8b43 100644
--- a/drivers/hwtracing/rvtrace/rvtrace-core.c
+++ b/drivers/hwtracing/rvtrace/rvtrace-core.c
@@ -658,6 +658,28 @@ int rvtrace_path_stop(struct rvtrace_path *path)
}
EXPORT_SYMBOL_GPL(rvtrace_path_stop);
+int rvtrace_path_copyto_auxbuf(struct rvtrace_path *path,
+ struct rvtrace_perf_auxbuf *buf,
+ size_t *bytes_copied)
+{
+ const struct rvtrace_driver *rtdrv;
+ struct rvtrace_component *comp;
+ struct rvtrace_path_node *node;
+
+ list_for_each_entry(node, &path->comp_list, head) {
+ comp = node->comp;
+ rtdrv = to_rvtrace_driver(comp->dev.driver);
+ if (!rtdrv->copyto_auxbuf)
+ continue;
+
+ *bytes_copied = rtdrv->copyto_auxbuf(comp, buf);
+ return 0;
+ }
+
+ return -EOPNOTSUPP;
+}
+EXPORT_SYMBOL_GPL(rvtrace_path_copyto_auxbuf);
+
struct rvtrace_path *rvtrace_create_path(struct rvtrace_component *source,
struct rvtrace_component *sink,
enum rvtrace_component_mode mode)
diff --git a/include/linux/rvtrace.h b/include/linux/rvtrace.h
index e7bd335d388f..17d2fd9234c2 100644
--- a/include/linux/rvtrace.h
+++ b/include/linux/rvtrace.h
@@ -276,9 +276,28 @@ void rvtrace_destroy_path(struct rvtrace_path *path);
int rvtrace_path_start(struct rvtrace_path *path);
int rvtrace_path_stop(struct rvtrace_path *path);
+/**
+ * struct rvtrace_perf_auxbuf - Representation of the perf AUX buffer
+ * @length: size of the AUX buffer
+ * @nr_pages: number of pages of the AUX buffer
+ * @base: start address of AUX buffer
+ * @pos: position in the AUX buffer to commit traced data
+ */
+struct rvtrace_perf_auxbuf {
+ size_t length;
+ int nr_pages;
+ void *base;
+ long pos;
+};
+
+int rvtrace_path_copyto_auxbuf(struct rvtrace_path *path,
+ struct rvtrace_perf_auxbuf *buf,
+ size_t *bytes_copied);
+
/**
* struct rvtrace_driver - Representation of a RISC-V trace driver
* id_table: Table to match components handled by the driver
+ * copyto_auxbuf:Callback to copy data into perf AUX buffer
* start: Callback to start tracing
* stop: Callback to stop tracing
* probe: Driver probe() function
@@ -289,6 +308,8 @@ int rvtrace_path_stop(struct rvtrace_path *path);
*/
struct rvtrace_driver {
const struct rvtrace_component_id *id_table;
+ size_t (*copyto_auxbuf)(struct rvtrace_component *comp,
+ struct rvtrace_perf_auxbuf *buf);
int (*start)(struct rvtrace_component *comp);
int (*stop)(struct rvtrace_component *comp);
int (*probe)(struct rvtrace_component *comp);
--
2.43.0
next prev parent reply other threads:[~2025-10-02 6:09 UTC|newest]
Thread overview: 72+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-02 6:07 [PATCH 00/11] Linux RISC-V trace framework and drivers Anup Patel
2025-10-02 6:07 ` 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 ` Anup Patel [this message]
2025-10-02 6:07 ` [PATCH 06/11] rvtrace: Add function to copy into perf AUX buffer 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-7-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=mchitale@ventanamicro.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.