BPF List
 help / color / mirror / Atom feed
From: Gabriele Monaco <gmonaco@redhat.com>
To: John Ogness <john.ogness@linutronix.de>,
	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 08:46:40 +0200	[thread overview]
Message-ID: <f147fa9dfc553767ce92802b66723a85cf804e46.camel@redhat.com> (raw)
In-Reply-To: <87h5ifvw3p.fsf@jogness.linutronix.de>

On Wed, 2026-10-21 at 18:53 +0206, John Ogness wrote:
> On 2026-10-21, Gabriele Monaco <gmonaco@redhat.com> wrote:
> > > BTW, I'm curious if it isn't possible to keep both in-kernel and BPF
> > > monitors? That is, for those cases that do not change often and has a
> > > well known model, to simply keep those as modules and hard coded.
> > 
> > In my opinion it is possible and I'm designing every change with that
> > coexistence in mind.
> > 
> > I would say we could only drop in-kernel if BPF does such a great job
> > to cover every single technical and non-technical requirement or
> > use-case, AND if it makes maintaining the whole thing easier.
> 
> 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).

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).

The current implementation already shares the header with in-kernel monitors, so
the actual logic is shared. What isn't shared is the storage type and some glue
around it.
I used BPF maps because they offer some nice flexibility especially around per-
task and per-obj monitors. On top of using more battle tested code.
I would like to keep that.

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.

What else definitely isn't shared, which is the main point of this whole
conversation, is trace events.
Those could be kfuncs. And no matter what you do, BPF monitors will need to
share the trace events (unlike in-kernel that have separate events per monitor).

In short, I don't think this would be easy to achieve and wouldn't earn us that
much. (Plus I'd lose the hardly earned Alexei's blessing ;) )

What do you think?

Gabriele

[1] - https://lore.kernel.org/lkml/20260831090524.106845-1-gmonaco@redhat.com


  reply	other threads:[~2026-10-22  6:46 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-01 15:20 [PATCH v2 00/15] rv: Add support for BPF monitors 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-01 15:40   ` sashiko-bot
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-01 15:41   ` sashiko-bot
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-01 15:55   ` sashiko-bot
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 [this message]
2026-10-22  8:15                                               ` John Ogness
2026-10-22 10:09                                                 ` Gabriele Monaco
2026-10-22 11:34                                                   ` Gabriele Monaco
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:49   ` sashiko-bot
2026-10-01 15:20 ` [PATCH v2 12/15] tools/rv: Add reactors support to " Gabriele Monaco
2026-10-01 15:57   ` sashiko-bot
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-01 16:03   ` sashiko-bot
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=f147fa9dfc553767ce92802b66723a85cf804e46.camel@redhat.com \
    --to=gmonaco@redhat.com \
    --cc=alexei.starovoitov@gmail.com \
    --cc=bpf@vger.kernel.org \
    --cc=john.ogness@linutronix.de \
    --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