From 5d2ca7489321484dd03f7fe16c04f2c09a4e58e5 Mon Sep 17 00:00:00 2001 From: jhb Date: Fri, 14 Nov 2003 21:02:49 +0000 Subject: Always install IDT entries for ATPIC interrupt sources. The APIC no longer uses these interrupt vectors for its ISA interrupt pins, so these entries will not be overwritten. If we get a spurious interrupt from the ATPIC when using the APIC, it will be treated as a stray interrupt instead of causing a panic. --- sys/i386/isa/atpic.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) (limited to 'sys/i386/isa') diff --git a/sys/i386/isa/atpic.c b/sys/i386/isa/atpic.c index 8a1aa7c..ba44094 100644 --- a/sys/i386/isa/atpic.c +++ b/sys/i386/isa/atpic.c @@ -215,16 +215,6 @@ atpic_eoi_slave(struct intsrc *isrc) static void atpic_enable_intr(struct intsrc *isrc) { - struct atpic_intsrc *ai = (struct atpic_intsrc *)isrc; - struct atpic *ap = (struct atpic *)isrc->is_pic; - register_t eflags; - - mtx_lock_spin(&icu_lock); - eflags = intr_disable(); - setidt(ap->at_intbase + ai->at_irq, ai->at_intr, SDT_SYS386IGT, - SEL_KPL, GSEL(GCODE_SEL, SEL_KPL)); - intr_restore(eflags); - mtx_unlock_spin(&icu_lock); } static int @@ -326,6 +316,9 @@ atpic_init(void *dummy __unused) if (i == ICU_SLAVEID) continue; ai = &atintrs[i]; + setidt(((struct atpic *)ai->at_intsrc.is_pic)->at_intbase + + ai->at_irq, ai->at_intr, SDT_SYS386IGT, SEL_KPL, + GSEL(GCODE_SEL, SEL_KPL)); intr_register_source(&ai->at_intsrc); } } -- cgit v1.1