Bug 5955

Summary: Speed negotiation between scsi driver aic79xx and hardware raid (IFT-7200) fails
Product: SCSI Drivers Reporter: Horst Prote (prote)
Component: OtherAssignee: Hannes Reinecke (hare)
Status: CLOSED PATCH_ALREADY_AVAILABLE    
Severity: high CC: kernel
Priority: P2    
Hardware: i386   
OS: Linux   
Kernel Version: 2.6.16-rc1 Subsystem:
Regression: --- Bisected commit-id:
Attachments: kernel-config-x86-2.6.16-rc1
complete dmesg output of vanilla 2.6.16-rc1
complete /proc/scsi/aic79xx/0 of vanilla 2.6.16-rc1
kernel-config-x86-2.6.17-rc5
complete dmesg output of vanilla 2.6.17-rc5
complete /proc/scsi/aic79xx/0 of vanilla 2.6.17-rc5

Description Horst Prote 2006-01-25 07:22:03 UTC
Most recent kernel where this bug did not occur: 2.6.11-hardened-r15
Distribution: Gentoo
Hardware Environment:
  motherboard: Intel SE7501WV2, Dual Xeon 3.066 GHz, hyperthreading, 4096 Mbyte RAM
  SCSI Controller: (from lspci)
             04:07.0 SCSI storage controller: Adaptec AIC-7902 U320 (rev 03)
             04:07.1 SCSI storage controller: Adaptec AIC-7902 U320 (rev 03)
  ext. RAID: Triple Stor VISMASTER IDE-SCSI 960GB, raid5 with one spare disk
             Model: IFT-7200
  system disk: SEAGATE   Model: ST3146807LC
Software Environment:
Problem Description:
Speed negotiation between scsi driver aic79xx and hardware raid (IFT-7200)
fails. I detected this with kernels built from Gentoo's hardened sources. With
2.6.11-hardened-r15 everything was fine (from dmesg):
Linux version 2.6.11-hardened-r15 (root@kresse) (gcc version 3.3.5-20050130
(Gentoo Linux 3.3.5.20050130-r1, ssp-3.3.5.20050130-1, pie-8.7.7.1)) #1 SMP Wed
Jul 27 10:33:06 CEST 2005
...
scsi0 : Adaptec AIC79XX PCI-X SCSI HBA DRIVER, Rev 1.3.11
<Adaptec AIC7902 Ultra320 SCSI adapter>
aic7902: Ultra320 Wide Channel A, SCSI Id=7, PCI-X 67-100Mhz, 512 SCBs

(scsi0:A:1): 160.000MB/s transfers (80.000MHz DT, 16bit)
Vendor: IFT       Model: IFT-7200          Rev: 231T
Type:   Direct-Access                      ANSI SCSI revision: 04
scsi0:A:1:0: Tagged Queuing enabled.  Depth 48

(Kernel 2.6.11-hardened-r15, from /proc/scsi/aic79xx/0, the RAID)
...
Target 1 Negotiation Settings
        User: 160.000MB/s transfers (80.000MHz DT|IU|QAS, 16bit)
        Goal: 160.000MB/s transfers (80.000MHz DT, 16bit)
        Curr: 160.000MB/s transfers (80.000MHz DT, 16bit)
        Transmission Errors 0
        Channel A Target 1 Lun 0 Settings
                Commands Queued 45033
                Commands Active 0
                Command Openings 48
                Max Tagged Openings 48
                Device Queue Frozen Count 0
...

but with my next kernel 2.6.14-hardened-r3 the speed negotiation failed (from
dmesg):
Linux version 2.6.14-hardened-r3 (root@kresse) (gcc version 3.4.4 (Gentoo
3.4.4-r1, ssp-3.4.4-1.0, pie-8.7.8)) #1 SMP PREEMPT Tue Jan 17 15:16:47 CET
2006
...
scsi0 : Adaptec AIC79XX PCI-X SCSI HBA DRIVER, Rev 1.3.11
        <Adaptec AIC7902 Ultra320 SCSI adapter>
        aic7902: Ultra320 Wide Channel A, SCSI Id=7, PCI-X 67-100Mhz, 512 SCBs

  Vendor: IFT       Model: IFT-7200          Rev: 231T
  Type:   Direct-Access                      ANSI SCSI revision: 04
 target0:0:1: asynchronous.
scsi0:A:1:0: Tagged Queuing enabled.  Depth 48
 target0:0:1: Beginning Domain Validation
 target0:0:1: wide asynchronous.
 target0:0:1: Domain Validation skipping write tests
 target0:0:1: Ending Domain Validation

(kernel 2.6.14-hardened-r3, from /proc/scsi/aic79xx/0, the RAID)
...
Target 1 Negotiation Settings
        User: 320.000MB/s transfers (160.000MHz RDSTRM|DT|IU|QAS, 16bit)
        Goal: 3.300MB/s transfers
        Curr: 3.300MB/s transfers
        Channel A Target 1 Lun 0 Settings
                Commands Queued 46461
                Commands Active 0
                Command Openings 48
                Max Tagged Openings 48
                Device Queue Frozen Count 0
...

Today I tried kernel 2.6.16-rc1 (vanilla kernel without gentoo patches) and the
problem remains (from dmesg):
Linux version 2.6.16-rc1 (root@kresse) (gcc version 3.4.4 (Gentoo 3.4.4-r1,
ssp-3.4.4-1.0, pie-8.7.8)) #1 SMP PREEMPT Mon Jan 23 15:31:09 CET 2006
BIOS-provided physical RAM map:
...
scsi0 : Adaptec AIC79XX PCI-X SCSI HBA DRIVER, Rev 3.0
        <Adaptec AIC7902 Ultra320 SCSI adapter>
        aic7902: Ultra320 Wide Channel A, SCSI Id=7, PCI-X 67-100Mhz, 512 SCBs

  Vendor: IFT       Model: IFT-7200          Rev: 231T
  Type:   Direct-Access                      ANSI SCSI revision: 04
 target0:0:1: asynchronous
scsi0:A:1:0: Tagged Queuing enabled.  Depth 48
 target0:0:1: Beginning Domain Validation
 target0:0:1: wide asynchronous
 target0:0:1: Domain Validation skipping write tests
 target0:0:1: Ending Domain Validation

(kernel 2.6.16-rc1, from /proc/scsi/aic79xx/0, the RAID)
...
Target 1 Negotiation Settings
	User: 160.000MB/s transfers (80.000MHz RDSTRM|DT|IU|QAS, 16bit)
	Goal: 3.300MB/s transfers
	Curr: 3.300MB/s transfers
	Channel A Target 1 Lun 0 Settings
		Commands Queued 16064
		Commands Active 0
		Command Openings 48
		Max Tagged Openings 48
		Device Queue Frozen Count 0
...

(See also the bug I filed in the gentoo bugzilla
http://bugs.gentoo.org/show_bug.cgi?id=119431)

Steps to reproduce:
Compiling kernel-2.6.16-rc1 withe the attached config.
Booting this kernel.
Checking dmesg and /proc/scsi/aic79xx/0 for the speed.
Comment 1 Horst Prote 2006-01-25 07:25:15 UTC
Created attachment 7136 [details]
kernel-config-x86-2.6.16-rc1
Comment 2 Horst Prote 2006-01-25 07:30:09 UTC
Created attachment 7137 [details]
complete dmesg output of vanilla 2.6.16-rc1
Comment 3 Horst Prote 2006-01-25 07:32:13 UTC
Created attachment 7138 [details]
complete /proc/scsi/aic79xx/0 of vanilla 2.6.16-rc1
Comment 4 Horst Prote 2006-06-08 09:46:42 UTC
Today I tried kernel 2.6.17-rc5 (vanilla kernel without gentoo patches) and with
two changes in the Adaptec BIOS (both are required for success):
- changing speed for ID 1 (the SCSI ID of the RAID) from 320 to 160
- disabled Domain Validation
speed negotiation between scsi driver aic79xx and raid was successfull (from dmesg):
Linux version 2.6.17-rc5 (root@kresse) (gcc version 3.4.6 (Gentoo 3.4.6-r1,
ssp-3.4.5-1.0, pie-8.7.9)) #1 SMP PREEMPT Wed Jun 7 18:03:19 CEST 2006
...
scsi0 : Adaptec AIC79XX PCI-X SCSI HBA DRIVER, Rev 3.0
        <Adaptec AIC7902 Ultra320 SCSI adapter>
        aic7902: Ultra320 Wide Channel A, SCSI Id=7, PCI-X 67-100Mhz, 512 SCBs

  Vendor: IFT       Model: IFT-7200          Rev: 231T
  Type:   Direct-Access                      ANSI SCSI revision: 04
 target0:0:1: asynchronous
scsi0:A:1:0: Tagged Queuing enabled.  Depth 48
 target0:0:1: Beginning Domain Validation
 target0:0:1: wide asynchronous
 target0:0:1: FAST-80 WIDE SCSI 160.0 MB/s DT (12.5 ns, offset 62)
 target0:0:1: Domain Validation skipping write tests
 target0:0:1: Ending Domain Validation
...

For the kernel config, complete dmesg output and /proc/scsi/aic79xx/0 see the
attachments.
Comment 5 Horst Prote 2006-06-08 09:48:46 UTC
Created attachment 8273 [details]
kernel-config-x86-2.6.17-rc5
Comment 6 Horst Prote 2006-06-08 09:50:24 UTC
Created attachment 8274 [details]
complete dmesg output of vanilla 2.6.17-rc5
Comment 7 Horst Prote 2006-06-08 09:51:18 UTC
Created attachment 8275 [details]
complete /proc/scsi/aic79xx/0 of vanilla 2.6.17-rc5
Comment 8 Hannes Reinecke 2006-10-24 00:20:37 UTC
So where is the Problem? If you disable Domain Validation from the BIOS it'll
only affect the BIOS scan, not the Linux driver.
And yes, there are broken backplanes which do _not_ support 320MB/s transfers,
mostly the external ones. For those we can't really adjust DV properly but they
rather have to be set via the BIOS (those values will be read from the linux
driver).
So we can close this issue, right?
Comment 9 Horst Prote 2006-10-24 00:38:08 UTC
Right!

But let me one thing point out:
I also tried Gentoo's 2.6.14-hardened-r8 with the two changes in the Adaptec BIOS
but had no success.
Comment 10 Hannes Reinecke 2006-10-24 00:40:19 UTC
That's because I fixed the driver in the meantime :-)