|
@@ -225,13 +225,14 @@ static int next_cpu_for_irq(struct irq_data *data)
|
|
|
|
|
|
#ifdef CONFIG_SMP
|
|
|
int cpu;
|
|
|
- int weight = cpumask_weight(data->affinity);
|
|
|
+ struct cpumask *mask = irq_data_get_affinity_mask(data);
|
|
|
+ int weight = cpumask_weight(mask);
|
|
|
struct octeon_ciu_chip_data *cd = irq_data_get_irq_chip_data(data);
|
|
|
|
|
|
if (weight > 1) {
|
|
|
cpu = cd->current_cpu;
|
|
|
for (;;) {
|
|
|
- cpu = cpumask_next(cpu, data->affinity);
|
|
|
+ cpu = cpumask_next(cpu, mask);
|
|
|
if (cpu >= nr_cpu_ids) {
|
|
|
cpu = -1;
|
|
|
continue;
|
|
@@ -240,7 +241,7 @@ static int next_cpu_for_irq(struct irq_data *data)
|
|
|
}
|
|
|
}
|
|
|
} else if (weight == 1) {
|
|
|
- cpu = cpumask_first(data->affinity);
|
|
|
+ cpu = cpumask_first(mask);
|
|
|
} else {
|
|
|
cpu = smp_processor_id();
|
|
|
}
|
|
@@ -712,16 +713,17 @@ static void octeon_irq_cpu_offline_ciu(struct irq_data *data)
|
|
|
{
|
|
|
int cpu = smp_processor_id();
|
|
|
cpumask_t new_affinity;
|
|
|
+ struct cpumask *mask = irq_data_get_affinity_mask(data);
|
|
|
|
|
|
- if (!cpumask_test_cpu(cpu, data->affinity))
|
|
|
+ if (!cpumask_test_cpu(cpu, mask))
|
|
|
return;
|
|
|
|
|
|
- if (cpumask_weight(data->affinity) > 1) {
|
|
|
+ if (cpumask_weight(mask) > 1) {
|
|
|
/*
|
|
|
* It has multi CPU affinity, just remove this CPU
|
|
|
* from the affinity set.
|
|
|
*/
|
|
|
- cpumask_copy(&new_affinity, data->affinity);
|
|
|
+ cpumask_copy(&new_affinity, mask);
|
|
|
cpumask_clear_cpu(cpu, &new_affinity);
|
|
|
} else {
|
|
|
/* Otherwise, put it on lowest numbered online CPU. */
|