diff options
author | Ingo Molnar | 2008-10-16 16:51:32 +0200 |
---|---|---|
committer | Ingo Molnar | 2008-10-16 16:51:32 +0200 |
commit | 5fef06e8c8c52aa7170dbbb068aa996d83738d38 (patch) | |
tree | f46a1eefd68863bdae57afa004e5281801a6b61e /kernel/irq | |
parent | 0c5d1eb77a8be917b638344a22afe1398236482b (diff) | |
parent | 278429cff8809958d25415ba0ed32b59866ab1a8 (diff) |
Merge branch 'linus' into genirq
Diffstat (limited to 'kernel/irq')
-rw-r--r-- | kernel/irq/manage.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index e59157b591f8..d363f32dba7d 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c @@ -89,7 +89,14 @@ int irq_set_affinity(unsigned int irq, cpumask_t cpumask) set_balance_irq_affinity(irq, cpumask); #ifdef CONFIG_GENERIC_PENDING_IRQ - set_pending_irq(irq, cpumask); + if (desc->status & IRQ_MOVE_PCNTXT) { + unsigned long flags; + + spin_lock_irqsave(&desc->lock, flags); + desc->chip->set_affinity(irq, cpumask); + spin_unlock_irqrestore(&desc->lock, flags); + } else + set_pending_irq(irq, cpumask); #else desc->affinity = cpumask; desc->chip->set_affinity(irq, cpumask); |