Subject: Re: st tape driver
To: None <carrel@cisco.com, port-hp300@sun-lamp.cs.berkeley.edu>
From: Mike Hibler <mike@cs.utah.edu>
List: port-hp300
Date: 06/10/1994 09:52:44
Part (most? all?) of the problem is due to the fact that the hp300 SCSI
code doesn't do connect/disconnect so the bus is locked up for the duration
of the operation. Another unfortunate side-effect is that the SCSI code is
(improperly) holding on to one of the two HP DMA channels during this non-
transfer operation. Hence, the dma timeout messages. Never got around to
fixing either of these, we always just put our SCSI tape drives on a
different bus (host adaptor)-- one of the benefits of having lots of HP
hardware!
BTW: there was a divide-by-zero problem in the Lite SCSI tape driver:
*** /4.4BSD-Lite/sys/hp300/dev/st.c Wed Jan 12 16:36:51 1994
--- st.c Fri May 27 12:46:28 1994
***************
*** 37,43 ****
*
* from: Utah $Hdr: st.c 1.11 92/01/21$
*
! * @(#)st.c 8.3 (Berkeley) 1/12/94
*/
/*
--- 37,43 ----
*
* from: Utah $Hdr: st.c 1.11 92/01/21$
*
! * @(#)st.c 8.4 (Berkeley) 5/27/94
*/
/*
***************
*** 949,958 ****
xp->exb_xsense.tplft1 << 8 |
xp->exb_xsense.tplft0);
mtget->mt_resid = resid / 1000;
! mtget->mt_erreg |= (((xp->exb_xsense.rwerrcnt2 << 16 |
! xp->exb_xsense.rwerrcnt1 << 8 |
! xp->exb_xsense.rwerrcnt0) * 100) /
! (sc->sc_numblks - resid)) & 0xff;
} else if (xp->sc_xsense.valid) {
resid = ((xp->sc_xsense.info1 << 24) |
(xp->sc_xsense.info2 << 16) |
--- 949,960 ----
xp->exb_xsense.tplft1 << 8 |
xp->exb_xsense.tplft0);
mtget->mt_resid = resid / 1000;
! if (sc->sc_numblks - resid)
! mtget->mt_erreg |=
! (((xp->exb_xsense.rwerrcnt2 << 16 |
! xp->exb_xsense.rwerrcnt1 << 8 |
! xp->exb_xsense.rwerrcnt0) * 100) /
! (sc->sc_numblks - resid)) & 0xff;
} else if (xp->sc_xsense.valid) {
resid = ((xp->sc_xsense.info1 << 24) |
(xp->sc_xsense.info2 << 16) |
------------------------------------------------------------------------------