|
@@ -1327,6 +1327,12 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
|
|
|
if (new->flags & IRQF_ONESHOT)
|
|
|
desc->istate |= IRQS_ONESHOT;
|
|
|
|
|
|
+ /* Exclude IRQ from balancing if requested */
|
|
|
+ if (new->flags & IRQF_NOBALANCING) {
|
|
|
+ irq_settings_set_no_balancing(desc);
|
|
|
+ irqd_set(&desc->irq_data, IRQD_NO_BALANCING);
|
|
|
+ }
|
|
|
+
|
|
|
if (irq_settings_can_autoenable(desc)) {
|
|
|
irq_startup(desc, true);
|
|
|
} else {
|
|
@@ -1341,15 +1347,6 @@ __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)
|
|
|
desc->depth = 1;
|
|
|
}
|
|
|
|
|
|
- /* Exclude IRQ from balancing if requested */
|
|
|
- if (new->flags & IRQF_NOBALANCING) {
|
|
|
- irq_settings_set_no_balancing(desc);
|
|
|
- irqd_set(&desc->irq_data, IRQD_NO_BALANCING);
|
|
|
- }
|
|
|
-
|
|
|
- /* Set default affinity mask once everything is setup */
|
|
|
- irq_setup_affinity(desc);
|
|
|
-
|
|
|
} else if (new->flags & IRQF_TRIGGER_MASK) {
|
|
|
unsigned int nmsk = new->flags & IRQF_TRIGGER_MASK;
|
|
|
unsigned int omsk = irqd_get_trigger_type(&desc->irq_data);
|