diff options
Diffstat (limited to 'kernel/irq')
-rw-r--r-- | kernel/irq/manage.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 634a2a955104..948a22a2c013 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -123,7 +123,7 @@ int do_irq_select_affinity(unsigned int irq, struct irq_desc *desc) | |||
123 | * Preserve an userspace affinity setup, but make sure that | 123 | * Preserve an userspace affinity setup, but make sure that |
124 | * one of the targets is online. | 124 | * one of the targets is online. |
125 | */ | 125 | */ |
126 | if (desc->status & IRQ_AFFINITY_SET) { | 126 | if (desc->status & (IRQ_AFFINITY_SET | IRQ_NO_BALANCING)) { |
127 | if (cpus_intersects(desc->affinity, cpu_online_map)) | 127 | if (cpus_intersects(desc->affinity, cpu_online_map)) |
128 | mask = desc->affinity; | 128 | mask = desc->affinity; |
129 | else | 129 | else |
@@ -483,6 +483,10 @@ __setup_irq(unsigned int irq, struct irq_desc * desc, struct irqaction *new) | |||
483 | /* Undo nested disables: */ | 483 | /* Undo nested disables: */ |
484 | desc->depth = 1; | 484 | desc->depth = 1; |
485 | 485 | ||
486 | /* Exclude IRQ from balancing if requested */ | ||
487 | if (new->flags & IRQF_NOBALANCING) | ||
488 | desc->status |= IRQ_NO_BALANCING; | ||
489 | |||
486 | /* Set default affinity mask once everything is setup */ | 490 | /* Set default affinity mask once everything is setup */ |
487 | do_irq_select_affinity(irq, desc); | 491 | do_irq_select_affinity(irq, desc); |
488 | 492 | ||
@@ -497,10 +501,6 @@ __setup_irq(unsigned int irq, struct irq_desc * desc, struct irqaction *new) | |||
497 | 501 | ||
498 | *p = new; | 502 | *p = new; |
499 | 503 | ||
500 | /* Exclude IRQ from balancing */ | ||
501 | if (new->flags & IRQF_NOBALANCING) | ||
502 | desc->status |= IRQ_NO_BALANCING; | ||
503 | |||
504 | /* Reset broken irq detection when installing new handler */ | 504 | /* Reset broken irq detection when installing new handler */ |
505 | desc->irq_count = 0; | 505 | desc->irq_count = 0; |
506 | desc->irqs_unhandled = 0; | 506 | desc->irqs_unhandled = 0; |