diff options
Diffstat (limited to 'init/main.c')
| -rw-r--r-- | init/main.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/init/main.c b/init/main.c index 83697e160b3a..6bf83afd654d 100644 --- a/init/main.c +++ b/init/main.c | |||
| @@ -14,6 +14,7 @@ | |||
| 14 | #include <linux/proc_fs.h> | 14 | #include <linux/proc_fs.h> |
| 15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
| 16 | #include <linux/syscalls.h> | 16 | #include <linux/syscalls.h> |
| 17 | #include <linux/stackprotector.h> | ||
| 17 | #include <linux/string.h> | 18 | #include <linux/string.h> |
| 18 | #include <linux/ctype.h> | 19 | #include <linux/ctype.h> |
| 19 | #include <linux/delay.h> | 20 | #include <linux/delay.h> |
| @@ -135,14 +136,14 @@ unsigned int __initdata setup_max_cpus = NR_CPUS; | |||
| 135 | * greater than 0, limits the maximum number of CPUs activated in | 136 | * greater than 0, limits the maximum number of CPUs activated in |
| 136 | * SMP mode to <NUM>. | 137 | * SMP mode to <NUM>. |
| 137 | */ | 138 | */ |
| 138 | #ifndef CONFIG_X86_IO_APIC | 139 | |
| 139 | static inline void disable_ioapic_setup(void) {}; | 140 | void __weak arch_disable_smp_support(void) { } |
| 140 | #endif | ||
| 141 | 141 | ||
| 142 | static int __init nosmp(char *str) | 142 | static int __init nosmp(char *str) |
| 143 | { | 143 | { |
| 144 | setup_max_cpus = 0; | 144 | setup_max_cpus = 0; |
| 145 | disable_ioapic_setup(); | 145 | arch_disable_smp_support(); |
| 146 | |||
| 146 | return 0; | 147 | return 0; |
| 147 | } | 148 | } |
| 148 | 149 | ||
| @@ -152,14 +153,14 @@ static int __init maxcpus(char *str) | |||
| 152 | { | 153 | { |
| 153 | get_option(&str, &setup_max_cpus); | 154 | get_option(&str, &setup_max_cpus); |
| 154 | if (setup_max_cpus == 0) | 155 | if (setup_max_cpus == 0) |
| 155 | disable_ioapic_setup(); | 156 | arch_disable_smp_support(); |
| 156 | 157 | ||
| 157 | return 0; | 158 | return 0; |
| 158 | } | 159 | } |
| 159 | 160 | ||
| 160 | early_param("maxcpus", maxcpus); | 161 | early_param("maxcpus", maxcpus); |
| 161 | #else | 162 | #else |
| 162 | #define setup_max_cpus NR_CPUS | 163 | const unsigned int setup_max_cpus = NR_CPUS; |
| 163 | #endif | 164 | #endif |
| 164 | 165 | ||
| 165 | /* | 166 | /* |
| @@ -540,6 +541,12 @@ asmlinkage void __init start_kernel(void) | |||
| 540 | */ | 541 | */ |
| 541 | lockdep_init(); | 542 | lockdep_init(); |
| 542 | debug_objects_early_init(); | 543 | debug_objects_early_init(); |
| 544 | |||
| 545 | /* | ||
| 546 | * Set up the the initial canary ASAP: | ||
| 547 | */ | ||
| 548 | boot_init_stack_canary(); | ||
| 549 | |||
| 543 | cgroup_init_early(); | 550 | cgroup_init_early(); |
| 544 | 551 | ||
| 545 | local_irq_disable(); | 552 | local_irq_disable(); |
