|
@@ -257,8 +257,13 @@ static void em_stop(void)
|
|
*/
|
|
*/
|
|
static void em_route_irq(int irq, unsigned int cpu)
|
|
static void em_route_irq(int irq, unsigned int cpu)
|
|
{
|
|
{
|
|
- irq_desc[irq].affinity = cpumask_of_cpu(cpu);
|
|
|
|
- irq_desc[irq].chip->set_affinity(irq, cpumask_of_cpu(cpu));
|
|
|
|
|
|
+ struct irq_desc *desc = irq_desc + irq;
|
|
|
|
+ cpumask_t mask = cpumask_of_cpu(cpu);
|
|
|
|
+
|
|
|
|
+ spin_lock_irq(&desc->lock);
|
|
|
|
+ desc->affinity = mask;
|
|
|
|
+ desc->chip->set_affinity(irq, mask);
|
|
|
|
+ spin_unlock_irq(&desc->lock);
|
|
}
|
|
}
|
|
|
|
|
|
static int em_setup(void)
|
|
static int em_setup(void)
|