summaryrefslogtreecommitdiff
path: root/sys/arch/mvme88k/dev/mainbus.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/mvme88k/dev/mainbus.c')
-rw-r--r--sys/arch/mvme88k/dev/mainbus.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/sys/arch/mvme88k/dev/mainbus.c b/sys/arch/mvme88k/dev/mainbus.c
index 2bcd69abf25..8e4f7f26fc3 100644
--- a/sys/arch/mvme88k/dev/mainbus.c
+++ b/sys/arch/mvme88k/dev/mainbus.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: mainbus.c,v 1.23 2007/11/27 16:22:13 martynas Exp $ */
+/* $OpenBSD: mainbus.c,v 1.24 2009/03/05 21:55:12 miod Exp $ */
/*
* Copyright (c) 1998 Steve Murphree, Jr.
* Copyright (c) 2004, Miodrag Vallat.
@@ -287,6 +287,7 @@ mainbus_scan(struct device *parent, void *child, void *args)
void
mainbus_attach(struct device *parent, struct device *self, void *args)
{
+ extern void cpu_hatch_secondary_processors(void *);
extern char cpu_model[];
printf(": %s\n", cpu_model);
@@ -316,5 +317,19 @@ mainbus_attach(struct device *parent, struct device *self, void *args)
if (bs_extent == NULL)
panic("unable to allocate bus_space extent");
+#ifdef MULTIPROCESSOR
+ /*
+ * Spin up the other processors, but do not give them work to
+ * do yet.
+ * On MVME188 boards, the system hangs if secondary processors
+ * try to issue BUG calls (i.e. when printing their information
+ * on console), so we postpone this to the end of autoconf.
+ */
+ if (brdtyp == BRD_188)
+ startuphook_establish(cpu_hatch_secondary_processors, NULL);
+ else
+ cpu_hatch_secondary_processors(NULL);
+#endif
+
(void)config_search(mainbus_scan, self, args);
}