Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 9 Jan 2001 11:32:39 -0600 (CST)
From:      Chris Dillon <cdillon@wolves.k12.mo.us>
To:        John Baldwin <jhb@FreeBSD.org>
Cc:        Francisco Reyes <fran@reyes.somos.net>, FreeBSD Chat List <freebsd-chat@FreeBSD.org>, David Kelly <dkelly@hiwaay.net>, "Daniel O'Connor" <doconnor@gsoft.com.au>
Subject:   Re: ECC worth the extra cost for SOHO server?
Message-ID:  <Pine.BSF.4.21.0101091032100.15567-100000@mail.wolves.k12.mo.us>
In-Reply-To: <XFMail.010108190613.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 8 Jan 2001, John Baldwin wrote:

> On 09-Jan-01 John Baldwin wrote:
> > 
> > On 09-Jan-01 Daniel O'Connor wrote:
> >> 
> >> On 09-Jan-01 Chris Dillon wrote:
> >>> > I think 4.x doesn't panic on ECC NMI's anymore but I'm not sure.
> >>>  Out of curiosity, how does the OS know exactly what event triggered
> >>>  the NMI?  I know what an NMI can mean, but I don't know what it REALLY
> >>>  IS, you know what I mean?  The technical answer for exactly what an
> >>>  NMI is and what it consists of is welcome.  :-)
> >> 
> >> Yeah, sorry I don't have a clue :)
> >> 
> >> I'm sure someone out there does.. Answer us damnit! :)
> > 
> > Check out src/sys/i386/isa/intr_machdep.c:isa_nmi().
> 
> Erm, this answers how to find out what event triggers an NMI or at
> least to narrow it down a bit.  This function is called from
> within trap() in src/sys/i386/i386/trap.c.  An NMI is simple a
> Non-Maskable Interrupt.  Maskable Interrupts can be
> masked/disabled by clearing the interrupt flag (IF) in the flags
> register via the 'cli' instruction, or by using 'popf' to load a
> value into the flags reg with IF cleared.  An NMI is not masked by
> IF though, and will always fire.  Usually an NMI means that the
> machine is badly hosed and that you are pretty much screwed.  
> However, an NMI switch can also be rigged to allow one to break
> into the debugger on a machine that is spinning with interrupts
> disabled.

Aah, yes, I remember now.  I thought I knew at one time what an NMI
really was, but it slipped away.  I actually remember the discussion a
couple of years ago on one of these lists that actually talked about
implementing an NMI switch to get into the debugger, just as you've
mentioned.  :-)

So, if I understand what is in isa_nmi() correctly, it should be
possible to find out which NMIs a particular chipset is going to throw
when a correctable ECC error has ocurred, and when a non-correctable
error has ocurred.  I also assume there is no "standard" for this, or
we would have already done it. :-)


-- Chris Dillon - cdillon@wolves.k12.mo.us - cdillon@inter-linc.net
   FreeBSD: The fastest and most stable server OS on the planet.
   For IA32 and Alpha architectures. IA64, PPC, and ARM under development.
   http://www.freebsd.org




To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-chat" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0101091032100.15567-100000>