[3307] in linux-scsi channel archive
Re: scsi : aborting command due to timeout
daemon@ATHENA.MIT.EDU (Umesh Soni)
Thu Feb 12 23:06:50 1998
To: linux-scsi@vger.rutgers.edu
In-reply-to: Your message of "Thu, 12 Feb 1998 06:36:17 CST." <199802121236.GAA01745@iworks.InterWorks.org>
Date: Fri, 13 Feb 1998 00:18:41 +0000
From: Umesh Soni <U.Soni@cs.ucl.ac.uk>
>If you're not using auto-termination (which you shouldn't if it
>isn't detecting the correct termination settings), then the
>termination settings come from serial EEPROM. The driver uses
>the serial EEPROM settings as set by SCSI Select Utilities.
>Are you saying you don't have Adaptec BIOS and can't set
>termination settings? Or are you saying the no matter what
>you change in Adaptec BIOS, the driver isn't correctly setting
>the termination?
>
>If the latter, then look at read_seeprom() in the driver. Uncomment
>the section of code delineated by #if 0 ... #endif at the bottom
>of the function. This will dump the EEPROM settings. Now go into
>Scsi Select Utilities and change the termination settings and see
>what bits change when the serial EEPROM is dumped. Then look
>at the serial EEPROM definitions to make sure we're looking at
>the right bits for termination settings.
>
Ok. let me try and explain my predicament more clearly.
I have an onboard AIC7880, with the following devices configured;
-------- -------- -------- --------
-- | |-------| |-------| |-- | |
T | | high | | | | T | |
-- | |-------| |-------| |-- | |
| | | | | | | |
| | | | | | | |
-- | |-------| |-------| AIC |--------| |--
T | hd1 | low | hd2 | | 7880 | low |cdrom | T
-- | wide |-------| wide |-------| |--------|narrow|--
-------- -------- -------- --------
T = Termination.
Clearly, I need to configure the AIC7880 with Low-byte(off) and
High-byte(on)
My SCSISelect doesn't appear to give me the option of auto-detect.
The only setting in SCSISelect for termination refers to the Low-byte.
The High-byte is turned on/off via a motherboard jumper.
The problem with the linux aic7xxx driver is that regardless of what I
do with the motherboard (high-byte) jumper, the driver tells me that
high-byte termination is set to exactly the same state as the low-byte
termination.
So, the only settings that I can arrive at are;
Low-byte(on), High-byte(on) Both on.
or, Low-byte(off), High-byte(off). Both off.
Dan, I have done as you suggested above, these are the boot messages
for the four different combinations.
dump1.
SCSI Select termination: enabled.
mobo jumper open.
: aic7xxx: <Adaptec AIC-7880 Ultra SCSI host adapter> at PCI 12/0
: aic7xxx: Loading serial EEPROM...Computed checksum 0x43a9, chksum read 0x43a9
: Serial EEPROM: 0x204 0x218 0x218 0x218 0x218 0x218 0x218 0x238
: 0x238 0x238 0x238 0x238 0x238 0x238 0x238 0x238
: 0x18b4 0x5c 0x2807 0xe010 0xff00 0xffff 0xffff 0xffff
: 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xff 0x43a9
: aic7xxx: Termination (Low ON, High ON)
dump2.
SCSI Select termination: enabled.
mobo jumper closed.
: aic7xxx: <Adaptec AIC-7880 Ultra SCSI host adapter> at PCI 12/0
: aic7xxx: Loading serial EEPROM...Computed checksum 0x43a9, chksum read 0x43a9
: Serial EEPROM: 0x204 0x218 0x218 0x218 0x218 0x218 0x218 0x238
: 0x238 0x238 0x238 0x238 0x238 0x238 0x238 0x238
: 0x18b4 0x5c 0x2807 0xe010 0xff00 0xffff 0xffff 0xffff
: 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xff 0x43a9
: aic7xxx: Termination (Low ON, High ON)
dump3.
SCSI Select termination: disabled.
mobo jumper open.
: aic7xxx: <Adaptec AIC-7880 Ultra SCSI host adapter> at PCI 12/0
: aic7xxx: Loading serial EEPROM...Computed checksum 0x439d, chksum read 0x439d
: Serial EEPROM: 0x204 0x218 0x218 0x218 0x218 0x218 0x218 0x238
: 0x238 0x238 0x238 0x238 0x238 0x238 0x238 0x238
: 0x18b4 0x50 0x2807 0xe010 0xff00 0xffff 0xffff 0xffff
: 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xff 0x439d
: aic7xxx: Termination (Low OFF, High OFF)
dump44.
SCSI Select termination: disabled.
mobo jumper closed.
: aic7xxx: <Adaptec AIC-7880 Ultra SCSI host adapter> at PCI 12/0
: aic7xxx: Loading serial EEPROM...Computed checksum 0x439d, chksum read 0x439d
: Serial EEPROM: 0x204 0x218 0x218 0x218 0x218 0x218 0x218 0x238
: 0x238 0x238 0x238 0x238 0x238 0x238 0x238 0x238
: 0x18b4 0x50 0x2807 0xe010 0xff00 0xffff 0xffff 0xffff
: 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xff 0x439d
: aic7xxx: Termination (Low OFF, High OFF)
I have done diffs of the above, and what I find is that;
dump1=dump2 and dump3=dump4
The upshot appears that the motherboard jumper has no effect on the
EEPROM dump.
Perhaps the motherboard jumper is a hard switch that controls the
High-byte termination directly and that the linux driver is
incorrectly displaying it's state during the boot messages.
Without resorting to expensive bus sniffers, is there a way that I can
check the state of the aic7880 High-byte terminator, independantly of
the EEPROM?
Cheers
Umesh Soni.