diff -Naurp -X /home/jbarnes/dontdiff 060-no-pci-probe-medusa.patch/drivers/char/sn_serial.c 065-sn-serial-medusa-fix.patch/drivers/char/sn_serial.c --- 060-no-pci-probe-medusa.patch/drivers/char/sn_serial.c Mon Jan 5 21:10:45 2004 +++ 065-sn-serial-medusa-fix.patch/drivers/char/sn_serial.c Tue Jan 6 12:18:47 2004 @@ -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())