diff options
Diffstat (limited to 'init/main.c')
-rw-r--r-- | init/main.c | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/init/main.c b/init/main.c index febc511e078a..9c7fd4c9249f 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -92,17 +92,11 @@ static int kernel_init(void *); | |||
92 | 92 | ||
93 | extern void init_IRQ(void); | 93 | extern void init_IRQ(void); |
94 | extern void fork_init(unsigned long); | 94 | extern void fork_init(unsigned long); |
95 | extern void mca_init(void); | ||
96 | extern void sbus_init(void); | ||
97 | extern void radix_tree_init(void); | 95 | extern void radix_tree_init(void); |
98 | #ifndef CONFIG_DEBUG_RODATA | 96 | #ifndef CONFIG_DEBUG_RODATA |
99 | static inline void mark_rodata_ro(void) { } | 97 | static inline void mark_rodata_ro(void) { } |
100 | #endif | 98 | #endif |
101 | 99 | ||
102 | #ifdef CONFIG_TC | ||
103 | extern void tc_init(void); | ||
104 | #endif | ||
105 | |||
106 | /* | 100 | /* |
107 | * Debug helper: via this flag we know that we are in 'early bootup code' | 101 | * Debug helper: via this flag we know that we are in 'early bootup code' |
108 | * where only the boot processor is running with IRQ disabled. This means | 102 | * where only the boot processor is running with IRQ disabled. This means |
@@ -282,7 +276,7 @@ static int __init unknown_bootoption(char *param, char *val, const char *unused) | |||
282 | unsigned int i; | 276 | unsigned int i; |
283 | for (i = 0; envp_init[i]; i++) { | 277 | for (i = 0; envp_init[i]; i++) { |
284 | if (i == MAX_INIT_ENVS) { | 278 | if (i == MAX_INIT_ENVS) { |
285 | panic_later = "Too many boot env vars at `%s'"; | 279 | panic_later = "env"; |
286 | panic_param = param; | 280 | panic_param = param; |
287 | } | 281 | } |
288 | if (!strncmp(param, envp_init[i], val - param)) | 282 | if (!strncmp(param, envp_init[i], val - param)) |
@@ -294,7 +288,7 @@ static int __init unknown_bootoption(char *param, char *val, const char *unused) | |||
294 | unsigned int i; | 288 | unsigned int i; |
295 | for (i = 0; argv_init[i]; i++) { | 289 | for (i = 0; argv_init[i]; i++) { |
296 | if (i == MAX_INIT_ARGS) { | 290 | if (i == MAX_INIT_ARGS) { |
297 | panic_later = "Too many boot init vars at `%s'"; | 291 | panic_later = "init"; |
298 | panic_param = param; | 292 | panic_param = param; |
299 | } | 293 | } |
300 | } | 294 | } |
@@ -355,9 +349,11 @@ static inline void smp_prepare_cpus(unsigned int maxcpus) { } | |||
355 | */ | 349 | */ |
356 | static void __init setup_command_line(char *command_line) | 350 | static void __init setup_command_line(char *command_line) |
357 | { | 351 | { |
358 | saved_command_line = alloc_bootmem(strlen (boot_command_line)+1); | 352 | saved_command_line = |
359 | initcall_command_line = alloc_bootmem(strlen (boot_command_line)+1); | 353 | memblock_virt_alloc(strlen(boot_command_line) + 1, 0); |
360 | static_command_line = alloc_bootmem(strlen (command_line)+1); | 354 | initcall_command_line = |
355 | memblock_virt_alloc(strlen(boot_command_line) + 1, 0); | ||
356 | static_command_line = memblock_virt_alloc(strlen(command_line) + 1, 0); | ||
361 | strcpy (saved_command_line, boot_command_line); | 357 | strcpy (saved_command_line, boot_command_line); |
362 | strcpy (static_command_line, command_line); | 358 | strcpy (static_command_line, command_line); |
363 | } | 359 | } |
@@ -476,7 +472,7 @@ static void __init mm_init(void) | |||
476 | mem_init(); | 472 | mem_init(); |
477 | kmem_cache_init(); | 473 | kmem_cache_init(); |
478 | percpu_init_late(); | 474 | percpu_init_late(); |
479 | pgtable_cache_init(); | 475 | pgtable_init(); |
480 | vmalloc_init(); | 476 | vmalloc_init(); |
481 | } | 477 | } |
482 | 478 | ||
@@ -584,7 +580,8 @@ asmlinkage void __init start_kernel(void) | |||
584 | */ | 580 | */ |
585 | console_init(); | 581 | console_init(); |
586 | if (panic_later) | 582 | if (panic_later) |
587 | panic(panic_later, panic_param); | 583 | panic("Too many boot %s vars at `%s'", panic_later, |
584 | panic_param); | ||
588 | 585 | ||
589 | lockdep_info(); | 586 | lockdep_info(); |
590 | 587 | ||
@@ -615,6 +612,7 @@ asmlinkage void __init start_kernel(void) | |||
615 | calibrate_delay(); | 612 | calibrate_delay(); |
616 | pidmap_init(); | 613 | pidmap_init(); |
617 | anon_vma_init(); | 614 | anon_vma_init(); |
615 | acpi_early_init(); | ||
618 | #ifdef CONFIG_X86 | 616 | #ifdef CONFIG_X86 |
619 | if (efi_enabled(EFI_RUNTIME_SERVICES)) | 617 | if (efi_enabled(EFI_RUNTIME_SERVICES)) |
620 | efi_enter_virtual_mode(); | 618 | efi_enter_virtual_mode(); |
@@ -641,7 +639,6 @@ asmlinkage void __init start_kernel(void) | |||
641 | 639 | ||
642 | check_bugs(); | 640 | check_bugs(); |
643 | 641 | ||
644 | acpi_early_init(); /* before LAPIC and SMP init */ | ||
645 | sfi_init_late(); | 642 | sfi_init_late(); |
646 | 643 | ||
647 | if (efi_enabled(EFI_RUNTIME_SERVICES)) { | 644 | if (efi_enabled(EFI_RUNTIME_SERVICES)) { |
@@ -815,7 +812,7 @@ void __init load_default_modules(void) | |||
815 | static int run_init_process(const char *init_filename) | 812 | static int run_init_process(const char *init_filename) |
816 | { | 813 | { |
817 | argv_init[0] = init_filename; | 814 | argv_init[0] = init_filename; |
818 | return do_execve(init_filename, | 815 | return do_execve(getname_kernel(init_filename), |
819 | (const char __user *const __user *)argv_init, | 816 | (const char __user *const __user *)argv_init, |
820 | (const char __user *const __user *)envp_init); | 817 | (const char __user *const __user *)envp_init); |
821 | } | 818 | } |