Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Mar 2004 17:40:33 -0500
From:      Don Bowman <don@sandvine.com>
To:        'Doug Ambrisko' <ambrisko@ambrisko.com>, Don Bowman <don@sandvine.com>
Cc:        freebsd-hackers@freebsd.org
Subject:   RE: Intel i8xx watchdog driver
Message-ID:  <FE045D4D9F7AED4CBFF1B3B813C85337045D8738@mail.sandvine.com>

next in thread | raw e-mail | index | archive | help
From: Doug Ambrisko [mailto:ambrisko@ambrisko.com]
> Don Bowman writes:
> | The Intel ICH3 (and probably all) has the feature it can
> | issue an SMI on first count-down to 0, then a hard reset
> | on 2nd. What we did was implement an SMM handler (in bios)
> | that, when called due to watchdog, issued an NMI and did
> | a return from smm.
> | In FreeBSD, an NMI handler caught this (sometimes :),
> | poke around to send a bit of data out to serial, moved the
> | timer to the maximum value without reseting it, and then
> | called panic [after mucking with cpl etc to pretend to
> | own all locks :]
> | If the NMI handler didn't get run, the hardware counted
> | to 0 again and reset.
> | If the NMI handler did get run, and then wedged somehow
> | in the panic or whatever, the hardware counted to 0,
> | and the system reset.
> | If all worked well, you got a core, but at a minimum
> | the system reset, and usually you got at least the
> | serial output of some of the 'why'.
> | 
> | The SMI is non-maskable (and higher priority than NMI).
> 
> That sounds pretty cool.  There was some bits in the ICH that
> prevented an NMI to get to the CPU unless set a certain way.
> I was generating an NMI via the PCI but.  BTW you can do the
> paper clip trick on PCI.  The ICH seemed to be only one shot so
> it de-bounced it.  I could get multiple on a CPU NMI pin. 
> 
> How hard is to setup and trap SMI via a FreeBSD only solution?
> 
> I haven't really looked much at that area but sounds useful.
> 
> Doug A.
> 

SMI under freebsd? Ha ha... Good luck! It didn't look very
easy. The SMM, for those who don't know it, is a virtual
86, real-mode thing, at a location in ram which is locked
and unaccessible unless you are in smm mode :) If you
are lucky, your bios didn't lock you out of it.

there's an NMI_NOW in the ICH which can be used to
programmatically cause an NMI. Some systems route this
funny when in SMP mode... [ie nowhere???]. Some systems
may have problems with this and the jumper/button
for generating NMI.



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