Bug 24712

Summary: Aic7xxx and 160M drives : failure
Product: [Retired] Red Hat Raw Hide Reporter: Need Real Name <donaldlf>
Component: kernelAssignee: Dave Jones <davej>
Status: CLOSED WONTFIX QA Contact: Brock Organ <borgan>
Severity: medium Docs Contact:
Priority: medium    
Version: 1.0CC: pfrields
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2004-10-30 03:39:49 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Need Real Name 2001-01-23 18:17:17 UTC
Hello,
  Just mirroring this bug over to you. 

the stoch 2.2.14 - 2.4.0 aic7xxx drive is BROKEN in relation
to 160M controllers. the TCQ logic is flawed. There are fixes

1. Disable TCQ for the AIC7xxx driver. (Config file option)

2. Use the new beta driver.

       http://people.FreeBSD.org/~gibbs/linux/
       linux-aic7xxx-6.0.9BETA-2.4.0.diffs

3. Use the patch below:

I have notified the powers that be and the kernel-list has a thread
relating to this. But wile in bugzilla I thought I would drop
one to you :)

Leslie Donaldson


*** linux/drivers/scsi/aic7xxx.c.2.4.0-12       Sat Jan  6 21:55:47 2001
--- linux/drivers/scsi/aic7xxx.c        Sat Jan  6 22:08:12 2001
***************
*** 7073,7078 ****
--- 7073,7092 ----
        else
        {
  
+         if(((strcmp("Adaptec AIC-7892 Ultra 160/m SCSI host
adapter",board_names[p->board_name_index])) == 0 ) ||
+            ((strcmp("Adaptec AIC-7899 Ultra 160/m SCSI host
adapter",board_names[p->board_name_index])) == 0 ))
+         {
+           /* The TCQ code for 160M devices is BROKEN */
+           /* This is a quick, dirty, sad fix until I have time for a
better */
+           /* one. We do it this way in case the driver is supporting two
seperate */
+           /* styles of scsi chipsets... I do have two boards so it does
happen */
+           tag_enabled = FALSE;
+           device->queue_depth = 3;  /* Tagged queueing is disabled. */
+           printk(INFO_LEAD "DISABLED TAGGED QUEUING, queue depth %d.\n",
+                  p->host_no, device->channel, device->id,
+                  device->lun, 0);
+         }
+         else
          if (aic7xxx_tag_info[p->instance].tag_commands[tindex] == 255)
          {
            tag_enabled = FALSE;