Skip to content

Commit

Permalink
x86: L-APIC: Set IRQ0 as edge-triggered
Browse files Browse the repository at this point in the history
 IRQ0 is edge-triggered, but the "8259A Virtual Wire" through the local
APIC configuration in the 32-bit version uses the "fasteoi" handler
suitable for level-triggered APIC interrupt.  Rewrite code so that the
"edge" handler is used.  The 64-bit version uses different code and is
unaffected.

Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: Andreas Herrmann <andreas.herrmann3@amd.com>
Cc: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
  • Loading branch information
Maciej W. Rozycki authored and Ingo Molnar committed Jul 11, 2008
1 parent 392a0fc commit 1baea6e
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions arch/x86/kernel/io_apic_32.c
Original file line number Diff line number Diff line change
Expand Up @@ -2052,7 +2052,7 @@ static struct irq_chip lapic_chip __read_mostly = {
.name = "local-APIC",
.mask = mask_lapic_irq,
.unmask = unmask_lapic_irq,
.eoi = ack_apic,
.ack = ack_apic,
};

static void __init setup_nmi(void)
Expand Down Expand Up @@ -2257,8 +2257,8 @@ static inline void __init check_timer(void)

printk(KERN_INFO "...trying to set up timer as Virtual Wire IRQ...");

set_irq_chip_and_handler_name(0, &lapic_chip, handle_fasteoi_irq,
"fasteoi");
set_irq_chip_and_handler_name(0, &lapic_chip, handle_edge_irq,
"edge");
apic_write_around(APIC_LVT0, APIC_DM_FIXED | vector); /* Fixed mode */
enable_8259A_irq(0);

Expand Down

0 comments on commit 1baea6e

Please sign in to comment.