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>