Intel i8xx watchdog driver

Don Bowman don at sandvine.com
Thu Mar 25 14:40:40 PST 2004


From: Doug Ambrisko [mailto:ambrisko at 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.



More information about the freebsd-hackers mailing list