Re: [PATCH] mm/mmu_notifier: Remove non_block_start/end() from notifier invocation

"Paul E. McKenney" <[email protected]>
Newsgroups dev.linux.lists.linux-rt-devel,org.kernel.vger.kvm,org.kernel.vger.linux-kernel,org.kvack.linux-mm
Message-ID <333c4cdb-8f34-4e3f-a47f-961f47e089a0@paulmck-laptop>
On Thu, Aug 20, 2026 at 03:43:01PM +0100, David Woodhouse wrote:
> On Tue, 2026-08-18 at 11:18 -0700, Paul E. McKenney wrote:
> > On Thu, Aug 13, 2026 at 08:54:44AM +0100, David Woodhouse wrote:
> > > On Wed, 2026-08-12 at 14:38 -0700, Paul E. McKenney wrote:
> > > > If not, please let me know, and I will put together that does the
> > > > job.
> > > 
> > > If you're working on that, I assume it'd need the readers to be known-
> > > atomic. So if any of the read-side SRCU_READ_FLAVOR_ATOMIC thing I
> > > already threw together is useful, you can find it in my tree at
> > > https://git.infradead.org/?p=users/dwmw2/linux.git;a=shortlog;h=refs/heads/srcu-atomic
> > 
> > Thank you, happy to steal pieces of that with attribution.  ;-)
> > 
> > My current plan says that if you have an atomic SRCU on which you
> > use srcu_read_lock_atomic() and srcu_read_unlock_atomic(), you only
> > ever get to use synchronize_srcu_atomic(), never synchronize_srcu(),
> > synchronize_srcu_expedited(), or call_srcu().  Does that work for you?
> 
> I just said this elsewhere in the thread¹ but I don't necessarily
> expect you to be following that. So to bring it back here...
> 
> My mental model for srcu_read_lock_atomic() was that it was always
> atomic, even on RT — it was basically equivalent to a raw spinlock.
> 
> In fact I think it would be OK for it to be equivalent to a *plain*
> spinlock — i.e. atomic on non-RT, but might sleep on RT.
> 
> When I wrote that previous email I was thinking that might end up being
> additional complexity in your implementation, but as I type this I
> guess it could be as simple as falling back to the normal non-atomic
> case for RT?
> 
> ¹ https://lore.kernel.org/all/[email protected]/

The current state is that if you invoke synchronize_srcu_atomic()
from a given context, then srcu_read_lock_atomic() must be invoked
from that same context, or a more strict one.

So, for example, you can disable preemption across your invocation of
synchronize_srcu_atomic(), but only if you also do so across the entire
reader, starting before srcu_read_lock_atomic() and ending after the
matching srcu_read_unlock_atomic().  Or you could instead disable
interrupts across the entire SRCU reader.

Does that work?

Also, Tiny SRCU atomic turned out to be a bit more complicated than
we were thinking due to lazy preemption.  ;-)

If you want a sneak preview, please feel free to take a look at
the first few commits on the "dev" branch of my -rcu tree.

							Thanx, Paul
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.