Merge commit 'v2.6.27-rc3' into x86/prototypes
Conflicts: include/asm-x86/dma-mapping.h Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
@@ -326,12 +326,16 @@ static void __cpuinit start_secondary(void *unused)
|
||||
* for which cpus receive the IPI. Holding this
|
||||
* lock helps us to not include this cpu in a currently in progress
|
||||
* smp_call_function().
|
||||
*
|
||||
* We need to hold vector_lock so there the set of online cpus
|
||||
* does not change while we are assigning vectors to cpus. Holding
|
||||
* this lock ensures we don't half assign or remove an irq from a cpu.
|
||||
*/
|
||||
ipi_call_lock_irq();
|
||||
#ifdef CONFIG_X86_IO_APIC
|
||||
setup_vector_irq(smp_processor_id());
|
||||
#endif
|
||||
lock_vector_lock();
|
||||
__setup_vector_irq(smp_processor_id());
|
||||
cpu_set(smp_processor_id(), cpu_online_map);
|
||||
unlock_vector_lock();
|
||||
ipi_call_unlock_irq();
|
||||
per_cpu(cpu_state, smp_processor_id()) = CPU_ONLINE;
|
||||
|
||||
@@ -438,7 +442,7 @@ void __cpuinit set_cpu_sibling_map(int cpu)
|
||||
cpu_set(cpu, cpu_sibling_setup_map);
|
||||
|
||||
if (smp_num_siblings > 1) {
|
||||
for_each_cpu_mask(i, cpu_sibling_setup_map) {
|
||||
for_each_cpu_mask_nr(i, cpu_sibling_setup_map) {
|
||||
if (c->phys_proc_id == cpu_data(i).phys_proc_id &&
|
||||
c->cpu_core_id == cpu_data(i).cpu_core_id) {
|
||||
cpu_set(i, per_cpu(cpu_sibling_map, cpu));
|
||||
@@ -461,7 +465,7 @@ void __cpuinit set_cpu_sibling_map(int cpu)
|
||||
return;
|
||||
}
|
||||
|
||||
for_each_cpu_mask(i, cpu_sibling_setup_map) {
|
||||
for_each_cpu_mask_nr(i, cpu_sibling_setup_map) {
|
||||
if (per_cpu(cpu_llc_id, cpu) != BAD_APICID &&
|
||||
per_cpu(cpu_llc_id, cpu) == per_cpu(cpu_llc_id, i)) {
|
||||
cpu_set(i, c->llc_shared_map);
|
||||
@@ -990,7 +994,17 @@ int __cpuinit native_cpu_up(unsigned int cpu)
|
||||
flush_tlb_all();
|
||||
low_mappings = 1;
|
||||
|
||||
#ifdef CONFIG_X86_PC
|
||||
if (def_to_bigsmp && apicid > 8) {
|
||||
printk(KERN_WARNING
|
||||
"More than 8 CPUs detected - skipping them.\n"
|
||||
"Use CONFIG_X86_GENERICARCH and CONFIG_X86_BIGSMP.\n");
|
||||
err = -1;
|
||||
} else
|
||||
err = do_boot_cpu(apicid, cpu);
|
||||
#else
|
||||
err = do_boot_cpu(apicid, cpu);
|
||||
#endif
|
||||
|
||||
zap_low_mappings();
|
||||
low_mappings = 0;
|
||||
@@ -1219,7 +1233,7 @@ static void remove_siblinginfo(int cpu)
|
||||
int sibling;
|
||||
struct cpuinfo_x86 *c = &cpu_data(cpu);
|
||||
|
||||
for_each_cpu_mask(sibling, per_cpu(cpu_core_map, cpu)) {
|
||||
for_each_cpu_mask_nr(sibling, per_cpu(cpu_core_map, cpu)) {
|
||||
cpu_clear(cpu, per_cpu(cpu_core_map, sibling));
|
||||
/*/
|
||||
* last thread sibling in this cpu core going down
|
||||
@@ -1228,7 +1242,7 @@ static void remove_siblinginfo(int cpu)
|
||||
cpu_data(sibling).booted_cores--;
|
||||
}
|
||||
|
||||
for_each_cpu_mask(sibling, per_cpu(cpu_sibling_map, cpu))
|
||||
for_each_cpu_mask_nr(sibling, per_cpu(cpu_sibling_map, cpu))
|
||||
cpu_clear(cpu, per_cpu(cpu_sibling_map, sibling));
|
||||
cpus_clear(per_cpu(cpu_sibling_map, cpu));
|
||||
cpus_clear(per_cpu(cpu_core_map, cpu));
|
||||
@@ -1336,7 +1350,9 @@ int __cpu_disable(void)
|
||||
remove_siblinginfo(cpu);
|
||||
|
||||
/* It's now safe to remove this processor from the online map */
|
||||
lock_vector_lock();
|
||||
remove_cpu_from_maps(cpu);
|
||||
unlock_vector_lock();
|
||||
fixup_irqs(cpu_online_map);
|
||||
return 0;
|
||||
}
|
||||
|
Reference in New Issue
Block a user