mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-15 13:15:57 +00:00
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: 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>
This commit is contained in:
parent
392a0fc96b
commit
1baea6e2fe
@ -2052,7 +2052,7 @@ static struct irq_chip lapic_chip __read_mostly = {
|
|||||||
.name = "local-APIC",
|
.name = "local-APIC",
|
||||||
.mask = mask_lapic_irq,
|
.mask = mask_lapic_irq,
|
||||||
.unmask = unmask_lapic_irq,
|
.unmask = unmask_lapic_irq,
|
||||||
.eoi = ack_apic,
|
.ack = ack_apic,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void __init setup_nmi(void)
|
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...");
|
printk(KERN_INFO "...trying to set up timer as Virtual Wire IRQ...");
|
||||||
|
|
||||||
set_irq_chip_and_handler_name(0, &lapic_chip, handle_fasteoi_irq,
|
set_irq_chip_and_handler_name(0, &lapic_chip, handle_edge_irq,
|
||||||
"fasteoi");
|
"edge");
|
||||||
apic_write_around(APIC_LVT0, APIC_DM_FIXED | vector); /* Fixed mode */
|
apic_write_around(APIC_LVT0, APIC_DM_FIXED | vector); /* Fixed mode */
|
||||||
enable_8259A_irq(0);
|
enable_8259A_irq(0);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user