mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: John Ogness <john.ogness@linutronix.de>
To: Gabriele Monaco <gmonaco@redhat.com>,
	Steven Rostedt <rostedt@goodmis.org>
Cc: Nam Cao <namcao@linutronix.de>, Tomas Glozar <tglozar@redhat.com>,
	Alexei Starovoitov <alexei.starovoitov@gmail.com>,
	linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org,
	bpf@vger.kernel.org, Wen Yang <wen.yang@linux.dev>,
	Tobias Schaffner <tobias.schaffner@siemens.com>,
	Viktor Malik <vmalik@redhat.com>
Subject: Re: [PATCH v2 10/15] tools/rv: Add BPF monitors
Date: Thu, 22 Oct 2026 10:21:42 +0206	[thread overview]
Message-ID: <874ieetakx.fsf@jogness.linutronix.de> (raw)
In-Reply-To: <f147fa9dfc553767ce92802b66723a85cf804e46.camel@redhat.com>

On 2026-10-22, Gabriele Monaco <gmonaco@redhat.com> wrote:
>> I am wondering if coexistence should be the goal. For example, the
>> monitor classes (DA, LTL, HTA) are only implemented in the kernel and
>> provide kfuncs for the state transition functions to be available to BPF
>> monitors. I would expect that this would allow BPF monitors to have the
>> full functionality as in-kernel monitors, since the events, errors, and
>> reactors would all trigger from the monitor class code.
>
> Well, this would be yet another hybrid requiring BPF monitors registration in
> the kernel like I proposed in the RFC [1], which was the main point of
> contention (that fully shared reactors and sysfs interface, by the way).

I think there is a difference, because the registration could be via
kfunc interface rather than requiring kernel patches. Similarly, the
kernel is able to load drivers that it does not know about it advance.

> For this I would argue, though, that such monitors would be BPF just
> on paper, we wouldn't be able to use many advantages BPF provides
> (e.g. BPF maps).

It seems to me that your main motivation of BPF is to move the
RV-machinery into BPF. For example, moving include/rv/ltl_monitor.h into
BPF. But that code should not require the flexibility that BPF
offers. It is the monitors themselves that I think benefit from BPF. For
example, kernel/trace/rv/monitors/wakeup/wakeup.c

I do not understand why you would call it BPF on paper, when the
semantics of the states and transitions is all coded in BPF. Everything
that makes two monitors using the same monitor class different from each
other. Only the generic state machine (with its tracepoints for events
and errors) and calling of reactors is in the kernel.

> The current implementation already shares the header with in-kernel monitors, so
> the actual logic is shared.

When you say "shared" you really mean "copied". If it was "shared" (in
the kernel) then the whole tracepoint/reactor topic would nearly solve
itself.

> Besides, we'd need to be extra careful on controlling the callers. Right now
> handlers are static, so it's easier to make sure no rogue caller messes up with
> monitoring.

That problem is orthogonal. But I expect kfunc flags, capabilities,
and/or signed BPF objects will be the direction to take.

The reason for my suggestion of a "true" hybrid approach is because I
feel like you were trying to completely relocate RV to BPF, and now due
to the tracepoint/reactor requirements, we're trying to find some hacks
to somehow make it work good enough.

I was suggesting to take a step back and consider an approach where
there are in-kernel pieces to leverage the benefits of in-kernel
(generic state machine, tracepoints, reactors) and BPF pieces to
leverage the benefits of BPF (freedom to define the semantics of states
and transitions for any domain-specific monitor).

John

  reply	other threads:[~2026-10-22  8:15 UTC|newest]

Thread overview: 86+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-01 15:20 [PATCH v2 00/15] rv: Add support for " Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 01/15] sched: Add task enqueue/dequeue trace points Gabriele Monaco
2026-10-01 15:49   ` Peter Zijlstra
2026-10-02  7:09     ` Gabriele Monaco
2026-10-02 10:29       ` Peter Zijlstra
2026-10-02 11:55         ` Gabriele Monaco
2026-10-02 19:18           ` Peter Zijlstra
2026-10-02 19:40             ` Gabriele Monaco
2026-10-04  7:57             ` Steven Rostedt
2026-10-12 11:54               ` Peter Zijlstra
2026-10-04  7:45         ` Steven Rostedt
2026-10-12 11:49           ` Peter Zijlstra
2026-10-02  0:42   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 02/15] tools/rv: Skip empty pid error in selftest if command failed Gabriele Monaco
2026-10-02  0:42   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 03/15] rv: Refactor da_trace() functions to get strings internally Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 04/15] rv: Cast result of model_get_*_name() Gabriele Monaco
2026-10-13  6:14   ` Nam Cao
2026-10-13  8:15     ` Gabriele Monaco
2026-10-14  9:52     ` Gabriele Monaco
2026-10-14 10:02       ` Nam Cao
2026-10-01 15:20 ` [PATCH v2 05/15] tools/rv: Move argument parsing from in_kernel to utils Gabriele Monaco
2026-10-02  0:25   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 06/15] tools/build: Add a feature test for bpftool-btf Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 07/15] tools/rv: Implement BPF monitor discovery and listing Gabriele Monaco
2026-10-02  0:42   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 08/15] tools/rv: Implement BPF monitor loading and tracing Gabriele Monaco
2026-10-02  0:43   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 09/15] tools/rv: Copy stripped bpf_atomic.h from libarena Gabriele Monaco
2026-10-02  0:42   ` bot+bpf-ci
2026-10-07 12:59   ` Nam Cao
2026-10-08  9:00     ` Gabriele Monaco
2026-10-08 11:16       ` Nam Cao
2026-10-09 10:09         ` Gabriele Monaco
2026-10-11  0:43           ` Steven Rostedt
2026-10-12  7:43             ` Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 10/15] tools/rv: Add BPF monitors Gabriele Monaco
2026-10-02  0:43   ` bot+bpf-ci
2026-10-06 13:29   ` Alexei Starovoitov
2026-10-08  9:54     ` Gabriele Monaco
2026-10-16 18:32       ` Alexei Starovoitov
2026-10-16 19:20         ` John Ogness
2026-10-17 10:42           ` Gabriele Monaco
2026-10-17 15:17             ` John Ogness
2026-10-17 16:09               ` Alexei Starovoitov
2026-10-17 16:56                 ` John Ogness
2026-10-17 23:25                   ` Alexei Starovoitov
2026-10-18 12:10                     ` John Ogness
2026-10-19  9:05                       ` Gabriele Monaco
2026-10-19  9:27                         ` John Ogness
2026-10-19  9:46                           ` Tomas Glozar
2026-10-19 13:16                           ` Steven Rostedt
2026-10-19 10:01                         ` Tomas Glozar
2026-10-19 10:43                           ` Gabriele Monaco
2026-10-19 11:05                             ` Tomas Glozar
2026-10-19 12:47                               ` Gabriele Monaco
2026-10-19 13:05                                 ` Tomas Glozar
2026-10-21  7:26                                   ` Nam Cao
2026-10-19 13:02                               ` John Ogness
2026-10-20  7:29                                 ` Gabriele Monaco
2026-10-21  8:01                                   ` Nam Cao
2026-10-21 11:54                                     ` Gabriele Monaco
2026-10-21 13:48                                       ` Steven Rostedt
2026-10-21 15:24                                         ` Gabriele Monaco
2026-10-21 16:47                                           ` John Ogness
2026-10-22  6:46                                             ` Gabriele Monaco
2026-10-22  8:15                                               ` John Ogness [this message]
2026-10-22  8:25                                               ` Nam Cao
2026-10-19  8:33               ` Gabriele Monaco
2026-10-19  9:10                 ` John Ogness
2026-10-19 10:48                   ` Gabriele Monaco
2026-10-19 12:51                   ` Nam Cao
2026-10-19 13:14                     ` John Ogness
2026-10-21  8:13                       ` Nam Cao
2026-10-21  8:46                         ` Gabriele Monaco
2026-10-21 11:12                           ` Nam Cao
2026-10-21 15:55                             ` Gabriele Monaco
2026-10-17 10:48         ` Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 11/15] tools/rv: Define CONFIG_X86_64 statically for " Gabriele Monaco
2026-10-01 15:20 ` [PATCH v2 12/15] tools/rv: Add reactors support to " Gabriele Monaco
2026-10-02  0:43   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 13/15] verification/rvgen: Add support for " Gabriele Monaco
2026-10-02  0:25   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 14/15] tools/rv: Add selftest for rv bpf monitors Gabriele Monaco
2026-10-02  0:43   ` bot+bpf-ci
2026-10-01 15:20 ` [PATCH v2 15/15] verification/rvgen: Add selftest for rvgen -b 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=874ieetakx.fsf@jogness.linutronix.de \
    --to=john.ogness@linutronix.de \
    --cc=alexei.starovoitov@gmail.com \
    --cc=bpf@vger.kernel.org \
    --cc=gmonaco@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-trace-kernel@vger.kernel.org \
    --cc=namcao@linutronix.de \
    --cc=rostedt@goodmis.org \
    --cc=tglozar@redhat.com \
    --cc=tobias.schaffner@siemens.com \
    --cc=vmalik@redhat.com \
    --cc=wen.yang@linux.dev \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®