From: Gabriele Monaco <gmonaco@redhat.com>
To: John Ogness <john.ogness@linutronix.de>,
Steven Rostedt <rostedt@goodmis.org>,
Nam Cao <namcao@linutronix.de>
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
linux-trace-kernel@vger.kernel.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH] tracing: Remove pointless memory barriers
Date: Thu, 03 Jul 2025 10:05:59 +0200 [thread overview]
Message-ID: <564f10574f11bd7ca42fcc5fb4d6c5625dc17205.camel@redhat.com> (raw)
In-Reply-To: <84o6uatn6i.fsf@jogness.linutronix.de>
On Thu, 2025-06-26 at 19:47 +0206, John Ogness wrote:
> Hi Steven,
>
> On 2025-06-26, Steven Rostedt <rostedt@goodmis.org> wrote:
> > > Your scenario can still happen despite the memory barrier:
> >
> > Yes, but the point isn't really to prevent the race. It's more
> > about making
> > the race window smaller.
> >
> > When we disable it, if something is currently using it then it may
> > or may
> > not get in. That's fine as this isn't critical.
> >
> > But from my understanding, without the barriers, some architectures
> > may
> > never see the update. That is, the write from one CPU may not get
> > to memory
> > for a long time and new incoming readers will still see the old
> > data. I'm
> > more concerned with new readers than ones that are currently racing
> > with
> > the updates.
>
> Memory barriers do not affect visibility. They only affect ordering.
> And
> ordering implies that there are at least 2 pieces of data involved. A
> memory barrier has no meaning when you are only talking about 1 piece
> of
> data (in this case @buffer_disabled).
>
> For example, update_traceon_count() has an smp_rmb()/smp_wmb() pair
> to
> make sure @count updates are ordered to be after @buffer_disabled
> updates.
>
> read(count)
> smp_rmb()
> read(buffer_disabled)
>
> write(buffer_disabled)
> smp_wmb()
> write(count)
>
> But what exactly are the memory barriers removed in this patch
> ordering?
>
Hi all,
these statements made me curious: I always thought of memory barriers as a way
to order reads and writes to the same address across different CPUs (in other
words, for visibility).
For instance I'd do something like:
CPU 1 CPU2
write(x)
smp_mb()
<implicit paired barrier>
READ_ONCE(x)
Now, I get there isn't much we can do if reader and writer are racing, but, as
Steve said, I'm expecting the presence of barriers to make the racing window
smaller.
Am I misinterpreting the whole thing here? Are those barriers just ordering
reads with reads and writes with writes (hence useful only with multiple
variables)?
Thanks,
Gabriele
next prev parent reply other threads:[~2025-07-03 8:07 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-26 15:19 [PATCH] tracing: Remove pointless memory barriers Nam Cao
2025-06-26 15:35 ` Steven Rostedt
2025-06-26 15:37 ` Steven Rostedt
2025-06-26 16:04 ` Nam Cao
2025-06-26 16:34 ` Steven Rostedt
2025-06-26 17:41 ` John Ogness
2025-07-03 8:05 ` Gabriele Monaco [this message]
2025-07-08 7:42 ` Nam Cao
2025-07-09 15:08 ` Steven Rostedt
2025-07-11 8:29 ` David Laight
2025-07-11 16:07 ` Steven Rostedt
2025-07-09 8:22 ` David Laight
2025-07-22 0:49 ` Steven Rostedt
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=564f10574f11bd7ca42fcc5fb4d6c5625dc17205.camel@redhat.com \
--to=gmonaco@redhat.com \
--cc=john.ogness@linutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=namcao@linutronix.de \
--cc=rostedt@goodmis.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