[3296] in linux-scsi channel archive
Re: scsi : aborting command due to timeout
daemon@ATHENA.MIT.EDU (Umesh Soni)
Wed Feb 11 21:22:20 1998
To: linux-scsi@vger.rutgers.edu
Date: Wed, 11 Feb 1998 20:01:32 +0000
From: Umesh Soni <U.Soni@cs.ucl.ac.uk>
>
>> I am getting lots of these errors when running 4 consecutive bonnies
>> (two bonnies on each hd -on seperate partitions) on my system,
>> occasionally the system will completely hang when subjected to this
>> torture test.
>
>Well finally someone else has the same problem. Mine however is timeouts
>during a tape backup and not hard disk time outs. My hard drives seem to
>be fine. No one has yet to answer my question however:
>
I have tried to pin this issue down a little. I've looked at a another
similar vintage Gigabyte GA-586DX dual pentium motherboard -exactly the
same thing ie. aic7xxx driver cannot detect a change in the high byte
scsi termination (via the motherboard jumper).
Now, unlesss the GA586DX/AIC7880 combination is broken, this looks
like a driver issue.
Looking into Doug Ledford's patched 5.0.5 aic7xxx driver I have made
the following rather crude changes to force the AIC7880's high byte
termination ON ... (I am of course assuming that the jumper is a
mechanism for informing the driver to turn on high byte termination
and that it does not in itself directly turn termination no/off)
Can someone in the KNOW tell me if this is correct ? If so, perhaps
the driver maintainers can look into this issue and provide a more
elegant solution (ie have the driver correctly identify the state of
the mobo jumper) :-)
/*+F*************************************************************************
* Function:
* configure_termination
*
* Description:
* Configures the termination settings on PCI adapters that have
* SEEPROMs available.
*-F*************************************************************************/
added...
int aic7xxx_force_highterm;
changed... (with debugging printks to see what is going on)
else
{
printk(KERN_INFO "aic7xxx: Setting Termination.\n");
if (adapter_control & CFSTERM)
{
printk(KERN_INFO "aic7xxx: Setting low terminator.\n");
*sxfrctl1 |= STPWEN;
}
outb(SEEMS | SEECS, p->base + SEECTL);
/*
* Configure high byte termination.
*/
if (adapter_control & CFWSTERM)
{
printk(KERN_INFO "aic7xxx: Setting high terminator ON.\n");
write_brdctl(p, BRDDAT6);
}
else
{
printk(KERN_INFO "aic7xxx: Setting high terminator OFF.\n");
write_brdctl(p, 0);
}
if (TRUE)
{
printk(KERN_INFO "aic7xxx: Forcing high terminator ON.\n");
write_brdctl(p, BRDDAT6);
aic7xxx_force_highterm=1;
}
else
{
printk(KERN_INFO "aic7xxx: Forcing high terminator OFF.\n");
write_brdctl(p, 0);
aic7xxx_force_highterm=0;
}
if (aic7xxx_verbose)
{
printk(KERN_INFO "aic7xxx: Termination (Low %s, High %s)\n",
(adapter_control & CFSTERM) ? "ON" : "OFF",
/*
(adapter_control & CFWSTERM) ? "ON" : "OFF");
*/
(aic7xxx_force_highterm) ? "ON" : "OFF");
}
}
Cheers.
Umesh Soni.