Subject: autoconfigure hangs when probing RLV-12 controller Index: sys/autoconfig/rlauto.c 2.11BSD Description: If a RLV-12 controller is present in a Q-bus system (11/73) the system will hang when /etc/autoconfig attempts to force an interrupt. This behaviour was reported by two sites (one in Australia, the other in NewYork state). The UNIBUS RL controller does not have this problem. Repeat-By: Install a RLV-12 controller in a 11/73 system, add (or uncomment) the 'rl' line in /etc/dtab and attempt to boot the system. Fix: Many thanks to Paul Taylor (taylor@oswego.oswego.edu) for tracking this one down and supplying the fix below. Apparently the NOP command used in the UNIBUS case (and possibly with RLV-11 controllers) causes the RLV-12 to enter a maintenance mode, hanging the system. Using the GETSTATUS command avoids this problem and works with both the UNIBUS and Q-bus controllers. This fix has been tested in both Q-bus and UNIBUS systems. Apply the patch below, recompile and install autoconfig. -------------------------------------------------------------------------- *** /sys/autoconfig/rlauto.c.old Fri Apr 29 20:05:41 1988 --- /sys/autoconfig/rlauto.c Wed Jan 8 20:41:29 1992 *************** *** 3,9 **** * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * ! * @(#)rlauto.c 1.1 (2.10BSD Berkeley) 12/1/86 */ #include "param.h" --- 3,9 ---- * All rights reserved. The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * ! * @(#)rlauto.c 2.0 (2.11BSD Berkeley) 1/8/92 */ #include "param.h" *************** *** 15,21 **** rlprobe(addr) struct rldevice *addr; { ! stuff(RL_NOP | RL_IE, (&(addr->rlcs))); DELAY(10L); stuff(RL_CRDY, (&(addr->rlcs))); return(ACP_IFINTR); --- 15,23 ---- rlprobe(addr) struct rldevice *addr; { ! stuff(RLDA_RESET | RLDA_GS, (&(addr->rlda))); ! DELAY(10L); ! stuff(RL_GETSTATUS | RL_IE , (&(addr->rlcs))); DELAY(10L); stuff(RL_CRDY, (&(addr->rlcs))); return(ACP_IFINTR);