diff options
Diffstat (limited to 'arch/x86/kernel/smpboot_32.c')
-rw-r--r-- | arch/x86/kernel/smpboot_32.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/arch/x86/kernel/smpboot_32.c b/arch/x86/kernel/smpboot_32.c index 31fc08bd15ef..be3faac04719 100644 --- a/arch/x86/kernel/smpboot_32.c +++ b/arch/x86/kernel/smpboot_32.c | |||
@@ -102,8 +102,8 @@ u8 apicid_2_node[MAX_APICID]; | |||
102 | * Trampoline 80x86 program as an array. | 102 | * Trampoline 80x86 program as an array. |
103 | */ | 103 | */ |
104 | 104 | ||
105 | extern unsigned char trampoline_data []; | 105 | extern const unsigned char trampoline_data []; |
106 | extern unsigned char trampoline_end []; | 106 | extern const unsigned char trampoline_end []; |
107 | static unsigned char *trampoline_base; | 107 | static unsigned char *trampoline_base; |
108 | static int trampoline_exec; | 108 | static int trampoline_exec; |
109 | 109 | ||
@@ -118,7 +118,7 @@ DEFINE_PER_CPU(int, cpu_state) = { 0 }; | |||
118 | * has made sure it's suitably aligned. | 118 | * has made sure it's suitably aligned. |
119 | */ | 119 | */ |
120 | 120 | ||
121 | static unsigned long __devinit setup_trampoline(void) | 121 | static unsigned long __cpuinit setup_trampoline(void) |
122 | { | 122 | { |
123 | memcpy(trampoline_base, trampoline_data, trampoline_end - trampoline_data); | 123 | memcpy(trampoline_base, trampoline_data, trampoline_end - trampoline_data); |
124 | return virt_to_phys(trampoline_base); | 124 | return virt_to_phys(trampoline_base); |
@@ -1021,6 +1021,12 @@ static void __init smp_boot_cpus(unsigned int max_cpus) | |||
1021 | if (!max_cpus) { | 1021 | if (!max_cpus) { |
1022 | smp_found_config = 0; | 1022 | smp_found_config = 0; |
1023 | printk(KERN_INFO "SMP mode deactivated, forcing use of dummy APIC emulation.\n"); | 1023 | printk(KERN_INFO "SMP mode deactivated, forcing use of dummy APIC emulation.\n"); |
1024 | |||
1025 | if (nmi_watchdog == NMI_LOCAL_APIC) { | ||
1026 | printk(KERN_INFO "activating minimal APIC for NMI watchdog use.\n"); | ||
1027 | connect_bsp_APIC(); | ||
1028 | setup_local_APIC(); | ||
1029 | } | ||
1024 | smpboot_clear_io_apic_irqs(); | 1030 | smpboot_clear_io_apic_irqs(); |
1025 | phys_cpu_present_map = physid_mask_of_physid(0); | 1031 | phys_cpu_present_map = physid_mask_of_physid(0); |
1026 | cpu_set(0, per_cpu(cpu_sibling_map, 0)); | 1032 | cpu_set(0, per_cpu(cpu_sibling_map, 0)); |