From owner-FreeBSD-users-jp@jp.freebsd.org  Thu Apr 17 11:45:04 1997
Received: by jaz.jp.freebsd.org (8.8.5+2.7Wbeta5/8.7.3) id LAA14430
	Thu, 17 Apr 1997 11:45:04 +0900 (JST)
Received: by jaz.jp.freebsd.org (8.8.5+2.7Wbeta5/8.7.3) with ESMTP id LAA14423
	for <FreeBSD-users-jp@jp.freebsd.org>; Thu, 17 Apr 1997 11:45:02 +0900 (JST)
Received: from adam.dsp.cl.nec.co.jp by research.gate.nec.co.jp (8.8.5+2.7Wbeta5/950912) with ESMTP id LAA08969; Thu, 17 Apr 1997 11:45:01 +0900 (JST)
Received: from mercury.dsp.cl.nec.co.jp by adam.dsp.cl.nec.co.jp (8.8.5+2.7Wbeta5/CL-960412) with SMTP id LAA23486; Thu, 17 Apr 1997 11:45:00 +0900 (JST)
Message-Id: <199704170245.LAA23486@adam.dsp.cl.nec.co.jp>
To: FreeBSD-users-jp@jp.freebsd.org
In-reply-to: Your message of Thu, 17 Apr 97 11:24:04 JST.
             <199704170224.LAA06612@boyoyon.crayfish.co.jp> 
Mime-Version: 1.0 (generated by tm-edit 7.79)
Content-Type: text/plain; charset=ISO-2022-JP
Date: Thu, 17 Apr 1997 11:44:55 +0900
From: Akihiro Hirano <hirano@dsp.cl.nec.co.jp>
Reply-To: FreeBSD-users-jp@jp.freebsd.org
Precedence: bulk
X-Distribute: distribute [version 2.1 (Alpha) patchlevel=19]
X-Sequence: FreeBSD-users-jp 11846
Subject: [FreeBSD-users-jp 11846] Re: 2.2.1-RELESE adc driver could notdrives a lot of disks 
Errors-To: owner-FreeBSD-users-jp@jp.freebsd.org
Sender: owner-FreeBSD-users-jp@jp.freebsd.org

>   AHA-2940 $B$N%G%P%I%i(B ahc $B$KCn$5$s$,!"(B2.1.7-RELEASE $B$+$i=;$_Ce$$$?(B
> $B$H$N$*OC$r$*M'C#$KJ9$-$^$7$?!#$=$l$O(B 2.2.1-RELEASE $B$K$b<u$17Q$,$l(B
> $B$F$$$k$H!#(B

$B!!>/$J$/$H$b!"(B2.1.6-RELEASE$B$K$O!"(Bahc$B%I%i%$%P$NCn$5$s$,=;$_IU$$$F$*$k$h(B
$B$&$G$9!#(B2.1.6-RELEASE$B!\(B3940$B$r%K%e!<%9%5!<%P$K$7$F$$$F!"KhF|$N$h$&$K(B
$B!V(Btimed out$B!W$G%Q%K%C%/$7$^$7$?!#(B

>   $B0l?M$G;H$&(B FreeBSD $B!J(BAHA-2940 $B$r;H$&%f!<%6$K<h$C$F!K$O(B 
> 2.1.5-RELEASE $B$,0lHV0BDj$7$F$$$k$H8@$($k$N$G$7$g$&$+!&!&!#(B

$B!!(B2.1.7.1-RELEASE$B$O$$$+$,$G$7$g$&$+!)!V(Btimed out$B!W$NCn$5$s$OB`<#$5$l$F(B
$B$$$k$h$&$G$9!#(Bssys (/usr/src/sys) $B$@$1(B2.1.7.1-RELEASE$B$HF~$lBX$($F!"%+!<(B
$B%M%k$@$1(B2.1.7.1-RELEASE$B$K$7$F$bBg>fIW$J$h$&$G$9!#6a=j$K$O!"(B
2.1.5-RELEASE$B$d(B2.1.6-RELEASE$B$N%+!<%M%k$@$1(B2.1.7.1-RELEASE$B$K$7$?%^%7%s(B
$B$,$"$j$^$9$,!"FC$K>c32$O$J$$$G$9!#(B

$B!!$?$@!"(Baic$B%I%i%$%P$O!"B>$K$b$I$3$+$KCn$5$s$,=;$_IU$$$F$$$k$i$7$/!"0l(B
$BEY$@$1!"(B

	ahc0: WARNING no command for scb 12 (cmdcmplt)
	QOUTCNT == 15
	ahc0: WARNING no command for scb 12 (cmdcmplt)
	QOUTCNT == 14

$B$H$$$&%(%i!<$N$"$H!"%Q%K%C%/$7$F%j%V!<%H$7$^$7$?!#860x$O$o$+$j$^$;$s!#(B
$B%K%e!<%9%5!<%P$H$7$F(B3$B=54VO"B31?E>$7$F!"$3$N%Q%K%C%/$,0l2s$G$9!#:FH/$b(B
$B$7$J$$$7!D(B


$B!!:G8e$K!"(B2.1.7.1-RELEASE$B$H(B2.2.1-RELEASE$B$N(B/usr/src/sys/i386/aicxxx.c$B$N(B
$B:9J,$rIU$1$F$*$-$^$9!#$4$/$o$:$+$N0c$$$G$9$M!#$`$7$m!"(B2.1.5$B$H(B2.1.7.1$B$N(B
$B0c$$$NJ}$,Bg$-$$$/$i$$!#(B

$B!!$G!"$J$+$K$O!"(B

-	if (curindex > ahc->scb_data->maxhscbs)
+	if (curindex >= ahc->scb_data->maxhscbs)

$B$N$h$&$J!"$I$A$i$+$,%P%0$8$c$J$$$+$H4*7+$j$?$/$J$k$h$&$J$N$b$"$j$^$9!#(B
$B$3$l0J30$G$b!"(B

-				if (scb->hscb->status != SCSI_QUEUE_FULL)
-					ahc_done(ahc, scb);
+				ahc_done(ahc, scb);

$B$d(B

-	unpause_sequencer(ahc, /*Unpause always*/FALSE);
+	if ((ahc->type & AHC_AIC78X0) == 0)
+		unpause_sequencer(ahc, /*Unpause always*/FALSE);

$B$"$?$j$b!"5$$K$J$j$^$9$M!D(B

========================================================================
--- 2.1.7.1/aic7xxx.c	Wed Mar 19 04:27:58 1997
+++ 2.2.1/aic7xxx.c	Tue Mar 25 04:17:33 1997
@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *      $Id: aic7xxx.c,v 1.29.2.33 1997/03/18 19:27:58 gibbs Exp $
+ *      $Id: aic7xxx.c,v 1.81.2.17 1997/03/24 19:17:33 gibbs Exp $
  */
 /*
  * TODO:
@@ -812,8 +812,7 @@
 							 scb->xs->error);
 					ahc_run_done_queue(ahc);
 				}
-				if (scb->hscb->status != SCSI_QUEUE_FULL)
-					ahc_done(ahc, scb);
+				ahc_done(ahc, scb);
 			}
 			ahc_outb(ahc, CLRINT, CLRCMDINT);
 			int_cleared++;
@@ -1334,13 +1333,8 @@
 				/*
 				 * XXX requeue this unconditionally.
 				 */
-				STAILQ_INSERT_TAIL(&ahc->waiting_scbs, scb,
-						   links);
-				scb->flags |= SCB_WAITINGQ;
-				/* Give the command a new lease on life */
-				untimeout(ahc_timeout, (caddr_t)scb);
-				timeout(ahc_timeout, (caddr_t)scb,
-					(scb->xs->timeout * hz) / 1000);
+				scb->xs->retries++;
+				scb->xs->error = XS_BUSY;
 				break;
 			}
 			/* Else treat as if it is a BUSY condition */
@@ -2242,9 +2236,9 @@
 		array_size = ahc->scb_data->maxscbs*sizeof(struct hardware_scb);
 		if (array_size > PAGE_SIZE) {
 			ahc->scb_data->hscbs = (struct hardware_scb *)
-					vm_page_alloc_contig(array_size, 0ul,
-							     0xffffffff,
-							     PAGE_SIZE);
+					contigmalloc(array_size, M_DEVBUF,
+						     M_NOWAIT, 0ul, 0xffffffff,
+						     PAGE_SIZE, 0x10000);
 		} else {
 			ahc->scb_data->hscbs = (struct hardware_scb *)
 				     malloc(array_size, M_DEVBUF, M_NOWAIT);
@@ -2566,7 +2560,12 @@
 {
 	struct scb *scb;
 
-	pause_sequencer(ahc);
+	/*
+	 * On aic78X0 chips, we rely on Auto Access Pause (AAP)
+	 * instead of doing an explicit pause/unpause.
+	 */
+	if ((ahc->type & AHC_AIC78X0) == 0)
+		pause_sequencer(ahc);
 
 	while ((scb = ahc->waiting_scbs.stqh_first) != NULL) {
 
@@ -2588,7 +2587,8 @@
 			 */
 			ahc->curqincnt++;
 	}
-	unpause_sequencer(ahc, /*Unpause always*/FALSE);
+	if ((ahc->type & AHC_AIC78X0) == 0)
+		unpause_sequencer(ahc, /*Unpause always*/FALSE);
 }
 
 /*
@@ -3185,7 +3185,7 @@
 			break;
 	}
 	ahc_outb(ahc, SCBPTR, saved_scbptr);
-	if (curindex > ahc->scb_data->maxhscbs)
+	if (curindex >= ahc->scb_data->maxhscbs)
 		curindex = SCB_LIST_NULL;
 
 	return curindex;
========================================================================
