static void poll_spurious_irqs(unsigned long dummy) { struct irq_desc *desc; int i; if (atomic_inc_return(&irq_poll_active) != 1) goto out; irq_poll_cpu = smp_processor_id(); for_each_irq_desc(i, desc) { unsigned int state; if (!i) continue; /* Racy but it doesn't matter */ state = desc->istate; barrier(); if (!(state & IRQS_SPURIOUS_DISABLED)) continue; local_irq_disable(); try_one_irq(i, desc, true); local_irq_enable(); }
static int misrouted_irq(int irq) { struct irq_desc *desc; int i, ok = 0; if (atomic_inc_return(&irq_poll_active) == 1) goto out; irq_poll_cpu = smp_processor_id(); for_each_irq_desc(i, desc) { if (!i) continue; if (i == irq) /* Already tried */ continue; if (try_one_irq(i, desc, false)) ok = 1; } out: atomic_dec(&irq_poll_active); /* So the caller can adjust the irq error counts */ return ok; }
static int misrouted_irq(int irq) { struct irq_desc *desc; int i, ok = 0; for_each_irq_desc(i, desc) { if (!i) continue; if (i == irq) /* Already tried */ continue; if (try_one_irq(i, desc)) ok = 1; } /* So the caller can adjust the irq error counts */ return ok; }
static void poll_all_shared_irqs(void) { struct irq_desc *desc; int i; for_each_irq_desc(i, desc) { unsigned int status; if (!i) continue; /* Racy but it doesn't matter */ status = desc->status; barrier(); if (!(status & IRQ_SPURIOUS_DISABLED)) continue; try_one_irq(i, desc); }
static void poll_spurious_irqs(unsigned long dummy) { struct irq_desc *desc; int i; for_each_irq_desc(i, desc) { unsigned int status; if (!i) continue; /* Racy but it doesn't matter */ status = desc->status; barrier(); if (!(status & IRQ_SPURIOUS_DISABLED)) continue; local_irq_disable(); try_one_irq(i, desc); local_irq_enable(); }