From: "Paul E. McKenney" <paulmck@kernel.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: Andrii Nakryiko <andriin@fb.com>,
Alan Stern <stern@rowland.harvard.edu>,
parri.andrea@gmail.com, will@kernel.org, boqun.feng@gmail.com,
npiggin@gmail.com, dhowells@redhat.com, j.alglave@ucl.ac.uk,
luc.maranget@inria.fr, akiyks@gmail.com, dlustig@nvidia.com,
joel@joelfernandes.org, linux-kernel@vger.kernel.org,
linux-arch@vger.kernel.org,
"andrii.nakryiko@gmail.com" <andrii.nakryiko@gmail.com>
Subject: Re: Some -serious- BPF-related litmus tests
Date: Mon, 25 May 2020 10:45:44 -0700 [thread overview]
Message-ID: <20200525174544.GA21495@paulmck-ThinkPad-P72> (raw)
In-Reply-To: <20200525172154.GZ2869@paulmck-ThinkPad-P72>
On Mon, May 25, 2020 at 10:21:54AM -0700, Paul E. McKenney wrote:
> On Mon, May 25, 2020 at 07:02:57PM +0200, Peter Zijlstra wrote:
> > On Mon, May 25, 2020 at 08:47:30AM -0700, Paul E. McKenney wrote:
> > > On Mon, May 25, 2020 at 01:25:21PM +0200, Peter Zijlstra wrote:
> >
> > > > That is; how can you use a spinlock on the producer side at all?
> > >
> > > So even trylock is now forbidden in NMI handlers? If so, why?
> >
> > The litmus tests don't have trylock.
>
> Fair point.
>
> > But you made me look at the actual patch:
> >
> > +static void *__bpf_ringbuf_reserve(struct bpf_ringbuf *rb, u64 size)
> > +{
> > + unsigned long cons_pos, prod_pos, new_prod_pos, flags;
> > + u32 len, pg_off;
> > + struct bpf_ringbuf_hdr *hdr;
> > +
> > + if (unlikely(size > RINGBUF_MAX_RECORD_SZ))
> > + return NULL;
> > +
> > + len = round_up(size + BPF_RINGBUF_HDR_SZ, 8);
> > + cons_pos = smp_load_acquire(&rb->consumer_pos);
> > +
> > + if (in_nmi()) {
> > + if (!spin_trylock_irqsave(&rb->spinlock, flags))
> > + return NULL;
> > + } else {
> > + spin_lock_irqsave(&rb->spinlock, flags);
> > + }
> >
> > And that is of course utter crap. That's like saying you don't care
> > about your NMI data.
>
> Almost. It is really saying that -if- there is sufficient lock
> contention, printk()s will be lost. Just as they always have been if
> there is more printk() volume than can be accommodated.
s/printk()/BPF output/
One of those days... :-/
Thanx, Paul
next prev parent reply other threads:[~2020-05-25 17:45 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-22 0:38 Some -serious- BPF-related litmus tests Paul E. McKenney
2020-05-22 9:44 ` Peter Zijlstra
2020-05-22 10:56 ` Paul E. McKenney
2020-05-22 14:36 ` Alan Stern
2020-05-22 17:45 ` Paul E. McKenney
2020-05-22 14:32 ` Alan Stern
2020-05-22 14:32 ` Alan Stern
2020-05-22 17:43 ` Paul E. McKenney
2020-05-22 17:43 ` Paul E. McKenney
2020-05-22 19:38 ` Andrii Nakryiko
2020-05-24 12:09 ` Akira Yokosawa
2020-05-24 12:09 ` Akira Yokosawa
2020-05-25 18:31 ` Andrii Nakryiko
2020-05-25 22:01 ` Akira Yokosawa
2020-05-25 23:31 ` Andrii Nakryiko
2020-05-26 10:50 ` Akira Yokosawa
2020-05-26 14:02 ` Akira Yokosawa
2020-05-26 20:19 ` Andrii Nakryiko
2020-05-26 23:00 ` Akira Yokosawa
2020-05-27 0:09 ` Andrii Nakryiko
2020-05-26 20:15 ` Andrii Nakryiko
2020-05-26 22:23 ` Akira Yokosawa
2020-05-25 11:25 ` Peter Zijlstra
2020-05-25 15:47 ` Paul E. McKenney
2020-05-25 15:47 ` Paul E. McKenney
2020-05-25 17:02 ` Peter Zijlstra
2020-05-25 17:21 ` Paul E. McKenney
2020-05-25 17:45 ` Paul E. McKenney [this message]
2020-05-28 22:00 ` Joel Fernandes
2020-05-28 22:16 ` Peter Zijlstra
2020-05-29 5:14 ` Andrii Nakryiko
2020-05-29 12:36 ` Peter Zijlstra
2020-05-29 20:01 ` Andrii Nakryiko
2020-05-29 20:53 ` Peter Zijlstra
2020-05-25 14:53 ` Boqun Feng
2020-05-25 14:53 ` Boqun Feng
2020-05-25 18:38 ` Andrii Nakryiko
2020-05-28 21:48 ` Joel Fernandes
2020-05-29 4:38 ` Andrii Nakryiko
2020-05-29 4:38 ` Andrii Nakryiko
2020-05-29 17:23 ` Joel Fernandes
2020-05-29 20:10 ` Andrii Nakryiko
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=20200525174544.GA21495@paulmck-ThinkPad-P72 \
--to=paulmck@kernel.org \
--cc=akiyks@gmail.com \
--cc=andrii.nakryiko@gmail.com \
--cc=andriin@fb.com \
--cc=boqun.feng@gmail.com \
--cc=dhowells@redhat.com \
--cc=dlustig@nvidia.com \
--cc=j.alglave@ucl.ac.uk \
--cc=joel@joelfernandes.org \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=luc.maranget@inria.fr \
--cc=npiggin@gmail.com \
--cc=parri.andrea@gmail.com \
--cc=peterz@infradead.org \
--cc=stern@rowland.harvard.edu \
--cc=will@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox