diff -urNp x-ref/drivers/char/console.c x/drivers/char/console.c
--- x-ref/drivers/char/console.c	Fri Aug  9 14:52:09 2002
+++ x/drivers/char/console.c	Mon Sep 30 03:12:08 2002
@@ -112,6 +112,8 @@
 
 const struct consw *conswitchp;
 
+static void __console_callback(void);
+
 /* A bitmap for codes <32. A bit of 1 indicates that the code
  * corresponding to that bit number invokes some special action
  * (such as cursor movement) and should not be displayed as a
@@ -242,9 +244,16 @@ static inline void scrolldelta(int lines
 	schedule_console_callback();
 }
 
+extern int machine_paniced; 
+
 void schedule_console_callback(void)
 {
-	schedule_task(&console_callback_tq);
+	/* Don't care about locking after panic - but I want to switch the console
+	   NOW */ 
+	if (machine_paniced)
+		__console_callback(); 
+	else
+		schedule_task(&console_callback_tq);
 }
 
 static void scrup(int currcons, unsigned int t, unsigned int b, int nr)
@@ -2036,10 +2045,15 @@ out:
  * with other console code and prevention of re-entrancy is
  * ensured with console_sem.
  */
-static void console_callback(void *ignored)
+static void console_callback(void *unused) 
 {
 	acquire_console_sem();
+	__console_callback(); 
+	release_console_sem();	
+} 
 
+static void __console_callback(void)
+{
 	if (want_console >= 0) {
 		if (want_console != fg_console && vc_cons_allocated(want_console)) {
 			hide_cursor(fg_console);
@@ -2061,8 +2075,6 @@ static void console_callback(void *ignor
 			sw->con_scrolldelta(vc_cons[currcons].d, scrollback_delta);
 		scrollback_delta = 0;
 	}
-
-	release_console_sem();
 }
 
 void set_console(int nr)
diff -urNp x-ref/kernel/panic.c x/kernel/panic.c
--- x-ref/kernel/panic.c	Thu Sep 26 04:14:30 2002
+++ x/kernel/panic.c	Mon Sep 30 03:12:25 2002
@@ -31,6 +31,8 @@ static int __init panic_setup(char *str)
 
 __setup("panic=", panic_setup);
 
+int machine_paniced; 
+
 /**
  *	panic - halt the system
  *	@fmt: The text string to print
@@ -49,6 +51,7 @@ NORET_TYPE void panic(const char * fmt, 
         unsigned long caller = (unsigned long) __builtin_return_address(0);
 #endif
 
+	machine_paniced = 1; 
 	bust_spinlocks(1);
 	va_start(args, fmt);
 	vsprintf(buf, fmt, args);