[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Mon, 6 Jun 2011 18:17:49 +0200
From: Ingo Molnar <mingo@...e.hu>
To: Peter Zijlstra <peterz@...radead.org>
Cc: Arne Jansen <lists@...-jansens.de>,
Linus Torvalds <torvalds@...ux-foundation.org>,
mingo@...hat.com, hpa@...or.com, linux-kernel@...r.kernel.org,
efault@....de, npiggin@...nel.dk, akpm@...ux-foundation.org,
frank.rowand@...sony.com, tglx@...utronix.de,
linux-tip-commits@...r.kernel.org
Subject: Re: [debug patch] printk: Add a printk killswitch to robustify NMI
watchdog messages
* Peter Zijlstra <peterz@...radead.org> wrote:
> On Mon, 2011-06-06 at 18:08 +0200, Ingo Molnar wrote:
> > * Peter Zijlstra <peterz@...radead.org> wrote:
> >
> > > On Mon, 2011-06-06 at 17:52 +0200, Ingo Molnar wrote:
> > > > * Peter Zijlstra <peterz@...radead.org> wrote:
> > > >
> > > > > Needs more staring at, preferably by someone who actually
> > > > > understands that horrid mess :/ Also, this all still doesn't make
> > > > > printk() work reliably while holding rq->lock.
> > > >
> > > > So, what about my suggestion to just *remove* the wakeup from there
> > > > and use the deferred wakeup mechanism that klogd uses.
> > > >
> > > > That would make printk() *visibly* more robust in practice.
> > >
> > > That's currently done from the jiffy tick, do you want to effectively
> > > delay releasing the console_sem for the better part of a jiffy?
> >
> > Yes, and we already do it in some other circumstances.
>
> We do?
Yes, see the whole printk_pending logic, it delays:
wake_up_interruptible(&log_wait);
to the next jiffies tick.
> > Can you see
> > any problem with that? klogd is an utter slowpath anyway.
>
> but console_sem isn't klogd. We delay klogd and that's perfectly
> fine, but afaict we don't delay console_sem.
But console_sem is really a similar special case as klogd. See, it's
about a *printk*. That's rare by definition.
If someone on the console sees it he'll be startled by at least 10
msecs ;-) So delaying the wakeup to the next jiffy really fits into
the same approach as we already do with &log_wait, hm?
This would solve a real nightmare that has plagued us ever since
printk() has done wakeups directly - i.e. like forever.
Thanks,
Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists