diff options
| author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-04-19 13:29:34 -0400 |
|---|---|---|
| committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2012-04-22 21:04:29 -0400 |
| commit | 3a2b4f7c355ff1c97e4adebadf0a1aefd7c4518a (patch) | |
| tree | bf2817fc3b25792e67ce95914e0939521e2cf07e /arch/powerpc/sysdev | |
| parent | 3027691e58bfb21f6ea2e9f1d225d11b4e2b20e2 (diff) | |
powerpc/mpic: Fix confusion between hw_irq and virq
mpic_is_ipi() takes a virq and immediately converts it to a hw_irq.
However, one of the two call sites calls it with a ... hw_irq. The
other call site also happens to have the hw_irq at hand, so let's
change it to just take that as an argument. Also change mpic_is_tm()
for consistency.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/sysdev')
| -rw-r--r-- | arch/powerpc/sysdev/mpic.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index 9ac71ebd2c40..665b0f806786 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
| @@ -604,18 +604,14 @@ static struct mpic *mpic_find(unsigned int irq) | |||
| 604 | } | 604 | } |
| 605 | 605 | ||
| 606 | /* Determine if the linux irq is an IPI */ | 606 | /* Determine if the linux irq is an IPI */ |
| 607 | static unsigned int mpic_is_ipi(struct mpic *mpic, unsigned int irq) | 607 | static unsigned int mpic_is_ipi(struct mpic *mpic, unsigned int src) |
| 608 | { | 608 | { |
| 609 | unsigned int src = virq_to_hw(irq); | ||
| 610 | |||
| 611 | return (src >= mpic->ipi_vecs[0] && src <= mpic->ipi_vecs[3]); | 609 | return (src >= mpic->ipi_vecs[0] && src <= mpic->ipi_vecs[3]); |
| 612 | } | 610 | } |
| 613 | 611 | ||
| 614 | /* Determine if the linux irq is a timer */ | 612 | /* Determine if the linux irq is a timer */ |
| 615 | static unsigned int mpic_is_tm(struct mpic *mpic, unsigned int irq) | 613 | static unsigned int mpic_is_tm(struct mpic *mpic, unsigned int src) |
| 616 | { | 614 | { |
| 617 | unsigned int src = virq_to_hw(irq); | ||
| 618 | |||
| 619 | return (src >= mpic->timer_vecs[0] && src <= mpic->timer_vecs[7]); | 615 | return (src >= mpic->timer_vecs[0] && src <= mpic->timer_vecs[7]); |
| 620 | } | 616 | } |
| 621 | 617 | ||
| @@ -1555,12 +1551,12 @@ void mpic_irq_set_priority(unsigned int irq, unsigned int pri) | |||
| 1555 | return; | 1551 | return; |
| 1556 | 1552 | ||
| 1557 | raw_spin_lock_irqsave(&mpic_lock, flags); | 1553 | raw_spin_lock_irqsave(&mpic_lock, flags); |
| 1558 | if (mpic_is_ipi(mpic, irq)) { | 1554 | if (mpic_is_ipi(mpic, src)) { |
| 1559 | reg = mpic_ipi_read(src - mpic->ipi_vecs[0]) & | 1555 | reg = mpic_ipi_read(src - mpic->ipi_vecs[0]) & |
| 1560 | ~MPIC_VECPRI_PRIORITY_MASK; | 1556 | ~MPIC_VECPRI_PRIORITY_MASK; |
| 1561 | mpic_ipi_write(src - mpic->ipi_vecs[0], | 1557 | mpic_ipi_write(src - mpic->ipi_vecs[0], |
| 1562 | reg | (pri << MPIC_VECPRI_PRIORITY_SHIFT)); | 1558 | reg | (pri << MPIC_VECPRI_PRIORITY_SHIFT)); |
| 1563 | } else if (mpic_is_tm(mpic, irq)) { | 1559 | } else if (mpic_is_tm(mpic, src)) { |
| 1564 | reg = mpic_tm_read(src - mpic->timer_vecs[0]) & | 1560 | reg = mpic_tm_read(src - mpic->timer_vecs[0]) & |
| 1565 | ~MPIC_VECPRI_PRIORITY_MASK; | 1561 | ~MPIC_VECPRI_PRIORITY_MASK; |
| 1566 | mpic_tm_write(src - mpic->timer_vecs[0], | 1562 | mpic_tm_write(src - mpic->timer_vecs[0], |
