patch-2.4.13 linux/arch/sparc64/kernel/setup.c
Next file: linux/arch/sparc64/kernel/smp.c
Previous file: linux/arch/sparc64/kernel/sbus.c
Back to the patch index
Back to the overall index
- Lines: 49
- Date:
Sun Oct 21 10:36:54 2001
- Orig file:
v2.4.12/linux/arch/sparc64/kernel/setup.c
- Orig date:
Tue Oct 9 17:06:51 2001
diff -u --recursive --new-file v2.4.12/linux/arch/sparc64/kernel/setup.c linux/arch/sparc64/kernel/setup.c
@@ -1,4 +1,4 @@
-/* $Id: setup.c,v 1.67 2001/09/21 03:17:06 kanoj Exp $
+/* $Id: setup.c,v 1.69 2001/10/18 09:40:00 davem Exp $
* linux/arch/sparc64/kernel/setup.c
*
* Copyright (C) 1995,1996 David S. Miller (davem@caip.rutgers.edu)
@@ -90,6 +90,7 @@
struct console *cons, *saved_console = NULL;
unsigned long flags;
char *cmd;
+ extern spinlock_t prom_entry_lock;
if (!args)
return -1;
@@ -105,6 +106,7 @@
*/
irq_exit(smp_processor_id(), 0);
save_and_cli(flags);
+ spin_unlock(&prom_entry_lock);
cons = console_drivers;
while (cons) {
unregister_console(cons);
@@ -279,6 +281,7 @@
saved_console = cons->next;
register_console(cons);
}
+ spin_lock(&prom_entry_lock);
restore_flags(flags);
/*
* Restore in-interrupt status for a resume from obp.
@@ -480,6 +483,18 @@
conswitchp = &prom_con;
#endif
+#ifdef CONFIG_SMP
+ i = (unsigned long)&irq_stat[1] - (unsigned long)&irq_stat[0];
+ if ((i == SMP_CACHE_BYTES) || (i == (2 * SMP_CACHE_BYTES))) {
+ extern unsigned int irqsz_patchme[1];
+ irqsz_patchme[0] |= ((i == SMP_CACHE_BYTES) ? SMP_CACHE_BYTES_SHIFT : \
+ SMP_CACHE_BYTES_SHIFT + 1);
+ flushi((long)&irqsz_patchme[1]);
+ } else {
+ prom_printf("Unexpected size of irq_stat[] elements\n");
+ prom_halt();
+ }
+#endif
/* Work out if we are starfire early on */
check_if_starfire();
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)