|
@@ -136,8 +136,7 @@ static int __assign_irq_vector(int irq, struct apic_chip_data *d,
|
|
while (cpu < nr_cpu_ids) {
|
|
while (cpu < nr_cpu_ids) {
|
|
int new_cpu, offset;
|
|
int new_cpu, offset;
|
|
|
|
|
|
- /* Get the possible target cpus for @mask/@cpu from the apic */
|
|
|
|
- apic->vector_allocation_domain(cpu, vector_cpumask, mask);
|
|
|
|
|
|
+ cpumask_copy(vector_cpumask, cpumask_of(cpu));
|
|
|
|
|
|
/*
|
|
/*
|
|
* Clear the offline cpus from @vector_cpumask for searching
|
|
* Clear the offline cpus from @vector_cpumask for searching
|
|
@@ -367,17 +366,11 @@ static int x86_vector_alloc_irqs(struct irq_domain *domain, unsigned int virq,
|
|
irq_data->chip = &lapic_controller;
|
|
irq_data->chip = &lapic_controller;
|
|
irq_data->chip_data = data;
|
|
irq_data->chip_data = data;
|
|
irq_data->hwirq = virq + i;
|
|
irq_data->hwirq = virq + i;
|
|
|
|
+ irqd_set_single_target(irq_data);
|
|
err = assign_irq_vector_policy(virq + i, node, data, info,
|
|
err = assign_irq_vector_policy(virq + i, node, data, info,
|
|
irq_data);
|
|
irq_data);
|
|
if (err)
|
|
if (err)
|
|
goto error;
|
|
goto error;
|
|
- /*
|
|
|
|
- * If the apic destination mode is physical, then the
|
|
|
|
- * effective affinity is restricted to a single target
|
|
|
|
- * CPU. Mark the interrupt accordingly.
|
|
|
|
- */
|
|
|
|
- if (!apic->irq_dest_mode)
|
|
|
|
- irqd_set_single_target(irq_data);
|
|
|
|
}
|
|
}
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
@@ -434,7 +427,7 @@ static void __init init_legacy_irqs(void)
|
|
BUG_ON(!data);
|
|
BUG_ON(!data);
|
|
|
|
|
|
data->cfg.vector = ISA_IRQ_VECTOR(i);
|
|
data->cfg.vector = ISA_IRQ_VECTOR(i);
|
|
- cpumask_setall(data->domain);
|
|
|
|
|
|
+ cpumask_copy(data->domain, cpumask_of(0));
|
|
irq_set_chip_data(i, data);
|
|
irq_set_chip_data(i, data);
|
|
}
|
|
}
|
|
}
|
|
}
|