[3307] in linux-scsi channel archive

home help back first fref pref prev next nref lref last post

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.


home help back first fref pref prev next nref lref last post