aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq/chip.c
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@linutronix.de>2011-02-08 06:17:57 -0500
committerThomas Gleixner <tglx@linutronix.de>2011-02-19 06:58:17 -0500
commit2a0d6fb335d4428285dab2d254911748e6040807 (patch)
tree16090086899df6886436b89cc76e6d0d5b36d083 /kernel/irq/chip.c
parentc1594b77e46124bb462f961e536120e471c67446 (diff)
genirq: Move IRQ_PENDING flag to core
Keep status in sync until all users are fixed. Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/irq/chip.c')
-rw-r--r--kernel/irq/chip.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c
index 527df7ab1b05..17c87865bfb1 100644
--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -518,7 +518,8 @@ handle_fasteoi_irq(unsigned int irq, struct irq_desc *desc)
518 * then mask it and get out of here: 518 * then mask it and get out of here:
519 */ 519 */
520 if (unlikely(!desc->action || (desc->istate & IRQS_DISABLED))) { 520 if (unlikely(!desc->action || (desc->istate & IRQS_DISABLED))) {
521 desc->status |= IRQ_PENDING; 521 irq_compat_set_pending(desc);
522 desc->istate |= IRQS_PENDING;
522 mask_irq(desc); 523 mask_irq(desc);
523 goto out; 524 goto out;
524 } 525 }
@@ -558,7 +559,8 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc)
558 if (unlikely((desc->istate & (IRQS_DISABLED | IRQS_INPROGRESS) || 559 if (unlikely((desc->istate & (IRQS_DISABLED | IRQS_INPROGRESS) ||
559 !desc->action))) { 560 !desc->action))) {
560 if (!irq_check_poll(desc)) { 561 if (!irq_check_poll(desc)) {
561 desc->status |= IRQ_PENDING; 562 irq_compat_set_pending(desc);
563 desc->istate |= IRQS_PENDING;
562 mask_ack_irq(desc); 564 mask_ack_irq(desc);
563 goto out_unlock; 565 goto out_unlock;
564 } 566 }
@@ -579,7 +581,7 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc)
579 * one, we could have masked the irq. 581 * one, we could have masked the irq.
580 * Renable it, if it was not disabled in meantime. 582 * Renable it, if it was not disabled in meantime.
581 */ 583 */
582 if (unlikely(desc->status & IRQ_PENDING)) { 584 if (unlikely(desc->istate & IRQS_PENDING)) {
583 if (!(desc->istate & IRQS_DISABLED) && 585 if (!(desc->istate & IRQS_DISABLED) &&
584 (desc->status & IRQ_MASKED)) 586 (desc->status & IRQ_MASKED))
585 unmask_irq(desc); 587 unmask_irq(desc);
@@ -587,7 +589,7 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc)
587 589
588 handle_irq_event(desc); 590 handle_irq_event(desc);
589 591
590 } while ((desc->status & IRQ_PENDING) && 592 } while ((desc->istate & IRQS_PENDING) &&
591 !(desc->istate & IRQS_DISABLED)); 593 !(desc->istate & IRQS_DISABLED));
592 594
593out_unlock: 595out_unlock: