From owner-freebsd-hackers Mon May 19 22:01:38 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id WAA12190 for hackers-outgoing; Mon, 19 May 1997 22:01:38 -0700 (PDT) Received: from spinner.DIALix.COM (spinner.dialix.com [192.203.228.67]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id WAA12168; Mon, 19 May 1997 22:01:24 -0700 (PDT) Received: from spinner.DIALix.COM (localhost.dialix.com.au [127.0.0.1]) by spinner.DIALix.COM with ESMTP id MAA28627; Tue, 20 May 1997 12:51:40 +0800 (WST) Message-Id: <199705200451.MAA28627@spinner.DIALix.COM> X-Mailer: exmh version 2.0gamma 1/27/96 To: dg@root.com cc: Jason Thorpe , Kazutaka YOKOTA , freebsd-hackers@freebsd.org, freebsd-bugs@freebsd.org Subject: Re: trap type 29 on P6 In-reply-to: Your message of "Mon, 19 May 1997 21:12:04 MST." <199705200412.VAA19394@lestat.nas.nasa.gov> Date: Tue, 20 May 1997 12:51:39 +0800 From: Peter Wemm Sender: owner-hackers@freebsd.org X-Loop: FreeBSD.org Precedence: bulk Jason Thorpe wrote: > On Tue, 20 May 1997 12:09:40 +0800 > Peter Wemm wrote: > > > Under FreeBSD, the IDT vector number for irq7 is 39, not 29.. The PIC's > > are programmed to use 32 through 47 (under non-SMP). > > ...I know :-) irq 7 is directed to another vector under NetBSD/i386, as > well... Ahh foo. virtual trap numbers.. :-( > > I think this is different to the problem that you describe. Here we're > > getting trap 29 which: > > [..] > > #define T_STKFLT 27 /* stack fault */ > > #define T_MCHK 28 /* machine check trap */ > > #define T_RESERVED 29 /* reserved (unknown) */ > > ...exactly what I'm talking about... I originally thought I was seeing > a machine-check as well. I see now in our code where trap 15 is mapped into 29.. > The relevant bit of locore.s from NetBSD/i386: > > IDTVEC(trap0f) > /* > * The Pentium Pro local APIC may erroneously call this vector for a > * default IR7. Just ignore it. > */ > iret Hmm.. But what I want to know is why the local APIC is doing this when it's not active? And why does it coincide with IO instructions? Anyway, assuming that's the case, how does this look: Index: trap.c =================================================================== RCS file: /home/ncvs/src/sys/i386/i386/trap.c,v retrieving revision 1.95 diff -u -r1.95 trap.c --- trap.c 1997/05/07 20:08:53 1.95 +++ trap.c 1997/05/20 04:48:07 @@ -431,6 +436,7 @@ } return; } + break; #else /* !POWERFAIL_NMI */ #ifdef DDB /* NMI can be hooked up to a pushbutton for debugging */ @@ -439,10 +445,14 @@ return; #endif /* DDB */ /* machine/parity/power fail/"kitchen sink" faults */ - if (isa_nmi(code) == 0) return; - /* FALL THROUGH */ + if (isa_nmi(code) == 0) + return; + break; #endif /* POWERFAIL_NMI */ #endif /* NISA > 0 */ + case T_RESERVED: + printf("stray T_RESERVED trap (ignored)\n"); + return; } trap_fatal(&frame); > Jason R. Thorpe thorpej@nas.nasa.gov > NASA Ames Research Center Home: 408.866.1912 > NAS: M/S 258-6 Work: 415.604.0935 > Moffett Field, CA 94035 Pager: 415.428.6939 Cheers, -Peter