|
@@ -96,8 +96,7 @@ static inline void set_cpu_sibling_map(int cpu)
|
|
|
|
|
|
if (smp_num_siblings > 1) {
|
|
|
for_each_cpu(i, &cpu_sibling_setup_map) {
|
|
|
- if (cpu_data[cpu].package == cpu_data[i].package &&
|
|
|
- cpu_core(&cpu_data[cpu]) == cpu_core(&cpu_data[i])) {
|
|
|
+ if (cpus_are_siblings(cpu, i)) {
|
|
|
cpumask_set_cpu(i, &cpu_sibling_map[cpu]);
|
|
|
cpumask_set_cpu(cpu, &cpu_sibling_map[i]);
|
|
|
}
|
|
@@ -134,8 +133,7 @@ void calculate_cpu_foreign_map(void)
|
|
|
for_each_online_cpu(i) {
|
|
|
core_present = 0;
|
|
|
for_each_cpu(k, &temp_foreign_map)
|
|
|
- if (cpu_data[i].package == cpu_data[k].package &&
|
|
|
- cpu_core(&cpu_data[i]) == cpu_core(&cpu_data[k]))
|
|
|
+ if (cpus_are_siblings(i, k))
|
|
|
core_present = 1;
|
|
|
if (!core_present)
|
|
|
cpumask_set_cpu(i, &temp_foreign_map);
|
|
@@ -186,11 +184,11 @@ void mips_smp_send_ipi_mask(const struct cpumask *mask, unsigned int action)
|
|
|
|
|
|
if (mips_cpc_present()) {
|
|
|
for_each_cpu(cpu, mask) {
|
|
|
- core = cpu_core(&cpu_data[cpu]);
|
|
|
-
|
|
|
- if (core == cpu_core(¤t_cpu_data))
|
|
|
+ if (cpus_are_siblings(cpu, smp_processor_id()))
|
|
|
continue;
|
|
|
|
|
|
+ core = cpu_core(&cpu_data[cpu]);
|
|
|
+
|
|
|
while (!cpumask_test_cpu(cpu, &cpu_coherent_mask)) {
|
|
|
mips_cm_lock_other(core, 0);
|
|
|
mips_cpc_lock_other(core);
|