Date: Fri, 21 Jul 1995 09:31:01 +1000 From: Bruce Evans <bde@zeta.org.au> To: bde@zeta.org.au, terry@cs.weber.edu Cc: freebsd-hackers@freebsd.org, hm@ernie.altona.hamburg.com Subject: Re: FreeBSD 2.0.5 system hangs Message-ID: <199507202331.JAA10951@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>> Perhaps because it isn't true. IRQ 7 is the interrupt for garbage >> trapped interrupts. >------ >> Using it for sio shouldn't cause a hang. Sio will >> ignore any extra interrupts and recover from others. >------ >I wasn't aware of this ! >I thought that sio did wierd things in it's probe to cause the interrupt >to be generated (a message to that effect from you a couple of days ago >is what gave me that impression). Only in the probe. It actually does weird things to cause the interrupt to NOT be generated so that it can test the interrupt-pending bit in the 8259. I didn't remember the interrupt glitch problem when I wrote the probe. Interrupt glitches are not maskable in the 8259. The probe disables interrupts in both the cpu and the 8259, but DELAY() reenables them in the cpu and glitches are maskable in the 8259. This problem also affects siointrts, the nonstandard version of siointr that does timestamps. BTW, our NMI handling is very broken. The NMI handler is a trap gate but should be an interrupt gate, and the normal trap and interrupt entry code isn't quite right for it (interrupts probably need to be reenabled - DELAY() may do it even if you don't want it - and the NMI may recurse after the each iret from a normal interrupt or trap handler). Fortunately NMIs are rare. Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199507202331.JAA10951>