projects/linux·commit 44fd2299

[PATCH] Register the boot-cpu in the cpu maps earlier

44fd2299 · Stas Sergeev <[email protected]> · 2006-03-23 02:59:44 -08:00

Register the boot-cpu in the cpu maps earlier to allow the early printk to
work, and to fix an obscure deadlock at boot.

Signed-off-by: Stas Sergeev <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Commit
44fd22992cb76dc51c52cf4b8aff1bc7899bb23c
Parents
ffa930ef

Changes

1 files changed · +11 −6

FileStatusAddDelContent
init/main.cmodified+11−6View file

init/main.c

View file
diff --git a/init/main.c b/init/main.c
index 4c194c4..141e889 100644
--- a/init/main.c
+++ b/init/main.c
@@ -438,6 +438,15 @@ void __init parse_early_param(void)
* Activate the first processor.
*/
+static void __init boot_cpu_init(void)
+{
+ int cpu = smp_processor_id();
+ /* Mark the boot cpu "present", "online" etc for SMP and UP case */
+ cpu_set(cpu, cpu_online_map);
+ cpu_set(cpu, cpu_present_map);
+ cpu_set(cpu, cpu_possible_map);
+}
+
asmlinkage void __init start_kernel(void)
{
char * command_line;
@@ -447,17 +456,13 @@ asmlinkage void __init start_kernel(void)
* enable them
*/
lock_kernel();
+ boot_cpu_init();
page_address_init();
printk(KERN_NOTICE);
printk(linux_banner);
setup_arch(&command_line);
setup_per_cpu_areas();
-
- /*
- * Mark the boot cpu "online" so that it can call console drivers in
- * printk() and can access its per-cpu storage.
- */
- smp_prepare_boot_cpu();
+ smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */
/*
* Set up the scheduler prior starting any interrupts (such as the