spurious.c (6954b75b488dd740950573f244ddd66fd28620aa) spurious.c (009b4c3b8ad584b3462734127a5bec680d5d6af4)
1/*
2 * linux/kernel/irq/spurious.c
3 *
4 * Copyright (C) 1992, 1998-2004 Linus Torvalds, Ingo Molnar
5 *
6 * This file contains spurious interrupt handling.
7 */
8

--- 31 unchanged lines hidden (view full) ---

40 if (WARN_ONCE(irq_poll_cpu == smp_processor_id(),
41 "irq poll in progress on cpu %d for irq %d\n",
42 smp_processor_id(), desc->irq_data.irq))
43 return false;
44
45#ifdef CONFIG_SMP
46 do {
47 raw_spin_unlock(&desc->lock);
1/*
2 * linux/kernel/irq/spurious.c
3 *
4 * Copyright (C) 1992, 1998-2004 Linus Torvalds, Ingo Molnar
5 *
6 * This file contains spurious interrupt handling.
7 */
8

--- 31 unchanged lines hidden (view full) ---

40 if (WARN_ONCE(irq_poll_cpu == smp_processor_id(),
41 "irq poll in progress on cpu %d for irq %d\n",
42 smp_processor_id(), desc->irq_data.irq))
43 return false;
44
45#ifdef CONFIG_SMP
46 do {
47 raw_spin_unlock(&desc->lock);
48 while (desc->status & IRQ_INPROGRESS)
48 while (desc->istate & IRQS_INPROGRESS)
49 cpu_relax();
50 raw_spin_lock(&desc->lock);
49 cpu_relax();
50 raw_spin_lock(&desc->lock);
51 } while (desc->status & IRQ_INPROGRESS);
51 } while (desc->istate & IRQS_INPROGRESS);
52 /* Might have been disabled in meantime */
53 return !(desc->status & IRQ_DISABLED) && desc->action;
54#else
55 return false;
56#endif
57}
58
59

--- 23 unchanged lines hidden (view full) ---

83 * first. Check for action->next as well.
84 */
85 action = desc->action;
86 if (!action || !(action->flags & IRQF_SHARED) ||
87 (action->flags & __IRQF_TIMER) || !action->next)
88 goto out;
89
90 /* Already running on another processor */
52 /* Might have been disabled in meantime */
53 return !(desc->status & IRQ_DISABLED) && desc->action;
54#else
55 return false;
56#endif
57}
58
59

--- 23 unchanged lines hidden (view full) ---

83 * first. Check for action->next as well.
84 */
85 action = desc->action;
86 if (!action || !(action->flags & IRQF_SHARED) ||
87 (action->flags & __IRQF_TIMER) || !action->next)
88 goto out;
89
90 /* Already running on another processor */
91 if (desc->status & IRQ_INPROGRESS) {
91 if (desc->istate & IRQS_INPROGRESS) {
92 /*
93 * Already running: If it is shared get the other
94 * CPU to go looking for our mystery interrupt too
95 */
96 desc->status |= IRQ_PENDING;
97 goto out;
98 }
99

--- 248 unchanged lines hidden ---
92 /*
93 * Already running: If it is shared get the other
94 * CPU to go looking for our mystery interrupt too
95 */
96 desc->status |= IRQ_PENDING;
97 goto out;
98 }
99

--- 248 unchanged lines hidden ---