diff options
Diffstat (limited to 'init/main.c')
-rw-r--r-- | init/main.c | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/init/main.c b/init/main.c index edeace036fd9..20fdc9884b77 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -87,8 +87,6 @@ extern void init_IRQ(void); | |||
87 | extern void fork_init(unsigned long); | 87 | extern void fork_init(unsigned long); |
88 | extern void mca_init(void); | 88 | extern void mca_init(void); |
89 | extern void sbus_init(void); | 89 | extern void sbus_init(void); |
90 | extern void pidhash_init(void); | ||
91 | extern void pidmap_init(void); | ||
92 | extern void prio_tree_init(void); | 90 | extern void prio_tree_init(void); |
93 | extern void radix_tree_init(void); | 91 | extern void radix_tree_init(void); |
94 | extern void free_initmem(void); | 92 | extern void free_initmem(void); |
@@ -415,6 +413,13 @@ static void __init smp_init(void) | |||
415 | { | 413 | { |
416 | unsigned int cpu; | 414 | unsigned int cpu; |
417 | 415 | ||
416 | /* | ||
417 | * Set up the current CPU as possible to migrate to. | ||
418 | * The other ones will be done by cpu_up/cpu_down() | ||
419 | */ | ||
420 | cpu = smp_processor_id(); | ||
421 | cpu_set(cpu, cpu_active_map); | ||
422 | |||
418 | /* FIXME: This should be done in userspace --RR */ | 423 | /* FIXME: This should be done in userspace --RR */ |
419 | for_each_present_cpu(cpu) { | 424 | for_each_present_cpu(cpu) { |
420 | if (num_online_cpus() >= setup_max_cpus) | 425 | if (num_online_cpus() >= setup_max_cpus) |
@@ -630,9 +635,10 @@ asmlinkage void __init start_kernel(void) | |||
630 | 635 | ||
631 | #ifdef CONFIG_BLK_DEV_INITRD | 636 | #ifdef CONFIG_BLK_DEV_INITRD |
632 | if (initrd_start && !initrd_below_start_ok && | 637 | if (initrd_start && !initrd_below_start_ok && |
633 | initrd_start < min_low_pfn << PAGE_SHIFT) { | 638 | page_to_pfn(virt_to_page(initrd_start)) < min_low_pfn) { |
634 | printk(KERN_CRIT "initrd overwritten (0x%08lx < 0x%08lx) - " | 639 | printk(KERN_CRIT "initrd overwritten (0x%08lx < 0x%08lx) - " |
635 | "disabling it.\n",initrd_start,min_low_pfn << PAGE_SHIFT); | 640 | "disabling it.\n", |
641 | page_to_pfn(virt_to_page(initrd_start)), min_low_pfn); | ||
636 | initrd_start = 0; | 642 | initrd_start = 0; |
637 | } | 643 | } |
638 | #endif | 644 | #endif |
@@ -737,13 +743,13 @@ static void __init do_one_initcall(initcall_t fn) | |||
737 | } | 743 | } |
738 | 744 | ||
739 | 745 | ||
740 | extern initcall_t __initcall_start[], __initcall_end[]; | 746 | extern initcall_t __initcall_start[], __initcall_end[], __early_initcall_end[]; |
741 | 747 | ||
742 | static void __init do_initcalls(void) | 748 | static void __init do_initcalls(void) |
743 | { | 749 | { |
744 | initcall_t *call; | 750 | initcall_t *call; |
745 | 751 | ||
746 | for (call = __initcall_start; call < __initcall_end; call++) | 752 | for (call = __early_initcall_end; call < __initcall_end; call++) |
747 | do_one_initcall(*call); | 753 | do_one_initcall(*call); |
748 | 754 | ||
749 | /* Make sure there is no pending stuff from the initcall sequence */ | 755 | /* Make sure there is no pending stuff from the initcall sequence */ |
@@ -768,24 +774,12 @@ static void __init do_basic_setup(void) | |||
768 | do_initcalls(); | 774 | do_initcalls(); |
769 | } | 775 | } |
770 | 776 | ||
771 | static int __initdata nosoftlockup; | ||
772 | |||
773 | static int __init nosoftlockup_setup(char *str) | ||
774 | { | ||
775 | nosoftlockup = 1; | ||
776 | return 1; | ||
777 | } | ||
778 | __setup("nosoftlockup", nosoftlockup_setup); | ||
779 | |||
780 | static void __init do_pre_smp_initcalls(void) | 777 | static void __init do_pre_smp_initcalls(void) |
781 | { | 778 | { |
782 | extern int spawn_ksoftirqd(void); | 779 | initcall_t *call; |
783 | 780 | ||
784 | init_call_single_data(); | 781 | for (call = __initcall_start; call < __early_initcall_end; call++) |
785 | migration_init(); | 782 | do_one_initcall(*call); |
786 | spawn_ksoftirqd(); | ||
787 | if (!nosoftlockup) | ||
788 | spawn_softlockup_task(); | ||
789 | } | 783 | } |
790 | 784 | ||
791 | static void run_init_process(char *init_filename) | 785 | static void run_init_process(char *init_filename) |