Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1baea6e2 authored by Maciej W. Rozycki's avatar Maciej W. Rozycki Committed by Ingo Molnar
Browse files

x86: L-APIC: Set IRQ0 as edge-triggered



 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: default avatarMaciej 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: default avatarIngo Molnar <mingo@elte.hu>
parent 392a0fc9
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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)
@@ -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);