aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/parisc/iosapic.c
diff options
context:
space:
mode:
authorJames Bottomley <James.Bottomley@HansenPartnership.com>2010-12-03 02:01:05 +0000
committerKyle McMartin <kyle@mcmartin.ca>2010-12-04 11:15:19 -0500
commit51890613f2bfa70453a5cc22c91c63946dd311cd (patch)
tree72450f5f53939d42444f260708fa6639c41a8904 /drivers/parisc/iosapic.c
parentparisc: fix dino/gsc interrupts (diff)
downloadlinux-dev-51890613f2bfa70453a5cc22c91c63946dd311cd.tar.xz
linux-dev-51890613f2bfa70453a5cc22c91c63946dd311cd.zip
parisc: convert the rest of the irq handlers to simple/percpu
The generic conversion eliminates the spurious no_ack and no_end routines, converts all the cascaded handlers to handle_simple_irq() and makes iosapic use a modified handle_percpu_irq() to become the same as the CPU irq's. This isn't an essential change, but it eliminates the mask/unmask overhead of handle_level_irq(). Signed-off-by: James Bottomley <James.Bottomley@suse.de> Tested-by: Helge Deller <deller@gmx.de> Signed-off-by: Kyle McMartin <kyle@mcmartin.ca>
Diffstat (limited to 'drivers/parisc/iosapic.c')
-rw-r--r--drivers/parisc/iosapic.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/parisc/iosapic.c b/drivers/parisc/iosapic.c
index a3120a09c43d..0327894bf235 100644
--- a/drivers/parisc/iosapic.c
+++ b/drivers/parisc/iosapic.c
@@ -669,6 +669,13 @@ printk("\n");
DBG(KERN_DEBUG "enable_irq(%d): eoi(%p, 0x%x)\n", irq,
vi->eoi_addr, vi->eoi_data);
iosapic_eoi(vi->eoi_addr, vi->eoi_data);
+}
+
+static void iosapic_eoi_irq(unsigned int irq)
+{
+ struct vector_info *vi = get_irq_chip_data(irq);
+
+ iosapic_eoi(vi->eoi_addr, vi->eoi_data);
cpu_eoi_irq(irq);
}
@@ -705,6 +712,7 @@ static struct irq_chip iosapic_interrupt_type = {
.unmask = iosapic_unmask_irq,
.mask = iosapic_mask_irq,
.ack = cpu_ack_irq,
+ .eoi = iosapic_eoi_irq,
#ifdef CONFIG_SMP
.set_affinity = iosapic_set_affinity_irq,
#endif