[net.bugs.4bsd] 4.3 BSD dmf driver reset bug

tas@mcnc.UUCP (Tim Seaver) (09/11/86)

The dmf driver distributed with 4.3 bsd does not correctly
handle UBA resets because the software-programmable interrupt
vector is not set in the dmfreset routine. The following diff 
fixes the problem. Your line numbers will probably vary.

diff /sys/vaxuba/dmf.c.old /sys/vaxuba/dmf.c.new
92a93,95
> /* Preserve the interrupt vector for UBA resets. */
> static int	dmf_vector[NDMF];
> 
159c162,163
< 	dmfaddr->dmfccsr0 = (cvec >> 2);
---
> 	dmf_vector[ctlr->ui_unit] = (cvec >> 2);
> 	dmfaddr->dmfccsr0 = dmf_vector[ctlr->ui_unit];
167c171,172
< 		dmfaddr->dmfccsr0 = (cvec - 2*8) >> 2;
---
> 		dmf_vector[ctlr->ui_unit] = (cvec - 2*8) >> 2;
> 		dmfaddr->dmfccsr0 = dmf_vector[ctlr->ui_unit];
819a825
> 		addr->dmfccsr0 = dmf_vector[dmf];