From: Nam Cao <namcao@linutronix.de>
To: Gabriele Monaco <gmonaco@redhat.com>
Cc: linux-kernel@vger.kernel.org,
Steven Rostedt <rostedt@goodmis.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
linux-trace-kernel@vger.kernel.org,
Ingo Molnar <mingo@redhat.com>,
Peter Zijlstra <peterz@infradead.org>,
Tomas Glozar <tglozar@redhat.com>, Juri Lelli <jlelli@redhat.com>,
Clark Williams <williams@redhat.com>,
John Kacur <jkacur@redhat.com>
Subject: Re: [PATCH v3 08/17] verification/rvgen: Organise Kconfig entries for nested monitors
Date: Tue, 15 Jul 2025 16:48:58 +0200 [thread overview]
Message-ID: <20250715144858.ZS4_m8Qm@linutronix.de> (raw)
In-Reply-To: <20250715071434.22508-9-gmonaco@redhat.com>
On Tue, Jul 15, 2025 at 09:14:25AM +0200, Gabriele Monaco wrote:
> The current behaviour of rvgen when running with the -a option is to
> append the necessary lines at the end of the configuration for Kconfig,
> Makefile and tracepoints.
> This is not always the desired behaviour in case of nested monitors:
> while tracepoints are not affected by nesting and the Makefile's only
> requirement is that the parent monitor is built before its children, in
> the Kconfig it is better to have children defined right after their
> parent, otherwise the result has wrong indentation:
>
> [*] foo_parent monitor
> [*] foo_child1 monitor
> [*] foo_child2 monitor
> [*] bar_parent monitor
> [*] bar_child1 monitor
> [*] bar_child2 monitor
> [*] foo_child3 monitor
> [*] foo_child4 monitor
>
> Adapt rvgen to look for a different marker for nested monitors in the
> Kconfig file and append the line right after the last sibling, instead
> of the last monitor.
> Also add the marker when creating a new parent monitor.
>
> Signed-off-by: Gabriele Monaco <gmonaco@redhat.com>
> ---
> kernel/trace/rv/Kconfig | 5 +++++
> tools/verification/rvgen/rvgen/container.py | 13 +++++++++++++
> tools/verification/rvgen/rvgen/generator.py | 13 ++++++++-----
> 3 files changed, 26 insertions(+), 5 deletions(-)
>
> diff --git a/kernel/trace/rv/Kconfig b/kernel/trace/rv/Kconfig
> index c11bf7e61ebf0..26017378f79b8 100644
> --- a/kernel/trace/rv/Kconfig
> +++ b/kernel/trace/rv/Kconfig
> @@ -43,6 +43,7 @@ config RV_PER_TASK_MONITORS
>
> source "kernel/trace/rv/monitors/wip/Kconfig"
> source "kernel/trace/rv/monitors/wwnr/Kconfig"
> +
> source "kernel/trace/rv/monitors/sched/Kconfig"
> source "kernel/trace/rv/monitors/tss/Kconfig"
> source "kernel/trace/rv/monitors/sco/Kconfig"
> @@ -50,9 +51,13 @@ source "kernel/trace/rv/monitors/snroc/Kconfig"
> source "kernel/trace/rv/monitors/scpd/Kconfig"
> source "kernel/trace/rv/monitors/snep/Kconfig"
> source "kernel/trace/rv/monitors/sncid/Kconfig"
> +# Add new sched monitors here
> +
> source "kernel/trace/rv/monitors/rtapp/Kconfig"
> source "kernel/trace/rv/monitors/pagefault/Kconfig"
> source "kernel/trace/rv/monitors/sleep/Kconfig"
> +# Add new rtapp monitors here
> +
> # Add new monitors here
>
> config RV_REACTORS
> diff --git a/tools/verification/rvgen/rvgen/container.py b/tools/verification/rvgen/rvgen/container.py
> index 47d8ab2ad3ec4..fee493f89fde6 100644
> --- a/tools/verification/rvgen/rvgen/container.py
> +++ b/tools/verification/rvgen/rvgen/container.py
> @@ -20,3 +20,16 @@ class Container(generator.RVGenerator):
> main_h = self.main_h
> main_h = main_h.replace("%%MODEL_NAME%%", self.name)
> return main_h
> +
> + def fill_kconfig_tooltip(self):
> + """Override to produce a marker for this container in the Kconfig"""
> + container_marker = f"# Add new {self.name} monitors here\n"
> + if self.auto_patch:
> + self._patch_file("Kconfig",
> + "# Add new monitors here", "")
Isn't this one excessive? I gave it a try, but I had double blank line:
python3 tools/verification/rvgen -a container -n hello
61 source "kernel/trace/rv/monitors/sleep/Kconfig"
62 # Add new rtapp monitors here
63
+ 64
+ 65 source "kernel/trace/rv/monitors/hello/Kconfig"
+ 66 # Add new hello monitors here
+ 67
68 # Add new monitors here
69
70 config RV_REACTORS
> + result = super().fill_kconfig_tooltip()
> + if self.auto_patch:
> + self._patch_file("Kconfig",
> + "# Add new monitors here", container_marker)
> + return result
> + return result + container_marker
> diff --git a/tools/verification/rvgen/rvgen/generator.py b/tools/verification/rvgen/rvgen/generator.py
> index 19d0078a38032..ac97c4505ff00 100644
> --- a/tools/verification/rvgen/rvgen/generator.py
> +++ b/tools/verification/rvgen/rvgen/generator.py
> @@ -137,7 +137,8 @@ class RVGenerator:
> kconfig = kconfig.replace("%%MONITOR_DEPS%%", monitor_deps)
> return kconfig
>
> - def __patch_file(self, file, marker, line):
> + def _patch_file(self, file, marker, line):
> + assert(self.auto_patch)
> file_to_patch = os.path.join(self.rv_dir, file)
> content = self._read_file(file_to_patch)
> content = content.replace(marker, line + "\n" + marker)
> @@ -146,7 +147,7 @@ class RVGenerator:
> def fill_tracepoint_tooltip(self):
> monitor_class_type = self.fill_monitor_class_type()
> if self.auto_patch:
> - self.__patch_file("rv_trace.h",
> + self._patch_file("rv_trace.h",
> "// Add new monitors based on CONFIG_%s here" % monitor_class_type,
> "#include <monitors/%s/%s_trace.h>" % (self.name, self.name))
> return " - Patching %s/rv_trace.h, double check the result" % self.rv_dir
> @@ -158,8 +159,10 @@ Add this line where other tracepoints are included and %s is defined:
>
> def fill_kconfig_tooltip(self):
> if self.auto_patch:
> - self.__patch_file("Kconfig",
> - "# Add new monitors here",
> + # monitors with a container should stay together in the Kconfig
> + self._patch_file("Kconfig",
> + "# Add new %smonitors here" %
> + (self.parent + " " if self.parent else ""),
This one must be kept in sync with container_marker in
Container.fill_kconfig_tooltip(). I think this is hard to maintain later
on.
How about we keep in centralized with a helper function, something like:
def container_marker(container: str) -> str:
return f"# Add new {container} monitors here\n"
Nam
next prev parent reply other threads:[~2025-07-15 14:49 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-07-15 7:14 [PATCH v3 00/17] rv: Add monitors to validate task switch Gabriele Monaco
2025-07-15 7:14 ` [PATCH v3 01/17] tools/rv: Do not skip idle in trace Gabriele Monaco
2025-07-16 11:50 ` Peter Zijlstra
2025-07-16 12:18 ` Gabriele Monaco
2025-07-16 12:41 ` Peter Zijlstra
2025-07-16 13:05 ` Gabriele Monaco
2025-07-16 13:08 ` Peter Zijlstra
2025-07-16 13:13 ` Gabriele Monaco
2025-07-15 7:14 ` [PATCH v3 02/17] tools/rv: Stop gracefully also on SIGTERM Gabriele Monaco
2025-07-15 7:14 ` [PATCH v3 03/17] rv: Add da_handle_start_run_event_ to per-task monitors Gabriele Monaco
2025-07-15 7:14 ` [PATCH v3 04/17] rv: Remove trailing whitespace from tracepoint string Gabriele Monaco
2025-07-15 7:14 ` [PATCH v3 05/17] rv: Return init error when registering monitors Gabriele Monaco
2025-07-15 7:14 ` [PATCH v3 06/17] rv: Use strings in da monitors tracepoints Gabriele Monaco
2025-07-15 14:11 ` Nam Cao
2025-07-15 7:14 ` [PATCH v3 07/17] rv: Adjust monitor dependencies Gabriele Monaco
2025-07-16 8:19 ` Nam Cao
2025-07-16 8:30 ` Gabriele Monaco
2025-07-15 7:14 ` [PATCH v3 08/17] verification/rvgen: Organise Kconfig entries for nested monitors Gabriele Monaco
2025-07-15 14:48 ` Nam Cao [this message]
2025-07-16 7:40 ` Gabriele Monaco
2025-07-15 7:14 ` [PATCH v3 09/17] tools/dot2c: Fix generated files going over 100 column limit Gabriele Monaco
2025-07-15 15:01 ` Nam Cao
[not found] ` <d69862275becf1d296c80a08b29b2081857a85a1.camel@redhat.com>
2025-07-16 9:34 ` Nam Cao
2025-07-15 7:14 ` [PATCH v3 10/17] rv: " Gabriele Monaco
2025-07-15 15:08 ` Nam Cao
2025-07-15 15:24 ` Gabriele Monaco
2025-07-16 8:13 ` Nam Cao
2025-07-16 9:07 ` Gabriele Monaco
2025-07-15 7:14 ` [PATCH v3 11/17] rv: Retry when da monitor detects race conditions Gabriele Monaco
2025-07-15 15:23 ` Nam Cao
2025-07-16 8:20 ` Gabriele Monaco
2025-07-16 8:27 ` Nam Cao
2025-07-16 8:38 ` Gabriele Monaco
2025-07-16 8:45 ` Nam Cao
2025-07-16 8:59 ` Gabriele Monaco
2025-07-16 9:02 ` Nam Cao
2025-07-15 7:14 ` [PATCH v3 12/17] sched: Adapt sched tracepoints for RV task model Gabriele Monaco
2025-07-16 12:38 ` Peter Zijlstra
2025-07-16 13:40 ` Gabriele Monaco
2025-07-16 13:45 ` Peter Zijlstra
2025-07-16 14:07 ` Gabriele Monaco
2025-07-16 14:19 ` Peter Zijlstra
2025-07-16 14:38 ` Gabriele Monaco
2025-07-16 15:31 ` Peter Zijlstra
2025-07-16 16:14 ` Gabriele Monaco
2025-07-16 15:09 ` Gabriele Monaco
2025-07-16 15:47 ` Peter Zijlstra
2025-07-15 7:14 ` [PATCH v3 13/17] rv: Adapt the sco monitor to the new set_state Gabriele Monaco
2025-07-15 7:14 ` [PATCH v3 14/17] rv: Extend snroc model Gabriele Monaco
2025-07-15 7:14 ` [PATCH v3 15/17] rv: Replace tss monitor with more complete sts Gabriele Monaco
2025-07-15 7:14 ` [PATCH v3 16/17] rv: Add nrp and sssw per-task monitors Gabriele Monaco
2025-07-15 7:14 ` [PATCH v3 17/17] rv: Add opid per-cpu monitor Gabriele Monaco
2025-07-16 9:38 ` Nam Cao
2025-07-16 10:00 ` Gabriele Monaco
2025-07-18 10:26 ` Gabriele Monaco
2025-07-16 9:42 ` [PATCH v3 00/17] rv: Add monitors to validate task switch Nam Cao
2025-07-16 12:20 ` Gabriele Monaco
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=20250715144858.ZS4_m8Qm@linutronix.de \
--to=namcao@linutronix.de \
--cc=gmonaco@redhat.com \
--cc=jkacur@redhat.com \
--cc=jlelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=tglozar@redhat.com \
--cc=williams@redhat.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.