aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq/manage.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/irq/manage.c')
-rw-r--r--kernel/irq/manage.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 46d6611a33bb..628b5572a7c2 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -87,7 +87,14 @@ int irq_set_affinity(unsigned int irq, cpumask_t cpumask)
87 set_balance_irq_affinity(irq, cpumask); 87 set_balance_irq_affinity(irq, cpumask);
88 88
89#ifdef CONFIG_GENERIC_PENDING_IRQ 89#ifdef CONFIG_GENERIC_PENDING_IRQ
90 set_pending_irq(irq, cpumask); 90 if (desc->status & IRQ_MOVE_PCNTXT) {
91 unsigned long flags;
92
93 spin_lock_irqsave(&desc->lock, flags);
94 desc->chip->set_affinity(irq, cpumask);
95 spin_unlock_irqrestore(&desc->lock, flags);
96 } else
97 set_pending_irq(irq, cpumask);
91#else 98#else
92 desc->affinity = cpumask; 99 desc->affinity = cpumask;
93 desc->chip->set_affinity(irq, cpumask); 100 desc->chip->set_affinity(irq, cpumask);