diff options
Diffstat (limited to 'arch/powerpc/sysdev/mpic.c')
-rw-r--r-- | arch/powerpc/sysdev/mpic.c | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index e47938899a92..116173ab58ba 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
@@ -612,12 +612,11 @@ static inline void mpic_eoi(struct mpic *mpic) | |||
612 | } | 612 | } |
613 | 613 | ||
614 | #ifdef CONFIG_SMP | 614 | #ifdef CONFIG_SMP |
615 | static irqreturn_t mpic_ipi_action(int irq, void *dev_id) | 615 | static irqreturn_t mpic_ipi_action(int irq, void *data) |
616 | { | 616 | { |
617 | struct mpic *mpic; | 617 | long ipi = (long)data; |
618 | 618 | ||
619 | mpic = mpic_find(irq, NULL); | 619 | smp_message_recv(ipi); |
620 | smp_message_recv(mpic_irq_to_hw(irq) - mpic->ipi_vecs[0]); | ||
621 | 620 | ||
622 | return IRQ_HANDLED; | 621 | return IRQ_HANDLED; |
623 | } | 622 | } |
@@ -1457,7 +1456,7 @@ unsigned int mpic_get_irq(void) | |||
1457 | void mpic_request_ipis(void) | 1456 | void mpic_request_ipis(void) |
1458 | { | 1457 | { |
1459 | struct mpic *mpic = mpic_primary; | 1458 | struct mpic *mpic = mpic_primary; |
1460 | int i, err; | 1459 | long i, err; |
1461 | static char *ipi_names[] = { | 1460 | static char *ipi_names[] = { |
1462 | "IPI0 (call function)", | 1461 | "IPI0 (call function)", |
1463 | "IPI1 (reschedule)", | 1462 | "IPI1 (reschedule)", |
@@ -1472,14 +1471,14 @@ void mpic_request_ipis(void) | |||
1472 | unsigned int vipi = irq_create_mapping(mpic->irqhost, | 1471 | unsigned int vipi = irq_create_mapping(mpic->irqhost, |
1473 | mpic->ipi_vecs[0] + i); | 1472 | mpic->ipi_vecs[0] + i); |
1474 | if (vipi == NO_IRQ) { | 1473 | if (vipi == NO_IRQ) { |
1475 | printk(KERN_ERR "Failed to map IPI %d\n", i); | 1474 | printk(KERN_ERR "Failed to map IPI %ld\n", i); |
1476 | break; | 1475 | break; |
1477 | } | 1476 | } |
1478 | err = request_irq(vipi, mpic_ipi_action, | 1477 | err = request_irq(vipi, mpic_ipi_action, |
1479 | IRQF_DISABLED|IRQF_PERCPU, | 1478 | IRQF_DISABLED|IRQF_PERCPU, |
1480 | ipi_names[i], mpic); | 1479 | ipi_names[i], (void *)i); |
1481 | if (err) { | 1480 | if (err) { |
1482 | printk(KERN_ERR "Request of irq %d for IPI %d failed\n", | 1481 | printk(KERN_ERR "Request of irq %d for IPI %ld failed\n", |
1483 | vipi, i); | 1482 | vipi, i); |
1484 | break; | 1483 | break; |
1485 | } | 1484 | } |