Re: Question about softlockup
Ingo Molnar <[email protected]> Fri, 4 Sep 2009 09:23:21 +0200
| Newsgroups | gmane.linux.kernel.debugging |
|---|---|
| Message-ID | <[email protected]> |
* jidong xiao <[email protected]> wrote: > Hi, Ingo, > > I am looking the source code of function softlockup_tick() > > 137 /* Warn about unreasonable delays: */ > 138 if (now <= (touch_timestamp + softlockup_thresh)) > 139 return; > 140 > 141 per_cpu(print_timestamp, this_cpu) = touch_timestamp; > 142 > 143 spin_lock(&print_lock); > 144 printk(KERN_ERR "BUG: soft lockup - CPU#%d stuck for > %lus! [%s:%d]\n", > 145 this_cpu, now - touch_timestamp, > 146 current->comm, task_pid_nr(current)); > 147 print_modules(); > 148 print_irqtrace_events(current); > 149 if (regs) > 150 show_regs(regs); > 151 else > 152 dump_stack(); > 153 spin_unlock(&print_lock); > 154 > 155 if (softlockup_panic) > 156 panic("softlockup: hung tasks"); > > my kernel is kdb patched kernel, and it looks like if I stay in kdb > for more than 60 seconds, I will receive a warning about softlockup > when I leave kdb. it is very annoying to see the warning message > especially in SMP environment, sometimes this could even hung the > machine. A simple way here is: > > #ifdef CONFIG_KDB > not trigger softlockup or set softlockup_thresh to be a very high value. > #elseif > trigger softlockup if CPU stuck for more than 60 seconds > #endif > > However I feel this approach is far from perfect. Do you have any > advice on how to avoid this warning? Where does kdb spend this time? It's probably polling on something (keyboard ports?) - so the right approach would be to fix up the touch_timestamp or so. I suspect kgdb has similar problems - if you fix it there and if you have to touch kernel/softlockup.c for that i can apply those bits even though kdb patches are not upstream. Ingo _______________________________________________ kdb mailing list [email protected] http://oss.sgi.com/mailman/listinfo/kdb