Messages in this thread | | | Subject | Re: overlaping printk | From | Andi Kleen <> | Date | Thu, 20 May 2004 16:53:11 +0200 |
| |
Ingo Molnar <mingo@elte.hu> writes:
> * Ricky Beam <jfbeam@bluetronic.net> wrote: > >> It looks like somewhere in the path of release_console_sem() more than >> one CPU is running the log. [...] > > the problem is this code in printk: > > if (oops_in_progress) { > /* If a crash is occurring, make sure we can't deadlock */ > spin_lock_init(&logbuf_lock); > /* And make sure that we print immediately */ > init_MUTEX(&console_sem); > } > > so two crashes on two separate CPUs can go on in parallel. The problem > is not constrained to the serial line - i've seen it on VGA too (albeit > there it's much more rare).
One alternative way would be to use locks with timeouts for these two locks (e.g. checking the TSC on x86, since the timer interrupt may not be running anymore) and only break the lock when the wait time is too long.
Of course serial lines can be quite slow so even that may not help always (for unknown reasons far too many people use 9600 baud for their serial line)
-Andi
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |