diff options
Diffstat (limited to 'arch/x86/kernel/irq.c')
-rw-r--r-- | arch/x86/kernel/irq.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c index 1cb0b9fc78dc..6c0802eb2f7f 100644 --- a/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c | |||
@@ -249,7 +249,7 @@ void fixup_irqs(void) | |||
249 | 249 | ||
250 | data = irq_desc_get_irq_data(desc); | 250 | data = irq_desc_get_irq_data(desc); |
251 | affinity = data->affinity; | 251 | affinity = data->affinity; |
252 | if (!irq_has_action(irq) || | 252 | if (!irq_has_action(irq) || irqd_is_per_cpu(data) || |
253 | cpumask_subset(affinity, cpu_online_mask)) { | 253 | cpumask_subset(affinity, cpu_online_mask)) { |
254 | raw_spin_unlock(&desc->lock); | 254 | raw_spin_unlock(&desc->lock); |
255 | continue; | 255 | continue; |
@@ -276,7 +276,8 @@ void fixup_irqs(void) | |||
276 | else if (!(warned++)) | 276 | else if (!(warned++)) |
277 | set_affinity = 0; | 277 | set_affinity = 0; |
278 | 278 | ||
279 | if (!irqd_can_move_in_process_context(data) && chip->irq_unmask) | 279 | if (!irqd_can_move_in_process_context(data) && |
280 | !irqd_irq_disabled(data) && chip->irq_unmask) | ||
280 | chip->irq_unmask(data); | 281 | chip->irq_unmask(data); |
281 | 282 | ||
282 | raw_spin_unlock(&desc->lock); | 283 | raw_spin_unlock(&desc->lock); |