summaryrefslogtreecommitdiffstats
path: root/sys/dev/aic7xxx
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1996-05-27 23:16:55 +0000
committergibbs <gibbs@FreeBSD.org>1996-05-27 23:16:55 +0000
commitfe649e095b46b0851fbfd13f489e2d3181daf9d7 (patch)
treeb2ebbc3e37d963c55a064fa1fa939b76b212d62b /sys/dev/aic7xxx
parentf2d4e834375d48321028a7f0d0796019497930ab (diff)
downloadFreeBSD-src-fe649e095b46b0851fbfd13f489e2d3181daf9d7.zip
FreeBSD-src-fe649e095b46b0851fbfd13f489e2d3181daf9d7.tar.gz
Fix a race condition in p_mesgout* and inb* code that could allow a
phasemiss to sneak by without detection. This should fix the Wide/Narrow boot problems that have been reported since this bug caused the driver ignore a narrow target rejecting wide negotiation.
Diffstat (limited to 'sys/dev/aic7xxx')
-rw-r--r--sys/dev/aic7xxx/aic7xxx.seq6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/dev/aic7xxx/aic7xxx.seq b/sys/dev/aic7xxx/aic7xxx.seq
index c305043..7bc1005 100644
--- a/sys/dev/aic7xxx/aic7xxx.seq
+++ b/sys/dev/aic7xxx/aic7xxx.seq
@@ -39,7 +39,7 @@
*
*-M************************************************************************/
-VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.35 1996/05/21 18:32:22 gibbs Exp $"
+VERSION AIC7XXX_SEQ_VER "$Id: aic7xxx.seq,v 1.36 1996/05/23 15:01:47 gibbs Exp $"
#include "../../dev/aic7xxx/aic7xxx_reg.h"
@@ -495,11 +495,11 @@ p_mesgout_start:
* a MESSAGE REJECT.
*/
p_mesgout_loop:
- test SSTAT1,PHASEMIS jnz p_mesgout_phasemis
test SSTAT0,SPIORDY jz p_mesgout_loop
cmp DINDEX,1 jne p_mesgout_outb /* last byte? */
mvi CLRSINT1,CLRATNO /* drop ATN */
p_mesgout_outb:
+ test SSTAT1,PHASEMIS jnz p_mesgout_phasemis
dec DINDEX
or CLRSINT0, CLRSPIORDY
mov SCSIDATL,SINDIR
@@ -862,8 +862,8 @@ inb_next:
or CLRSINT0, CLRSPIORDY
mov NONE,SCSIDATL /*dummy read from latch to ACK*/
inb_next_wait:
- test SSTAT1,PHASEMIS jnz mesgin_phasemis
test SSTAT0,SPIORDY jz inb_next_wait /* wait for next byte */
+ test SSTAT1,PHASEMIS jnz mesgin_phasemis
inb_first:
mov DINDEX,SINDEX
mov DINDIR,SCSIBUSL ret /*read byte directly from bus*/
OpenPOWER on IntegriCloud