Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | Notes for CPQFCTS driver for Compaq Tachyon TS |
| 2 | Fibre Channel Host Bus Adapter, PCI 64-bit, 66MHz |
| 3 | for Linux (RH 6.1, 6.2 kernel 2.2.12-32, 2.2.14-5) |
| 4 | SMP tested |
| 5 | Tested in single and dual HBA configuration, 32 and 64bit busses, |
| 6 | 33 and 66MHz. Only supports FC-AL. |
| 7 | SEST size 512 Exchanges (simultaneous I/Os) limited by module kmalloc() |
| 8 | max of 128k bytes contiguous. |
| 9 | |
| 10 | Ver 2.5.4 Oct 03, 2002 |
| 11 | * fixed memcpy of sense buffer in ioctl to copy the smaller defined size |
| 12 | Ver 2.5.3 Aug 01, 2002 |
| 13 | * fix the passthru ioctl to handle the Scsi_Cmnd->request being a pointer |
| 14 | Ver 2.5.1 Jul 30, 2002 |
| 15 | * fix ioctl to pay attention to the specified LUN. |
| 16 | Ver 2.5.0 Nov 29, 2001 |
| 17 | * eliminated io_request_lock. This change makes the driver specific |
| 18 | to the 2.5.x kernels. |
| 19 | * silenced excessively noisy printks. |
| 20 | |
| 21 | Ver 2.1.2 July 23, 2002 |
| 22 | * initialize DumCmnd->lun in cpqfcTS_ioctl (used in fcFindLoggedInPorts as LUN index) |
| 23 | |
| 24 | Ver 2.1.1 Oct 18, 2001 |
| 25 | * reinitialize Cmnd->SCp.sent_command (used to identify commands as |
| 26 | passthrus) on calling scsi_done, since the scsi mid layer does not |
| 27 | use (or reinitialize) this field to prevent subsequent comands from |
| 28 | having it set incorrectly. |
| 29 | |
| 30 | Ver 2.1.0 Aug 27, 2001 |
| 31 | * Revise driver to use new kernel 2.4.x PCI DMA API, instead of |
| 32 | virt_to_bus(). (enables driver to work w/ ia64 systems with >2Gb RAM.) |
| 33 | Rework main scatter-gather code to handle cases where SG element |
| 34 | lengths are larger than 0x7FFFF bytes and use as many scatter |
| 35 | gather pages as necessary. (Steve Cameron) |
| 36 | * Makefile changes to bring cpqfc into line w/ rest of SCSI drivers |
| 37 | (thanks to Keith Owens) |
| 38 | |
| 39 | Ver 2.0.5 Aug 06, 2001 |
| 40 | * Reject non-existent luns in the driver rather than letting the |
| 41 | hardware do it. (some HW behaves differently than others in this area.) |
| 42 | * Changed Makefile to rely on "make dep" instead of explicit dependencies |
| 43 | * ifdef'ed out fibre channel analyzer triggering debug code |
| 44 | * fixed a jiffies wrapping issue |
| 45 | |
| 46 | Ver 2.0.4 Aug 01, 2001 |
| 47 | * Incorporated fix for target device reset from Steeleye |
| 48 | * Fixed passthrough ioctl so it doesn't hang. |
| 49 | * Fixed hang in launch_FCworker_thread() that occurred on some machines. |
| 50 | * Avoid problem when number of volumes in a single cabinet > 8 |
| 51 | |
| 52 | Ver 2.0.2 July 23, 2001 |
| 53 | Changed the semiphore changes so the driver would compile in 2.4.7. |
| 54 | This version is for 2.4.7 and beyond. |
| 55 | |
| 56 | Ver 2.0.1 May 7, 2001 |
| 57 | Merged version 1.3.6 fixes into version 2.0.0. |
| 58 | |
| 59 | Ver 2.0.0 May 7, 2001 |
| 60 | Fixed problem so spinlock is being initialized to UNLOCKED. |
| 61 | Fixed updated driver so it compiles in the 2.4 tree. |
| 62 | |
| 63 | Ver 1.3.6 Feb 27, 2001 |
| 64 | Added Target_Device_Reset function for SCSI error handling |
| 65 | Fixed problem with not reseting addressing mode after implicit logout |
| 66 | |
| 67 | |
| 68 | Ver 1.3.4 Sep 7, 2000 |
| 69 | Added Modinfo information |
| 70 | Fixed problem with statically linking the driver |
| 71 | |
| 72 | Ver 1.3.3, Aug 23, 2000 |
| 73 | Fixed device/function number in ioctl |
| 74 | |
| 75 | Ver 1.3.2, July 27, 2000 |
| 76 | Add include for Alpha compile on 2.2.14 kernel (cpq*i2c.c) |
| 77 | Change logic for different FCP-RSP sense_buffer location for HSG80 target |
| 78 | And search for Agilent Tachyon XL2 HBAs (not finished! - in test) |
| 79 | |
| 80 | Tested with |
| 81 | (storage): |
| 82 | Compaq RA-4x000, RAID firmware ver 2.40 - 2.54 |
| 83 | Seagate FC drives model ST39102FC, rev 0006 |
| 84 | Hitachi DK31CJ-72FC rev J8A8 |
| 85 | IBM DDYF-T18350R rev F60K |
| 86 | Compaq FC-SCSI bridge w/ DLT 35/70 Gb DLT (tape) |
| 87 | (servers): |
| 88 | Compaq PL-1850R |
| 89 | Compaq PL-6500 Xeon (400MHz) |
| 90 | Compaq PL-8500 (500MHz, 66MHz, 64bit PCI) |
| 91 | Compaq Alpha DS20 (RH 6.1) |
| 92 | (hubs): |
| 93 | Vixel Rapport 1000 (7-port "dumb") |
| 94 | Gadzoox Gibralter (12-port "dumb") |
| 95 | Gadzoox Capellix 2000, 3000 |
| 96 | (switches): |
| 97 | Brocade 2010, 2400, 2800, rev 2.0.3a (& later) |
| 98 | Gadzoox 3210 (Fabric blade beta) |
| 99 | Vixel 7100 (Fabric beta firmare - known hot plug issues) |
| 100 | using "qa_test" (esp. io_test script) suite modified from Unix tests. |
| 101 | |
| 102 | Installation: |
| 103 | make menuconfig |
| 104 | (select SCSI low-level, Compaq FC HBA) |
| 105 | make modules |
| 106 | make modules_install |
| 107 | |
| 108 | e.g. insmod -f cpqfc |
| 109 | |
| 110 | Due to Fabric/switch delays, driver requires 4 seconds |
| 111 | to initialize. If adapters are found, there will be a entries at |
| 112 | /proc/scsi/cpqfcTS/* |
| 113 | |
| 114 | sample contents of startup messages |
| 115 | |
| 116 | ************************* |
| 117 | scsi_register allocating 3596 bytes for CPQFCHBA |
| 118 | ioremap'd Membase: c887e600 |
| 119 | HBA Tachyon RevId 1.2 |
| 120 | Allocating 119808 for 576 Exchanges @ c0dc0000 |
| 121 | Allocating 112904 for LinkQ @ c0c20000 (576 elements) |
| 122 | Allocating 110600 for TachSEST for 512 Exchanges |
| 123 | cpqfcTS: writing IMQ BASE 7C0000h PI 7C4000h |
| 124 | cpqfcTS: SEST c0e40000(virt): Wrote base E40000h @ c887e740 |
| 125 | cpqfcTS: New FC port 0000E8h WWN: 500507650642499D SCSI Chan/Trgt 0/0 |
| 126 | cpqfcTS: New FC port 0000EFh WWN: 50000E100000D5A6 SCSI Chan/Trgt 0/1 |
| 127 | cpqfcTS: New FC port 0000E4h WWN: 21000020370097BB SCSI Chan/Trgt 0/2 |
| 128 | cpqfcTS: New FC port 0000E2h WWN: 2100002037009946 SCSI Chan/Trgt 0/3 |
| 129 | cpqfcTS: New FC port 0000E1h WWN: 21000020370098FE SCSI Chan/Trgt 0/4 |
| 130 | cpqfcTS: New FC port 0000E0h WWN: 21000020370097B2 SCSI Chan/Trgt 0/5 |
| 131 | cpqfcTS: New FC port 0000DCh WWN: 2100002037006CC1 SCSI Chan/Trgt 0/6 |
| 132 | cpqfcTS: New FC port 0000DAh WWN: 21000020370059F6 SCSI Chan/Trgt 0/7 |
| 133 | cpqfcTS: New FC port 00000Fh WWN: 500805F1FADB0E20 SCSI Chan/Trgt 0/8 |
| 134 | cpqfcTS: New FC port 000008h WWN: 500805F1FADB0EBA SCSI Chan/Trgt 0/9 |
| 135 | cpqfcTS: New FC port 000004h WWN: 500805F1FADB1EB9 SCSI Chan/Trgt 0/10 |
| 136 | cpqfcTS: New FC port 000002h WWN: 500805F1FADB1ADE SCSI Chan/Trgt 0/11 |
| 137 | cpqfcTS: New FC port 000001h WWN: 500805F1FADBA2CA SCSI Chan/Trgt 0/12 |
| 138 | scsi4 : Compaq FibreChannel HBA Tachyon TS HPFC-5166A/1.2: WWN 500508B200193F50 |
| 139 | on PCI bus 0 device 0xa0fc irq 5 IObaseL 0x3400, MEMBASE 0xc6ef8600 |
| 140 | PCI bus width 32 bits, bus speed 33 MHz |
| 141 | FCP-SCSI Driver v1.3.0 |
| 142 | GBIC detected: Short-wave. LPSM 0h Monitor |
| 143 | scsi : 5 hosts. |
| 144 | Vendor: IBM Model: DDYF-T18350R Rev: F60K |
| 145 | Type: Direct-Access ANSI SCSI revision: 03 |
| 146 | Detected scsi disk sdb at scsi4, channel 0, id 0, lun 0 |
| 147 | Vendor: HITACHI Model: DK31CJ-72FC Rev: J8A8 |
| 148 | Type: Direct-Access ANSI SCSI revision: 02 |
| 149 | Detected scsi disk sdc at scsi4, channel 0, id 1, lun 0 |
| 150 | Vendor: SEAGATE Model: ST39102FC Rev: 0006 |
| 151 | Type: Direct-Access ANSI SCSI revision: 02 |
| 152 | Detected scsi disk sdd at scsi4, channel 0, id 2, lun 0 |
| 153 | Vendor: SEAGATE Model: ST39102FC Rev: 0006 |
| 154 | Type: Direct-Access ANSI SCSI revision: 02 |
| 155 | Detected scsi disk sde at scsi4, channel 0, id 3, lun 0 |
| 156 | Vendor: SEAGATE Model: ST39102FC Rev: 0006 |
| 157 | Type: Direct-Access ANSI SCSI revision: 02 |
| 158 | Detected scsi disk sdf at scsi4, channel 0, id 4, lun 0 |
| 159 | Vendor: SEAGATE Model: ST39102FC Rev: 0006 |
| 160 | Type: Direct-Access ANSI SCSI revision: 02 |
| 161 | Detected scsi disk sdg at scsi4, channel 0, id 5, lun 0 |
| 162 | Vendor: SEAGATE Model: ST39102FC Rev: 0006 |
| 163 | Type: Direct-Access ANSI SCSI revision: 02 |
| 164 | Detected scsi disk sdh at scsi4, channel 0, id 6, lun 0 |
| 165 | Vendor: SEAGATE Model: ST39102FC Rev: 0006 |
| 166 | Type: Direct-Access ANSI SCSI revision: 02 |
| 167 | Detected scsi disk sdi at scsi4, channel 0, id 7, lun 0 |
| 168 | Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.48 |
| 169 | Type: Direct-Access ANSI SCSI revision: 02 |
| 170 | Detected scsi disk sdj at scsi4, channel 0, id 8, lun 0 |
| 171 | Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.48 |
| 172 | Type: Direct-Access ANSI SCSI revision: 02 |
| 173 | Detected scsi disk sdk at scsi4, channel 0, id 8, lun 1 |
| 174 | Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.40 |
| 175 | Type: Direct-Access ANSI SCSI revision: 02 |
| 176 | Detected scsi disk sdl at scsi4, channel 0, id 9, lun 0 |
| 177 | Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.40 |
| 178 | Type: Direct-Access ANSI SCSI revision: 02 |
| 179 | Detected scsi disk sdm at scsi4, channel 0, id 9, lun 1 |
| 180 | Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.54 |
| 181 | Type: Direct-Access ANSI SCSI revision: 02 |
| 182 | Detected scsi disk sdn at scsi4, channel 0, id 10, lun 0 |
| 183 | Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.54 |
| 184 | Type: Direct-Access ANSI SCSI revision: 02 |
| 185 | Detected scsi disk sdo at scsi4, channel 0, id 11, lun 0 |
| 186 | Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.54 |
| 187 | Type: Direct-Access ANSI SCSI revision: 02 |
| 188 | Detected scsi disk sdp at scsi4, channel 0, id 11, lun 1 |
| 189 | Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.54 |
| 190 | Type: Direct-Access ANSI SCSI revision: 02 |
| 191 | Detected scsi disk sdq at scsi4, channel 0, id 12, lun 0 |
| 192 | Vendor: COMPAQ Model: LOGICAL VOLUME Rev: 2.54 |
| 193 | Type: Direct-Access ANSI SCSI revision: 02 |
| 194 | Detected scsi disk sdr at scsi4, channel 0, id 12, lun 1 |
| 195 | resize_dma_pool: unknown device type 12 |
| 196 | resize_dma_pool: unknown device type 12 |
| 197 | SCSI device sdb: hdwr sector= 512 bytes. Sectors= 35843670 [17501 MB] [17.5 GB] |
| 198 | sdb: sdb1 |
| 199 | SCSI device sdc: hdwr sector= 512 bytes. Sectors= 144410880 [70513 MB] [70.5 GB] |
| 200 | sdc: sdc1 |
| 201 | SCSI device sdd: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB] |
| 202 | sdd: sdd1 |
| 203 | SCSI device sde: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB] |
| 204 | sde: sde1 |
| 205 | SCSI device sdf: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB] |
| 206 | sdf: sdf1 |
| 207 | SCSI device sdg: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB] |
| 208 | sdg: sdg1 |
| 209 | SCSI device sdh: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB] |
| 210 | sdh: sdh1 |
| 211 | SCSI device sdi: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB] |
| 212 | sdi: sdi1 |
| 213 | SCSI device sdj: hdwr sector= 512 bytes. Sectors= 2056160 [1003 MB] [1.0 GB] |
| 214 | sdj: sdj1 |
| 215 | SCSI device sdk: hdwr sector= 512 bytes. Sectors= 2052736 [1002 MB] [1.0 GB] |
| 216 | sdk: sdk1 |
| 217 | SCSI device sdl: hdwr sector= 512 bytes. Sectors= 17764320 [8673 MB] [8.7 GB] |
| 218 | sdl: sdl1 |
| 219 | SCSI device sdm: hdwr sector= 512 bytes. Sectors= 8380320 [4091 MB] [4.1 GB] |
| 220 | sdm: sdm1 |
| 221 | SCSI device sdn: hdwr sector= 512 bytes. Sectors= 17764320 [8673 MB] [8.7 GB] |
| 222 | sdn: sdn1 |
| 223 | SCSI device sdo: hdwr sector= 512 bytes. Sectors= 17764320 [8673 MB] [8.7 GB] |
| 224 | sdo: sdo1 |
| 225 | SCSI device sdp: hdwr sector= 512 bytes. Sectors= 17764320 [8673 MB] [8.7 GB] |
| 226 | sdp: sdp1 |
| 227 | SCSI device sdq: hdwr sector= 512 bytes. Sectors= 2056160 [1003 MB] [1.0 GB] |
| 228 | sdq: sdq1 |
| 229 | SCSI device sdr: hdwr sector= 512 bytes. Sectors= 2052736 [1002 MB] [1.0 GB] |
| 230 | sdr: sdr1 |
| 231 | |
| 232 | ************************* |
| 233 | |
| 234 | If a GBIC of type Short-wave, Long-wave, or Copper is detected, it will |
| 235 | print out; otherwise, "none" is displayed. If the cabling is correct |
| 236 | and a loop circuit is completed, you should see "Monitor"; otherwise, |
| 237 | "LoopFail" (on open circuit) or some LPSM number/state with bit 3 set. |
| 238 | |
| 239 | |
| 240 | ERRATA: |
| 241 | 1. Normally, Linux Scsi queries FC devices with INQUIRY strings. All LUNs |
| 242 | found according to INQUIRY should get READ commands at sector 0 to find |
| 243 | partition table, etc. Older kernels only query the first 4 devices. Some |
| 244 | Linux kernels only look for one LUN per target (i.e. FC device). |
| 245 | |
| 246 | 2. Physically removing a device, or a malfunctioning system which hides a |
| 247 | device, leads to a 30-second timeout and subsequent _abort call. |
| 248 | In some process contexts, this will hang the kernel (crashing the system). |
| 249 | Single bit errors in frames and virtually all hot plugging events are |
| 250 | gracefully handled with internal driver timer and Abort processing. |
| 251 | |
| 252 | 3. Some SCSI drives with error conditions will not handle the 7 second timeout |
| 253 | in this software driver, leading to infinite retries on timed out SCSI commands. |
| 254 | The 7 secs balances the need to quickly recover from lost frames (esp. on sequence |
| 255 | initiatives) and time needed by older/slower/error-state drives in responding. |
| 256 | This can be easily changed in "Exchanges[].timeOut". |
| 257 | |
| 258 | 4. Due to the nature of FC soft addressing, there is no assurance that the |
| 259 | same LUNs (drives) will have the same path (e.g. /dev/sdb1) from one boot to |
| 260 | next. Dynamic soft address changes (i.e. 24-bit FC port_id) are |
| 261 | supported during run time (e.g. due to hot plug event) by the use of WWN to |
| 262 | SCSI Nexus (channel/target/LUN) mapping. |
| 263 | |
| 264 | 5. Compaq RA4x00 firmware version 2.54 and later supports SSP (Selective |
| 265 | Storage Presentation), which maps LUNs to a WWN. If RA4x00 firmware prior |
| 266 | 2.54 (e.g. older controller) is used, or the FC HBA is replaced (another WWN |
| 267 | is used), logical volumes on the RA4x00 will no longer be visible. |
| 268 | |
| 269 | |
| 270 | Send questions/comments to: |
| 271 | Amy Vanzant-Hodge (fibrechannel@compaq.com) |
| 272 | |