]> Pileus Git - ~andy/linux/blobdiff - arch/x86/kernel/smpboot.c
Merge commit 'perf/core' into perf/hw-breakpoint
[~andy/linux] / arch / x86 / kernel / smpboot.c
index 09c5e077dff7e0aea7f11cbe3f3c5ca196ef688b..213a7a3e45629fa61b1f26cc8fd882602945766f 100644 (file)
@@ -64,6 +64,7 @@
 #include <asm/apic.h>
 #include <asm/setup.h>
 #include <asm/uv/uv.h>
+#include <asm/debugreg.h>
 #include <linux/mc146818rtc.h>
 
 #include <asm/smpboot_hooks.h>
@@ -327,6 +328,7 @@ notrace static void __cpuinit start_secondary(void *unused)
        x86_cpuinit.setup_percpu_clockev();
 
        wmb();
+       load_debug_registers();
        cpu_idle();
 }
 
@@ -1059,12 +1061,9 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
 #endif
        current_thread_info()->cpu = 0;  /* needed? */
        for_each_possible_cpu(i) {
-               alloc_cpumask_var(&per_cpu(cpu_sibling_map, i), GFP_KERNEL);
-               alloc_cpumask_var(&per_cpu(cpu_core_map, i), GFP_KERNEL);
-               alloc_cpumask_var(&cpu_data(i).llc_shared_map, GFP_KERNEL);
-               cpumask_clear(per_cpu(cpu_core_map, i));
-               cpumask_clear(per_cpu(cpu_sibling_map, i));
-               cpumask_clear(cpu_data(i).llc_shared_map);
+               zalloc_cpumask_var(&per_cpu(cpu_sibling_map, i), GFP_KERNEL);
+               zalloc_cpumask_var(&per_cpu(cpu_core_map, i), GFP_KERNEL);
+               zalloc_cpumask_var(&cpu_data(i).llc_shared_map, GFP_KERNEL);
        }
        set_cpu_sibling_map(0);
 
@@ -1270,6 +1269,7 @@ void cpu_disable_common(void)
        remove_cpu_from_maps(cpu);
        unlock_vector_lock();
        fixup_irqs();
+       hw_breakpoint_disable();
 }
 
 int native_cpu_disable(void)