|
@@ -74,8 +74,8 @@ cpumask_t cpu_sibling_map[NR_CPUS] __read_mostly;
|
|
|
EXPORT_SYMBOL(cpu_sibling_map);
|
|
|
|
|
|
/* representing HT and core siblings of each logical CPU */
|
|
|
-cpumask_t cpu_core_map[NR_CPUS] __read_mostly;
|
|
|
-EXPORT_SYMBOL(cpu_core_map);
|
|
|
+DEFINE_PER_CPU(cpumask_t, cpu_core_map);
|
|
|
+EXPORT_PER_CPU_SYMBOL(cpu_core_map);
|
|
|
|
|
|
/* bitmap of online cpus */
|
|
|
cpumask_t cpu_online_map __read_mostly;
|
|
@@ -300,7 +300,7 @@ cpumask_t cpu_coregroup_map(int cpu)
|
|
|
* And for power savings, we return cpu_core_map
|
|
|
*/
|
|
|
if (sched_mc_power_savings || sched_smt_power_savings)
|
|
|
- return cpu_core_map[cpu];
|
|
|
+ return per_cpu(cpu_core_map, cpu);
|
|
|
else
|
|
|
return c->llc_shared_map;
|
|
|
}
|
|
@@ -321,8 +321,8 @@ void __cpuinit set_cpu_sibling_map(int cpu)
|
|
|
c[cpu].cpu_core_id == c[i].cpu_core_id) {
|
|
|
cpu_set(i, cpu_sibling_map[cpu]);
|
|
|
cpu_set(cpu, cpu_sibling_map[i]);
|
|
|
- cpu_set(i, cpu_core_map[cpu]);
|
|
|
- cpu_set(cpu, cpu_core_map[i]);
|
|
|
+ cpu_set(i, per_cpu(cpu_core_map, cpu));
|
|
|
+ cpu_set(cpu, per_cpu(cpu_core_map, i));
|
|
|
cpu_set(i, c[cpu].llc_shared_map);
|
|
|
cpu_set(cpu, c[i].llc_shared_map);
|
|
|
}
|
|
@@ -334,7 +334,7 @@ void __cpuinit set_cpu_sibling_map(int cpu)
|
|
|
cpu_set(cpu, c[cpu].llc_shared_map);
|
|
|
|
|
|
if (current_cpu_data.x86_max_cores == 1) {
|
|
|
- cpu_core_map[cpu] = cpu_sibling_map[cpu];
|
|
|
+ per_cpu(cpu_core_map, cpu) = cpu_sibling_map[cpu];
|
|
|
c[cpu].booted_cores = 1;
|
|
|
return;
|
|
|
}
|
|
@@ -346,8 +346,8 @@ void __cpuinit set_cpu_sibling_map(int cpu)
|
|
|
cpu_set(cpu, c[i].llc_shared_map);
|
|
|
}
|
|
|
if (c[cpu].phys_proc_id == c[i].phys_proc_id) {
|
|
|
- cpu_set(i, cpu_core_map[cpu]);
|
|
|
- cpu_set(cpu, cpu_core_map[i]);
|
|
|
+ cpu_set(i, per_cpu(cpu_core_map, cpu));
|
|
|
+ cpu_set(cpu, per_cpu(cpu_core_map, i));
|
|
|
/*
|
|
|
* Does this new cpu bringup a new core?
|
|
|
*/
|
|
@@ -984,7 +984,7 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
|
|
|
" Using dummy APIC emulation.\n");
|
|
|
map_cpu_to_logical_apicid();
|
|
|
cpu_set(0, cpu_sibling_map[0]);
|
|
|
- cpu_set(0, cpu_core_map[0]);
|
|
|
+ cpu_set(0, per_cpu(cpu_core_map, 0));
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -1009,7 +1009,7 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
|
|
|
smpboot_clear_io_apic_irqs();
|
|
|
phys_cpu_present_map = physid_mask_of_physid(0);
|
|
|
cpu_set(0, cpu_sibling_map[0]);
|
|
|
- cpu_set(0, cpu_core_map[0]);
|
|
|
+ cpu_set(0, per_cpu(cpu_core_map, 0));
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -1024,7 +1024,7 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
|
|
|
smpboot_clear_io_apic_irqs();
|
|
|
phys_cpu_present_map = physid_mask_of_physid(0);
|
|
|
cpu_set(0, cpu_sibling_map[0]);
|
|
|
- cpu_set(0, cpu_core_map[0]);
|
|
|
+ cpu_set(0, per_cpu(cpu_core_map, 0));
|
|
|
return;
|
|
|
}
|
|
|
|
|
@@ -1107,11 +1107,11 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
|
|
|
*/
|
|
|
for (cpu = 0; cpu < NR_CPUS; cpu++) {
|
|
|
cpus_clear(cpu_sibling_map[cpu]);
|
|
|
- cpus_clear(cpu_core_map[cpu]);
|
|
|
+ cpus_clear(per_cpu(cpu_core_map, cpu));
|
|
|
}
|
|
|
|
|
|
cpu_set(0, cpu_sibling_map[0]);
|
|
|
- cpu_set(0, cpu_core_map[0]);
|
|
|
+ cpu_set(0, per_cpu(cpu_core_map, 0));
|
|
|
|
|
|
smpboot_setup_io_apic();
|
|
|
|
|
@@ -1148,9 +1148,9 @@ void remove_siblinginfo(int cpu)
|
|
|
int sibling;
|
|
|
struct cpuinfo_x86 *c = cpu_data;
|
|
|
|
|
|
- for_each_cpu_mask(sibling, cpu_core_map[cpu]) {
|
|
|
- cpu_clear(cpu, cpu_core_map[sibling]);
|
|
|
- /*
|
|
|
+ for_each_cpu_mask(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
|
|
|
*/
|
|
|
if (cpus_weight(cpu_sibling_map[cpu]) == 1)
|
|
@@ -1160,7 +1160,7 @@ void remove_siblinginfo(int cpu)
|
|
|
for_each_cpu_mask(sibling, cpu_sibling_map[cpu])
|
|
|
cpu_clear(cpu, cpu_sibling_map[sibling]);
|
|
|
cpus_clear(cpu_sibling_map[cpu]);
|
|
|
- cpus_clear(cpu_core_map[cpu]);
|
|
|
+ cpus_clear(per_cpu(cpu_core_map, cpu));
|
|
|
c[cpu].phys_proc_id = 0;
|
|
|
c[cpu].cpu_core_id = 0;
|
|
|
cpu_clear(cpu, cpu_sibling_setup_map);
|