Messages in this thread | | | From | Keith Owens <> | Subject | Re: garbled oopsen | Date | Mon, 19 May 2003 17:20:06 +1000 |
| |
On Wed, 7 May 2003 18:05:30 -0700, "Randy.Dunlap" <rddunlap@osdl.org> wrote: >I have several oopses that are garbled. Part of the problem is that >page fault code (x86: arch/i386/mm/fault.c) does not attempt to >serialize the "Unable to handle kernel ... at virtual address ..." >messages, since it's considered better to get _some_ messages out >than no messages. (and serialize it with what?) > >However, after untwisting these, I can tell you that unraveling >them is not fun. > >Can these be cleaned up in any reasonable way? >Any suggestions?
kdb_printf() has this:
/* Serialize kdb_printf if multiple cpus try to write at once. * But if any cpu goes recursive in kdb, just print the output, * even if it is interleaved with any other text. */ if (!KDB_STATE(PRINTF_LOCK)) { KDB_STATE_SET(PRINTF_LOCK); spin_lock(&kdb_printf_lock); } .... if (KDB_STATE(PRINTF_LOCK)) { spin_unlock(&kdb_printf_lock); KDB_STATE_CLEAR(PRINTF_LOCK); }
KDB_STATE() is a per-cpu set of flags, PRINTF_LOCK indicates if this cpu has got or is trying to get the kdb_printf_lock. I get no interleave problems, except when somebody prints a line in multiple calls to kdb_printf(), the fragments are printed as one chunk but the individual fragments can be interleaved.
- 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/
| |