[PATCH RT] don't let printk unconditionally turn on interrupts

From: Steven Rostedt
Date: Fri Jan 20 2006 - 21:36:09 EST


Ingo,

My first try at booting -rt8 on my machine crashed immediately. No nmi,
no nothing. Just a lockup at the registration of the ACPI_PM timer.
This would happen every time, and after struggling for a while, I
finally found out why!

The printk in timeofday_periodic_hook that is called holding the
write_lock of system_time_lock (a raw_seq_lock) was causing lots of
havoc. The printk would turn on interrupts, and then I would get a
deadlock when the interrupt would do a read on system_time_lock.

So here's the patch:

-- Steve

Signed-off-by: Steven Rostedt <rostedt@xxxxxxxxxxx>

Index: linux-2.6.15-rt8/kernel/printk.c
===================================================================
--- linux-2.6.15-rt8.orig/kernel/printk.c 2006-01-20 14:12:07.000000000 -0500
+++ linux-2.6.15-rt8/kernel/printk.c 2006-01-20 21:23:46.000000000 -0500
@@ -772,7 +772,7 @@
*/
#if defined(CONFIG_PREEMPT_RT) && !defined(CONFIG_PRINTK_IGNORE_LOGLEVEL) && !defined(CONFIG_PPC) \
&& !defined(CONFIG_PARANOID_GENERIC_TIME)
- spin_unlock_irq(&logbuf_lock);
+ spin_unlock_irqrestore(&logbuf_lock, flags);
#else
spin_unlock(&logbuf_lock);
#endif


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/