rws%mit-bold@sri-unix.UUCP (12/21/83)
From: Robert W. Scheifler <rws@mit-bold> Description: Despite my earlier bug fix for the spl1() in boot(), calling panic while executing on the interrupt stack still loses, because update() gets called, and eventually biowait(), which calls sleep(), which does an spl0(). A (disk) interrupt will then eventually cause an REI back on to the interrupt stack at IPL 0, which is illegal, causing a panic: Reserved operand. Repeat-By: Cause a panic in an interrupt service routine while there are outstanding disk writes. Fix: There is no easy fix as far as I can see. It might be better if such panics didn't try to update()?
fair@dual.UUCP (Erik E. Fair) (01/04/84)
Another annoying thing about panic in this vein: On our s-100 68000 System, we use some disk controllers (not by choice, I assure you) that LATCH their interrupts, so that you have to tell them to shut up. When you panic in the interrupt service routine of any of these devices, guess what? The panic keeps coming back again, and again... Since panic does an update(), is it assumed that disk drivers never panic? Didn't the PDP-11 ever have hardware that was brain damaged in this fashion? In the driver that I wrote for just such a board, I was eventually forced to write a quick macro for panic(), that printed a message and then went while(1); if for no other reason than to be able to read the panic message that I originally got... Erik E. Fair {ucbvax,amd70,zehntel,unisoft,onyx,its}!dual!fair Dual Systems Corporation, Berkeley, California