summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--i386/i386/mp_desc.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/i386/i386/mp_desc.c b/i386/i386/mp_desc.c
index 6eb3c6e6..3bb207b1 100644
--- a/i386/i386/mp_desc.c
+++ b/i386/i386/mp_desc.c
@@ -90,6 +90,7 @@ vm_offset_t cpu_stack_high;
static struct kmutex mp_cpu_boot_lock;
+static struct kmutex ap_config_lock;
/*
* Multiprocessor i386/i486 systems use a separate copy of the
@@ -299,6 +300,10 @@ cpu_setup()
int i = 1;
int kernel_id = 0;
+
+ kmutex_init(&ap_config_lock);
+ kmutex_lock(&ap_config_lock, FALSE);
+
while(i < ncpu && (machine_slot[i].running == TRUE)) i++;
/* assume Pentium 4, Xeon, or later processors */
@@ -354,6 +359,8 @@ cpu_setup()
ktss_init();
slave_main();
+ kmutex_unlock(&ap_config_lock);
+
kernel_id = cpu_number();
printf("cpu %d enabled\n", kernel_id);