Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 25 Sep 2000 10:55:29 -0500
From:      "Jonel Rienton" <jmr@freebsduser.org>
To:        "Justin T. Gibbs" <gibbs@plutotech.com>
Cc:        <stable@FreeBSD.org>
Subject:   Re: MFC of ahc driver updates (long-ish) 
Message-ID:  <010e01c02709$075edbe0$17161d0a@jonelrienton.org>
References:  <200009251501.JAA44574@pluto.plutotech.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Justin,

it didn't get hit.

Jonel Rienton
http://qmail.freebsduser.org
sent by qmail-1.03 on a FreeBSD 4.1-STABLE
----- Original Message ----- 
From: "Justin T. Gibbs" <gibbs@plutotech.com>
To: "Jonel Rienton" <jmr@freebsduser.org>
Cc: <stable@FreeBSD.org>
Sent: Monday, September 25, 2000 10:02 AM
Subject: Re: MFC of ahc driver updates (long-ish) 


| >Justin,
| >
| >i've attached the log today.  thanks.
| 
| In the future, send text as text.  Using uudecode is a pain.
| 
| I believe the your problem is caused by a firmware bug in
| the Seagate drive and perhaps the aic7xxx driver being
| overly strict in its conformance to the SPI-3 spec.  If
| you search for this code in aic7xxx.c:
| 
|                         /*
|                          * According to the spec, a DT only
|                          * period factor with no DT option
|                          * set implies async.
|                          */
|                         if ((ppr_options & MSG_EXT_PPR_DT_REQ) == 0
|                          && period == 9)
|                                 offset = 0;
| 
| And add braces and a printf to where offset is set to 0, I would
| bet money that your printf will get hit.  The code might look like
| this:
| 
|                         if ((ppr_options & MSG_EXT_PPR_DT_REQ) == 0
|                          && period == 9) {
| printf("%s: target %d returned DT sync period "
|        "without specifying DT transfers. "
|        "Async transfers implied.\n",
|                                        ahc_name(ahc), devinfo->target);
|                                 offset = 0;
| }
| 
| I can't see any other way for the driver to drop all the way to async
| like this.  The funny thing is that the drive seems to be agreeing that
| transfers are now async since you are not getting parity errors for later
| I/O.  Very odd.
| 
| If the printf does get hit, you should be able to run the drive at 40MHz
| sync.  Just lower the negotiated rate using SCSI-Select.  I'm going to
| see if I can dig up one of these drives at work and see if I can get
| similar behavior out of it.
| 
| --
| Justin
| 
| 
| 
| To Unsubscribe: send mail to majordomo@FreeBSD.org
| with "unsubscribe freebsd-stable" in the body of the message
| 



To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?010e01c02709$075edbe0$17161d0a>