mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Mike Galbraith <efault@gmx.de>
To: John Ogness <john.ogness@linutronix.de>,
	Breno Leitao <leitao@debian.org>,
	 Simon Horman <horms@kernel.org>,
	kuba@kernel.org, calvin@wbinvd.org
Cc: Pavel Begunkov <asml.silence@gmail.com>,
	Johannes Berg <johannes@sipsolutions.net>,
	paulmck@kernel.org, LKML <linux-kernel@vger.kernel.org>,
	netdev@vger.kernel.org, boqun.feng@gmail.com
Subject: Re: netconsole: HARDIRQ-safe -> HARDIRQ-unsafe lock order warning
Date: Sat, 06 Sep 2025 04:32:41 +0200	[thread overview]
Message-ID: <7fc8a1db60de959fd22ae898e86683f57fb07be2.camel@gmx.de> (raw)
In-Reply-To: <84a539f4kf.fsf@jogness.linutronix.de>

On Fri, 2025-09-05 at 14:54 +0206, John Ogness wrote:
> 
> On 2025-08-26, Breno Leitao <leitao@debian.org> wrote:
> > On Fri, Aug 22, 2025 at 05:54:28AM +0200, Mike Galbraith wrote:
> > > On Thu, 2025-08-21 at 10:35 -0700, Breno Leitao wrote:
> > > > > On Thu, Aug 21, 2025 at 05:51:59AM +0200, Mike Galbraith wrote:
> > >  
> > > > > > > --- a/drivers/net/netconsole.c
> > > > > > > +++ b/drivers/net/netconsole.c
> > > > > > > @@ -1952,12 +1952,12 @@ static void netcon_write_thread(struct c
> > > > > > >  static void netconsole_device_lock(struct console *con, unsigned long *flags)
> > > > > > >  {
> > > > > > >  	/* protects all the targets at the same time */
> > > > > > > -	spin_lock_irqsave(&target_list_lock, *flags);
> > > > > > > +	spin_lock(&target_list_lock);
> > > > > 
> > > > > I personally think this target_list_lock can be moved to an RCU lock.
> > > > > 
> > > > > If that is doable, then we probably make netconsole_device_lock()
> > > > > to a simple `rcu_read_lock()`, which would solve this problem as well.
> > > 
> > > The bigger issue for the nbcon patch would seem to be the seemingly
> > > required .write_atomic leading to landing here with disabled IRQs.
> 
> Using spin_lock_irqsave()/spin_unlock_irqrestore() within the
> ->device_lock() and ->device->unlock() callbacks is fine. Even with
> PREEMPT_RT this is fine. If you can use RCU to synchronize the target
> list, that is probably a nice optimization, but it is certainly not a
> requirement from the NBCON (and PREEMPT_RT/lockdep) perspective.

I was referring there to !RT+wireless locking meets IRQs disabled, ever
per lockdep, an intolerance shared with RT+spinlock_t.

> > In this case, instead of transmitting through netpoll directly in the
> > .write_atomic context, we could queue the messages for later delivery.
> 
> The ->write_atomic() callback is intended to perform immediate
> transmission. It is called with hardware interrupts disabled and is even
> expected to work from NMI context. If you are not able to implement
> these requirements, do not implement ->write_atomic(). Implementing some
> sort of deferrment mechanism is inappropriate. Such a mechanism already
> exists based on ->write_thread().

Truly atomic packet blasting would be a case of happiness, but barring
that, deferment is way better than the nothing that's available to both
RT and !RT+wireless here/now.  With a .write_atomic that's really just
.write_thread, both RT and !RT+wireless managed to successfully send a
death rattle with the WIP nbcon patch.. a progression for each of them.

> 
	-Mike

  reply	other threads:[~2025-09-06  2:32 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-13  4:14 Mike Galbraith
2025-08-14 10:16 ` Breno Leitao
2025-08-14 15:45   ` Pavel Begunkov
2025-08-15  0:23   ` Jakub Kicinski
2025-08-15 10:44     ` Pavel Begunkov
2025-08-15 16:42       ` Jakub Kicinski
2025-08-15 17:29         ` Breno Leitao
2025-08-15 17:33           ` Jakub Kicinski
2025-08-18 12:23             ` Breno Leitao
2025-08-15 19:10           ` Calvin Owens
2025-08-16  9:19             ` Mike Galbraith
2025-08-15 20:02           ` Pavel Begunkov
2025-08-18 12:10             ` Breno Leitao
2025-08-19 17:27               ` Breno Leitao
2025-08-20 12:31                 ` Mike Galbraith
2025-08-20 17:36                   ` Breno Leitao
2025-08-21  3:37                     ` Mike Galbraith
2025-08-21  3:51                       ` Mike Galbraith
2025-08-21 17:35                         ` Breno Leitao
2025-08-22  3:54                           ` Mike Galbraith
2025-08-26 12:43                             ` Breno Leitao
2025-08-26 13:56                               ` Mike Galbraith
2025-09-05 12:48                               ` John Ogness
2025-09-06  2:32                                 ` Mike Galbraith [this message]
2025-09-08 13:30                                   ` John Ogness
2025-09-08 15:18                                     ` Mike Galbraith
2025-09-08 20:27                                 ` Calvin Owens
2025-09-09 15:49                                   ` Mike Galbraith
2025-09-10 15:51                                   ` Petr Mladek
2025-09-09 12:50                                 ` Breno Leitao
2025-09-10 12:22                                   ` John Ogness
2025-09-10 15:12                                     ` Petr Mladek
2025-09-10 18:26                                       ` Breno Leitao
2025-09-30 13:57                                         ` Calvin Owens
2025-09-30 14:23                                           ` John Ogness
2025-09-30 14:30                                             ` Sebastian Siewior
2025-09-30 17:35                                               ` Mike Galbraith
2025-10-01  6:00                                                 ` Mike Galbraith
2025-09-11 13:03                                       ` John Ogness
2025-09-10 18:23                                     ` Breno Leitao
2025-09-11 13:13                                       ` John Ogness
2025-08-21 10:06                       ` Mike Galbraith
2025-08-21 13:12                         ` Mike Galbraith
2025-08-15 17:37         ` Calvin Owens
2025-08-26 14:10         ` Johannes Berg
2025-08-15 12:45     ` Mike Galbraith

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=7fc8a1db60de959fd22ae898e86683f57fb07be2.camel@gmx.de \
    --to=efault@gmx.de \
    --cc=asml.silence@gmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=calvin@wbinvd.org \
    --cc=horms@kernel.org \
    --cc=johannes@sipsolutions.net \
    --cc=john.ogness@linutronix.de \
    --cc=kuba@kernel.org \
    --cc=leitao@debian.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=paulmck@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

all inboxes | Powered by JetHome®