diff options
Diffstat (limited to 'kernel/irq/manage.c')
| -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 0314074fa23..60c49e32439 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);  | 
