diff options
author | gibbs <gibbs@FreeBSD.org> | 1996-05-27 23:16:55 +0000 |
---|---|---|
committer | gibbs <gibbs@FreeBSD.org> | 1996-05-27 23:16:55 +0000 |
commit | fe649e095b46b0851fbfd13f489e2d3181daf9d7 (patch) | |
tree | b2ebbc3e37d963c55a064fa1fa939b76b212d62b /sys/dev | |
parent | f2d4e834375d48321028a7f0d0796019497930ab (diff) | |
download | FreeBSD-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')
-rw-r--r-- | sys/dev/aic7xxx/aic7xxx.seq | 6 |
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*/ |