Messages in this thread | | | Date | Sun, 05 Jun 2011 10:53:43 +0200 | From | Arne Jansen <> | Subject | Re: [tip:sched/locking] sched: Add p->pi_lock to task_rq_lock() |
| |
On 05.06.2011 10:17, Ingo Molnar wrote: > > * Peter Zijlstra<peterz@infradead.org> wrote: > >> On Fri, 2011-06-03 at 12:02 +0200, Arne Jansen wrote: >>> On 03.06.2011 11:15, Peter Zijlstra wrote: >> >>>> Anyway, Arne, how long did you wait before power cycling the box? The >>>> NMI watchdog should trigger in about a minute or so if it will trigger >>>> at all (its enabled in your config). >>> >>> No, it doesn't trigger, >> >> Bummer. > > Is there no output even when the console is configured to do an > earlyprintk? That will allow the NMI watchdog to punch through even a > printk or scheduler lockup. >
Just to be clear, I have no boot problems whatsoever. And I have no problems with the serial console. It's just the regular printk locking up when e.g. I load the test module.
> Arne, you can turn this on via one of these: > > earlyprintk=vga,keep
I don't have access to vga as it is a remote machine.
> earlyprintk=serial,ttyS0,115200,keep
I'll try that.
> > (the ',keep' portion is important to have it active even after the > regular console has been switched on.) > > Could you also please check with the (untested) patch below applied? > This will turn off *all* printk done by the NMI watchdog and switches > it to do pure early_printk() - which does not use any locking so it > should never lock up. > > [ If you keep seeing 'NMI watchdog tick' messages periodically > occuring after the lockup then i'll send a more complete patch that > shuts off the regular printk path and makes sure that all output is > early_printk() based only. ] > > earlyprintk=,keep with such a patch has let me down only on the > rarest of occasions. > > ( Arne, please also double check on a working bootup that the NMI > watchdog is actually ticking, by checking the NMI counts in > /proc/interrupts go up slowly but surely on all CPUs. ) > > Thanks, > > Ingo > > diff --git a/kernel/watchdog.c b/kernel/watchdog.c > index 3d0c56a..7c7e33f 100644 > --- a/kernel/watchdog.c > +++ b/kernel/watchdog.c > @@ -234,15 +234,12 @@ static void watchdog_overflow_callback(struct perf_event *event, int nmi, > if (__this_cpu_read(hard_watchdog_warn) == true) > return; > > - if (hardlockup_panic) > - panic("Watchdog detected hard LOCKUP on cpu %d", this_cpu); > - else > - WARN(1, "Watchdog detected hard LOCKUP on cpu %d", this_cpu); > - > __this_cpu_write(hard_watchdog_warn, true); > return; > } > > + early_printk("NMI watchog tick %ld\n", jiffies); > + > __this_cpu_write(hard_watchdog_warn, false); > return; > }
| |