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

next in thread | previous in thread | raw e-mail | index | archive | help

On 09-Jan-01 Chris Dillon wrote:
> 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. :-)

This is correct. :)  There does not seem to be a standard unfortunately, though
I do think that Paul Saab (ps@FreeBSD.org) has been working on this some.

-- 

John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/
PGP Key: http://www.baldwin.cx/~john/pgpkey.asc
"Power Users Use the Power to Serve!"  -  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?XFMail.010109094832.jhb>