All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sergey Matyukevich <geomatsi@gmail.com>
To: Anup Patel <anup.patel@oss.qualcomm.com>
Cc: Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Paul Walmsley <pjw@kernel.org>,
	Greg KH <gregkh@linuxfoundation.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Ian Rogers <irogers@google.com>, 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>,
	Mayuresh Chitale <mchitale@gmail.com>,
	Anup Patel <anup@brainfault.org>,
	Atish Patra <atish.patra@linux.dev>,
	Andrew Jones <andrew.jones@oss.qualcomm.com>,
	Sunil V L <sunilvl@oss.qualcomm.com>,
	linux-riscv@lists.infradead.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Mayuresh Chitale <mayuresh.chitale@oss.qualcomm.com>
Subject: Re: [PATCH v4 03/12] rvtrace: Add functions to create/destroy a trace component path
Date: Fri, 22 May 2026 22:55:19 +0300	[thread overview]
Message-ID: <ahC0p0QTCQiFG-SX@curiosity> (raw)
In-Reply-To: <20260429125135.1983498-4-anup.patel@oss.qualcomm.com>

> Trace needs to be configured on a chain of trace components which are
> connected to each other. These chain of components is also referred
> to as trace component path. Add functions to create/destroy a trace
> component path which will be later used by RISC-V trace perf support.
> 
> Co-developed-by: Mayuresh Chitale <mayuresh.chitale@oss.qualcomm.com>
> Signed-off-by: Mayuresh Chitale <mayuresh.chitale@oss.qualcomm.com>
> Signed-off-by: Anup Patel <anup.patel@oss.qualcomm.com>
> ---
>  drivers/hwtracing/rvtrace/rvtrace-core.c | 223 +++++++++++++++++++++++
>  include/linux/rvtrace.h                  |  43 ++++-
>  2 files changed, 264 insertions(+), 2 deletions(-)

...


I have been playing with a bit more complicated rvtrace graph with one
source (encoder) and two sinks (ramsink and simple test atb bridge sink)
with the following encoder output ports:

:    trace@c000000 {
:      compatible = "qemu,trace-component", "riscv,trace-component";
:      reg = <0xc000000 0x1000>;
:      cpus = <&CPU0>;
:
:      out-ports {
:        port@0 {
:          reg = <0>;
:          CPU0_ENCODER_RAMSINK_OUTPUT: endpoint {
:            remote-endpoint = <&CPU0_RAMSINK_INPUT>;
:          };
:        };
:        port@1 {
:          reg = <1>;
:          CPU0_ENCODER_TEST_OUTPUT: endpoint {
:            remote-endpoint = <&CPU0_TEST_INPUT>;
:          };
:        };
:      };
:    };

In this case the first output port is enabled, but the second one is
not.

> +static int build_path_walk_fn(struct rvtrace_component *comp, bool *stop,
> +			      struct rvtrace_connection *stop_conn,
> +			      void *priv)
> +{
> +	struct build_path_walk_priv *ppriv = priv;
> +	struct rvtrace_path *path = ppriv->path;
> +	struct rvtrace_path_node *node;
> +
> +	if ((!ppriv->sink && rvtrace_is_sink(comp->pdata)) ||
> +	    (ppriv->sink && ppriv->sink == comp))
> +		*stop = true;
> +

IIUC the root cause is that rvtrace_create_path from rvtrace-perf.c,
where the second argument is NULL, selects the first reachable sink.
The function __rvtrace_walk_output_components() walks pdata->outconns[]
in order and stops at the first component where rvtrace_is_sink() is true.
In the example with two sinks we stop at ramsink. As a result, the second
sink is not added to the list and never enabled later on.

> +	if (*stop) {
> +		node = kzalloc_obj(*node);
> +		if (!path)
> +			return -ENOMEM;
> +		INIT_LIST_HEAD(&node->head);
> +		rvtrace_get_component(comp);
> +		node->comp = comp;
> +		node->conn = stop_conn;
> +		list_add(&node->head, &path->comp_list);
> +	}
> +
> +	return 0;
> +}

Regards,
Sergey

_______________________________________________
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: Sergey Matyukevich <geomatsi@gmail.com>
To: Anup Patel <anup.patel@oss.qualcomm.com>
Cc: Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Palmer Dabbelt <palmer@dabbelt.com>,
	Paul Walmsley <pjw@kernel.org>,
	Greg KH <gregkh@linuxfoundation.org>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>,
	Ian Rogers <irogers@google.com>, 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>,
	Mayuresh Chitale <mchitale@gmail.com>,
	Anup Patel <anup@brainfault.org>,
	Atish Patra <atish.patra@linux.dev>,
	Andrew Jones <andrew.jones@oss.qualcomm.com>,
	Sunil V L <sunilvl@oss.qualcomm.com>,
	linux-riscv@lists.infradead.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	Mayuresh Chitale <mayuresh.chitale@oss.qualcomm.com>
Subject: Re: [PATCH v4 03/12] rvtrace: Add functions to create/destroy a trace component path
Date: Fri, 22 May 2026 22:55:19 +0300	[thread overview]
Message-ID: <ahC0p0QTCQiFG-SX@curiosity> (raw)
In-Reply-To: <20260429125135.1983498-4-anup.patel@oss.qualcomm.com>

> Trace needs to be configured on a chain of trace components which are
> connected to each other. These chain of components is also referred
> to as trace component path. Add functions to create/destroy a trace
> component path which will be later used by RISC-V trace perf support.
> 
> Co-developed-by: Mayuresh Chitale <mayuresh.chitale@oss.qualcomm.com>
> Signed-off-by: Mayuresh Chitale <mayuresh.chitale@oss.qualcomm.com>
> Signed-off-by: Anup Patel <anup.patel@oss.qualcomm.com>
> ---
>  drivers/hwtracing/rvtrace/rvtrace-core.c | 223 +++++++++++++++++++++++
>  include/linux/rvtrace.h                  |  43 ++++-
>  2 files changed, 264 insertions(+), 2 deletions(-)

...


I have been playing with a bit more complicated rvtrace graph with one
source (encoder) and two sinks (ramsink and simple test atb bridge sink)
with the following encoder output ports:

:    trace@c000000 {
:      compatible = "qemu,trace-component", "riscv,trace-component";
:      reg = <0xc000000 0x1000>;
:      cpus = <&CPU0>;
:
:      out-ports {
:        port@0 {
:          reg = <0>;
:          CPU0_ENCODER_RAMSINK_OUTPUT: endpoint {
:            remote-endpoint = <&CPU0_RAMSINK_INPUT>;
:          };
:        };
:        port@1 {
:          reg = <1>;
:          CPU0_ENCODER_TEST_OUTPUT: endpoint {
:            remote-endpoint = <&CPU0_TEST_INPUT>;
:          };
:        };
:      };
:    };

In this case the first output port is enabled, but the second one is
not.

> +static int build_path_walk_fn(struct rvtrace_component *comp, bool *stop,
> +			      struct rvtrace_connection *stop_conn,
> +			      void *priv)
> +{
> +	struct build_path_walk_priv *ppriv = priv;
> +	struct rvtrace_path *path = ppriv->path;
> +	struct rvtrace_path_node *node;
> +
> +	if ((!ppriv->sink && rvtrace_is_sink(comp->pdata)) ||
> +	    (ppriv->sink && ppriv->sink == comp))
> +		*stop = true;
> +

IIUC the root cause is that rvtrace_create_path from rvtrace-perf.c,
where the second argument is NULL, selects the first reachable sink.
The function __rvtrace_walk_output_components() walks pdata->outconns[]
in order and stops at the first component where rvtrace_is_sink() is true.
In the example with two sinks we stop at ramsink. As a result, the second
sink is not added to the list and never enabled later on.

> +	if (*stop) {
> +		node = kzalloc_obj(*node);
> +		if (!path)
> +			return -ENOMEM;
> +		INIT_LIST_HEAD(&node->head);
> +		rvtrace_get_component(comp);
> +		node->comp = comp;
> +		node->conn = stop_conn;
> +		list_add(&node->head, &path->comp_list);
> +	}
> +
> +	return 0;
> +}

Regards,
Sergey

  reply	other threads:[~2026-05-22 19:55 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-04-29 12:51 [PATCH v4 00/12] Linux RISC-V trace framework and drivers Anup Patel
2026-04-29 12:51 ` Anup Patel
2026-04-29 12:51 ` [PATCH v4 01/12] dt-bindings: Add RISC-V trace component bindings Anup Patel
2026-04-29 12:51   ` Anup Patel
2026-05-13 17:17   ` Rob Herring (Arm)
2026-05-13 17:17     ` Rob Herring (Arm)
2026-04-29 12:51 ` [PATCH v4 02/12] rvtrace: Initial implementation of driver framework Anup Patel
2026-04-29 12:51   ` Anup Patel
2026-04-29 12:51 ` [PATCH v4 03/12] rvtrace: Add functions to create/destroy a trace component path Anup Patel
2026-04-29 12:51   ` Anup Patel
2026-05-22 19:55   ` Sergey Matyukevich [this message]
2026-05-22 19:55     ` Sergey Matyukevich
2026-04-29 12:51 ` [PATCH v4 04/12] rvtrace: Add functions to start/stop tracing on a " Anup Patel
2026-04-29 12:51   ` Anup Patel
2026-04-29 12:51 ` [PATCH v4 05/12] rvtrace: Add trace encoder driver Anup Patel
2026-04-29 12:51   ` Anup Patel
2026-05-22 18:46   ` Sergey Matyukevich
2026-05-22 18:46     ` Sergey Matyukevich
2026-06-02 11:29     ` Mayuresh Chitale
2026-06-02 11:29       ` Mayuresh Chitale
2026-04-29 12:51 ` [PATCH v4 06/12] rvtrace: Add function to copy into perf AUX buffer Anup Patel
2026-04-29 12:51   ` Anup Patel
2026-04-29 12:51 ` [PATCH v4 07/12] rvtrace: Add trace ramsink driver Anup Patel
2026-04-29 12:51   ` Anup Patel
2026-05-22 18:48   ` Sergey Matyukevich
2026-05-22 18:48     ` Sergey Matyukevich
2026-05-22 20:04   ` Sergey Matyukevich
2026-05-22 20:04     ` Sergey Matyukevich
2026-06-02 11:24     ` Mayuresh Chitale
2026-06-02 11:24       ` Mayuresh Chitale
2026-04-29 12:51 ` [PATCH v4 08/12] riscv: Enable DMA_RESTRICTED_POOL in defconfig Anup Patel
2026-04-29 12:51   ` Anup Patel
2026-04-29 12:51 ` [PATCH v4 09/12] rvtrace: Add perf driver for tracing using perf tool Anup Patel
2026-04-29 12:51   ` Anup Patel
2026-04-29 12:51 ` [PATCH v4 10/12] perf tools: Add RISC-V trace PMU record capabilities Anup Patel
2026-04-29 12:51   ` Anup Patel
2026-05-20 11:30   ` Adrian Hunter
2026-05-20 11:30     ` Adrian Hunter
2026-06-02 11:31     ` Mayuresh Chitale
2026-06-02 11:31       ` Mayuresh Chitale
2026-04-29 12:51 ` [PATCH v4 11/12] perf tools: Initial support for RISC-V trace decoder Anup Patel
2026-04-29 12:51   ` Anup Patel
2026-05-20 11:32   ` Adrian Hunter
2026-05-20 11:32     ` Adrian Hunter
2026-04-29 12:51 ` [PATCH v4 12/12] MAINTAINERS: Add entry for RISC-V trace framework Anup Patel
2026-04-29 12:51   ` Anup Patel
2026-05-19  8:21 ` [PATCH v4 00/12] Linux RISC-V trace framework and drivers Anup Patel
2026-05-19  8:21   ` Anup Patel
2026-05-21  8:32   ` Greg KH
2026-05-21  8:32     ` Greg KH

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=ahC0p0QTCQiFG-SX@curiosity \
    --to=geomatsi@gmail.com \
    --cc=adrian.hunter@intel.com \
    --cc=alex@ghiti.fr \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=andrew.jones@oss.qualcomm.com \
    --cc=anup.patel@oss.qualcomm.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=krzk+dt@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=mark.rutland@arm.com \
    --cc=mayuresh.chitale@oss.qualcomm.com \
    --cc=mchitale@gmail.com \
    --cc=mingo@redhat.com \
    --cc=namhyung@kernel.org \
    --cc=palmer@dabbelt.com \
    --cc=peterz@infradead.org \
    --cc=pjw@kernel.org \
    --cc=robh@kernel.org \
    --cc=sunilvl@oss.qualcomm.com \
    /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.