diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2011-02-08 06:17:57 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2011-02-19 06:58:17 -0500 |
commit | 2a0d6fb335d4428285dab2d254911748e6040807 (patch) | |
tree | 16090086899df6886436b89cc76e6d0d5b36d083 /kernel/irq/chip.c | |
parent | c1594b77e46124bb462f961e536120e471c67446 (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.c | 10 |
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 | ||
593 | out_unlock: | 595 | out_unlock: |