diff -Naurp -X /home/jbarnes/dontdiff 060-no-pci-probe-medusa.patch/drivers/char/sn_serial.c 060-sn-serial-medusa-fix.patch/drivers/char/sn_serial.c
--- 060-no-pci-probe-medusa.patch/drivers/char/sn_serial.c	Wed Dec 17 18:59:58 2003
+++ 060-sn-serial-medusa-fix.patch/drivers/char/sn_serial.c	Tue Dec 30 16:39:16 2003
@@ -813,13 +813,18 @@ sn_sal_switch_to_asynch(void)
 {
 	unsigned long flags;
 
-	sn_debug_printf("sn_serial: about to switch to asynchronous console\n");
-
 	/* without early_printk, we may be invoked late enough to race
 	 * with other cpus doing console IO at this point, however
 	 * console interrupts will never be enabled */
 	spin_lock_irqsave(&sn_sal_lock, flags);
 
+	if (sn_sal_is_asynch) {
+		spin_unlock_irqrestore(&sn_sal_lock, flags);
+		return;
+	}
+
+	sn_debug_printf("sn_serial: switch to asynchronous console\n");
+
 	/* early_printk invocation may have done this for us */
 	if (!sn_func) {
 		if (IS_RUNNING_ON_SIMULATOR())
@@ -901,8 +906,7 @@ sn_sal_module_init(void)
 	/* when this driver is compiled in, the console initialization
 	 * will have already switched us into asynchronous operation
 	 * before we get here through the module initcalls */
-	if (!sn_sal_is_asynch)
-		sn_sal_switch_to_asynch();
+	sn_sal_switch_to_asynch();
 
 	/* at this point (module_init) we can try to turn on interrupts */
 	if (!IS_RUNNING_ON_SIMULATOR())
