Blame view

Documentation/scsi/aic79xx.txt 23.5 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
  ====================================================================
d60256b1b   Hannes Reinecke   [SCSI] aic7xxx: u...
2
  =             Adaptec Ultra320 Family Manager Set                  =
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
  =                                                                  =
  =                            README for                            =
  =                    The Linux Operating System                    =
  ====================================================================
  
  The following information is available in this file:
  
    1. Supported Hardware
    2. Version History
    3. Command Line Options
    4. Additional Notes
    5. Contacting Adaptec
  
  
  1. Supported Hardware
  
     The following Adaptec SCSI Host Adapters are supported by this 
     driver set. 
  
     Ultra320 ASIC              Description
     ----------------------------------------------------------------
     AIC-7901A                  Single Channel 64-bit PCI-X 133MHz to 
                                Ultra320 SCSI ASIC
     AIC-7901B                  Single Channel 64-bit PCI-X 133MHz to 
                                Ultra320 SCSI ASIC with Retained Training
     AIC-7902A4                 Dual Channel 64-bit PCI-X 133MHz to 
                                Ultra320 SCSI ASIC
     AIC-7902B                  Dual Channel 64-bit PCI-X 133MHz to
                                Ultra320 SCSI ASIC with Retained Training
  
     Ultra320 Adapters          Description                              ASIC
     --------------------------------------------------------------------------
     Adaptec SCSI Card 39320    Dual Channel 64-bit PCI-X 133MHz to   7902A4/7902B
                                Ultra320 SCSI Card (one external 
                                68-pin, two internal 68-pin)
     Adaptec SCSI Card 39320A   Dual Channel 64-bit PCI-X 133MHz to      7902B
                                Ultra320 SCSI Card (one external 
                                68-pin, two internal 68-pin)
     Adaptec SCSI Card 39320D   Dual Channel 64-bit PCI-X 133MHz to      7902A4
                                Ultra320 SCSI Card (two external VHDC
                                and one internal 68-pin)
     Adaptec SCSI Card 39320D   Dual Channel 64-bit PCI-X 133MHz to      7902A4
                                Ultra320 SCSI Card (two external VHDC
                                and one internal 68-pin) based on the
                                AIC-7902B ASIC
     Adaptec SCSI Card 29320    Single Channel 64-bit PCI-X 133MHz to    7901A
                                Ultra320 SCSI Card (one external 
                                68-pin, two internal 68-pin, one
                                internal 50-pin)
     Adaptec SCSI Card 29320A   Single Channel 64-bit PCI-X 133MHz to    7901B
                                Ultra320 SCSI Card (one external 
                                68-pin, two internal 68-pin, one
                                internal 50-pin)
     Adaptec SCSI Card 29320LP  Single Channel 64-bit Low Profile        7901A
                                PCI-X 133MHz to Ultra320 SCSI Card
                                (One external VHDC, one internal
                                68-pin)
     Adaptec SCSI Card 29320ALP Single Channel 64-bit Low Profile        7901B
                                PCI-X 133MHz to Ultra320 SCSI Card
                                (One external VHDC, one internal
                                68-pin)
  2. Version History
d60256b1b   Hannes Reinecke   [SCSI] aic7xxx: u...
65
66
67
68
     3.0	  (December 1st, 2005)
  	- Updated driver to use SCSI transport class infrastructure
  	- Upported sequencer and core fixes from adaptec released
  	  version 2.0.15 of the driver.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
69
70
71
72
73
74
75
76
77
78
79
80
81
     1.3.11 (July 11, 2003)
          - Fix several deadlock issues.
          - Add 29320ALP and 39320B Id's.
  
     1.3.10 (June 3rd, 2003)
          - Align the SCB_TAG field on a 16byte boundary.  This avoids
            SCB corruption on some PCI-33 busses.
          - Correct non-zero luns on Rev B. hardware.
          - Update for change in 2.5.X SCSI proc FS interface.
          - When negotiation async via an 8bit WDTR message, send
            an SDTR with an offset of 0 to be sure the target
            knows we are async.  This works around a firmware defect
            in the Quantum Atlas 10K.
53cb47268   Matt LaPlante   Fix typos in Docu...
82
          - Implement controller suspend and resume.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
83
84
85
86
87
88
89
90
91
92
93
94
          - Clear PCI error state during driver attach so that we
            don't disable memory mapped I/O due to a stray write
            by some other driver probe that occurred before we
            claimed the controller.
  
     1.3.9 (May 22nd, 2003)
          - Fix compiler errors.
          - Remove S/G splitting for segments that cross a 4GB boundary.
            This is guaranteed not to happen in Linux.
          - Add support for scsi_report_device_reset() found in
            2.5.X kernels.
          - Add 7901B support.
992caacf1   Matt LaPlante   Fix typos in Docu...
95
          - Simplify handling of the packetized lun Rev A workaround.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
          - Correct and simplify handling of the ignore wide residue
            message.  The previous code would fail to report a residual
            if the transaction data length was even and we received
            an IWR message.
  
     1.3.8 (April 29th, 2003)
          - Fix types accessed via the command line interface code.
          - Perform a few firmware optimizations.
          - Fix "Unexpected PKT busfree" errors.
          - Use a sequencer interrupt to notify the host of
            commands with bad status.  We defer the notification
            until there are no outstanding selections to ensure
            that the host is interrupted for as short a time as
            possible.
          - Remove pre-2.2.X support.
          - Add support for new 2.5.X interrupt API.
          - Correct big-endian architecture support.
  
     1.3.7 (April 16th, 2003)
          - Use del_timer_sync() to ensure that no timeouts
            are pending during controller shutdown.
          - For pre-2.5.X kernels, carefully adjust our segment
            list size to avoid SCSI malloc pool fragmentation.
          - Cleanup channel display in our /proc output.
          - Workaround duplicate device entries in the mid-layer
01dd2fbf0   Matt LaPlante   typo fixes
121
            device list during add-single-device.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
122
123
124
125
126
127
  
     1.3.6 (March 28th, 2003)
          - Correct a double free in the Domain Validation code.
          - Correct a reference to free'ed memory during controller
            shutdown.
          - Reset the bus on an SE->LVD change.  This is required
fa00e7e15   Matt LaPlante   Fix typos in /Doc...
128
            to reset our transceivers.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
  
     1.3.5 (March 24th, 2003)
          - Fix a few register window mode bugs.
          - Include read streaming in the PPR flags we display in
            diagnostics as well as /proc.
          - Add PCI hot plug support for 2.5.X kernels.
          - Correct default precompensation value for RevA hardware.
          - Fix Domain Validation thread shutdown.
          - Add a firmware workaround to make the LED blink
            brighter during packetized operations on the H2A4.
          - Correct /proc display of user read streaming settings.
          - Simplify driver locking by releasing the io_request_lock
            upon driver entry from the mid-layer.
          - Cleanup command line parsing and move much of this code
            to aiclib.
  
     1.3.4 (February 28th, 2003)
          - Correct a race condition in our error recovery handler.
          - Allow Test Unit Ready commands to take a full 5 seconds
            during Domain Validation.
  
     1.3.2 (February 19th, 2003)
          - Correct a Rev B. regression due to the GEM318
            compatibility fix included in 1.3.1.
            
     1.3.1 (February 11th, 2003)
          - Add support for the 39320A.
          - Improve recovery for certain PCI-X errors.
          - Fix handling of LQ/DATA/LQ/DATA for the
            same write transaction that can occur without
            interveining training.
          - Correct compatibility issues with the GEM318
            enclosure services device.
          - Correct data corruption issue that occurred under
            high tag depth write loads.
          - Adapt to a change in the 2.5.X daemonize() API.
          - Correct a "Missing case in ahd_handle_scsiint" panic.
  
     1.3.0 (January 21st, 2003)
          - Full regression testing for all U320 products completed.
          - Added abort and target/lun reset error recovery handler and
5d3f083d8   Matt LaPlante   Fix typos in /Doc...
170
            interrupt coalescing.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
  
     1.2.0 (November 14th, 2002)
          - Added support for Domain Validation
          - Add support for the Hewlett-Packard version of the 39320D
            and AIC-7902 adapters.
          Support for previous adapters has not been fully tested and should
          only be used at the customer's own risk.
  
     1.1.1 (September 24th, 2002)
          - Added support for the Linux 2.5.X kernel series
  
     1.1.0 (September 17th, 2002)
          - Added support for four additional SCSI products:
            ASC-39320, ASC-29320, ASC-29320LP, AIC-7901.
  
     1.0.0 (May 30th, 2002)
          - Initial driver release.
  
     2.1. Software/Hardware Features
          - Support for the SPI-4 "Ultra320" standard:
            - 320MB/s transfer rates
            - Packetized SCSI Protocol at 160MB/s and 320MB/s
            - Quick Arbitration Selection (QAS)
            - Retained Training Information (Rev B. ASIC only)
19f594600   Matt LaPlante   trivial: Miscella...
195
          - Interrupt Coalescing
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
196
197
198
199
          - Initiator Mode (target mode not currently 
            supported)
          - Support for the PCI-X standard up to 133MHz
          - Support for the PCI v2.2 standard
d60256b1b   Hannes Reinecke   [SCSI] aic7xxx: u...
200
          - Domain Validation
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
201
202
203
204
205
206
207
208
209
210
211
212
213
214
  
     2.2. Operating System Support:
          - Redhat Linux 7.2, 7.3, 8.0, Advanced Server 2.1
          - SuSE Linux 7.3, 8.0, 8.1, Enterprise Server 7
          - only Intel and AMD x86 supported at this time
          - >4GB memory configurations supported.
  
       Refer to the User's Guide for more details on this.
  
  3. Command Line Options
  
          WARNING: ALTERING OR ADDING THESE DRIVER PARAMETERS
                   INCORRECTLY CAN RENDER YOUR SYSTEM INOPERABLE.
                   USE THEM WITH CAUTION. 
970e24864   Lucas De Marchi   Documentation: re...
215
     Put a .conf file in the /etc/modprobe.d/ directory and add/edit a
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
     line containing 'options aic79xx aic79xx=[command[,command...]]' where
     'command' is one or more of the following:
     -----------------------------------------------------------------
                Option: verbose
            Definition: enable additional informative messages during
                        driver operation.
       Possible Values: This option is a flag
         Default Value: disabled
     -----------------------------------------------------------------
                Option: debug:[value]
            Definition: Enables various levels of debugging information
                        The bit definitions for the debugging mask can
                        be found in drivers/scsi/aic7xxx/aic79xx.h under
                        the "Debug" heading.
       Possible Values: 0x0000 = no debugging, 0xffff = full debugging
         Default Value: 0x0000
     -----------------------------------------------------------------
                Option: no_reset
            Definition: Do not reset the bus during the initial probe
                        phase
       Possible Values: This option is a flag
         Default Value: disabled
     -----------------------------------------------------------------
                Option: extended
            Definition: Force extended translation on the controller
       Possible Values: This option is a flag
         Default Value: disabled
     -----------------------------------------------------------------
                Option: periodic_otag
            Definition: Send an ordered tag periodically to prevent
                        tag starvation.  Needed for some older devices
       Possible Values: This option is a flag
         Default Value: disabled
     -----------------------------------------------------------------
                Option: reverse_scan
            Definition: Probe the scsi bus in reverse order, starting
                        with target 15
       Possible Values: This option is a flag
         Default Value: disabled
     -----------------------------------------------------------------
                Option: global_tag_depth
            Definition: Global tag depth for all targets on all busses.
                        This option sets the default tag depth which
                        may be selectively overridden vi the tag_info
                        option.
       Possible Values: 1 - 253
         Default Value: 32
     -----------------------------------------------------------------
                Option: tag_info:{{value[,value...]}[,{value[,value...]}...]}
            Definition: Set the per-target tagged queue depth on a
                        per controller basis.  Both controllers and targets
25985edce   Lucas De Marchi   Fix common misspe...
267
                        may be omitted indicating that they should retain
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
                        the default tag depth.
              Examples: tag_info:{{16,32,32,64,8,8,,32,32,32,32,32,32,32,32,32}
                          On Controller 0
                            specifies a tag depth of 16 for target 0
                            specifies a tag depth of 64 for target 3
                            specifies a tag depth of 8 for targets 4 and 5
                            leaves target 6 at the default
                            specifies a tag depth of 32 for targets 1,2,7-15
                          All other targets retain the default depth.
  
                        tag_info:{{},{32,,32}}
                          On Controller 1
                            specifies a tag depth of 32 for targets 0 and 2
                          All other targets retain the default depth.
                          
       Possible Values: 1 - 253
         Default Value: 32
     -----------------------------------------------------------------
                Option: rd_strm: {rd_strm_bitmask[,rd_strm_bitmask...]}
            Definition: Enable read streaming on a per target basis.
                        The rd_strm_bitmask is a 16 bit hex value in which
                        each bit represents a target.  Setting the target's
                        bit to '1' enables read streaming for that
25985edce   Lucas De Marchi   Fix common misspe...
291
                        target.  Controllers may be omitted indicating that
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
                        they should retain the default read streaming setting.
               Example: rd_strm:{0x0041}
                          On Controller 0
                            enables read streaming for targets 0 and 6.
                            disables read streaming for targets 1-5,7-15.
                          All other targets retain the default read
                          streaming setting.
               Example: rd_strm:{0x0023,,0xFFFF}
                          On Controller 0
                            enables read streaming for targets 1,2, and 5.
                            disables read streaming for targets 3,4,6-15.
                          On Controller 2
                            enables read streaming for all targets.
                          All other targets retain the default read
                          streaming setting.
                        
       Possible Values: 0x0000 - 0xffff
         Default Value: 0x0000
     -----------------------------------------------------------------
                Option: dv: {value[,value...]}
            Definition: Set Domain Validation Policy on a per-controller basis.
25985edce   Lucas De Marchi   Fix common misspe...
313
                        Controllers may be omitted indicating that
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
                        they should retain the default read streaming setting.
               Example: dv:{-1,0,,1,1,0}
                          On Controller 0 leave DV at its default setting.
                          On Controller 1 disable DV.
                          Skip configuration on Controller 2.
                          On Controllers 3 and 4 enable DV.
                          On Controller 5 disable DV.
  
       Possible Values: < 0 Use setting from serial EEPROM.
                        0 Disable DV
                        > 0 Enable DV
         Default Value: DV Serial EEPROM configuration setting.
     -----------------------------------------------------------------
                Option: seltime:[value]
            Definition: Specifies the selection timeout value
       Possible Values: 0 = 256ms, 1 = 128ms, 2 = 64ms, 3 = 32ms
         Default Value: 0
     -----------------------------------------------------------------
  
     *** The following three options should only be changed at ***
     *** the direction of a technical support representative.  ***
  
     -----------------------------------------------------------------
                Option: precomp: {value[,value...]}
            Definition: Set IO Cell precompensation value on a per-controller
                        basis.
25985edce   Lucas De Marchi   Fix common misspe...
340
                        Controllers may be omitted indicating that
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
341
342
343
344
345
346
347
348
349
350
351
352
                        they should retain the default precompensation setting.
               Example: precomp:{0x1}
                          On Controller 0 set precompensation to 1.
               Example: precomp:{1,,7}
                          On Controller 0 set precompensation to 1.
                          On Controller 2 set precompensation to 8.
                        
       Possible Values: 0 - 7
         Default Value: Varies based on chip revision
     -----------------------------------------------------------------
                Option: slewrate: {value[,value...]}
            Definition: Set IO Cell slew rate on a per-controller basis.
25985edce   Lucas De Marchi   Fix common misspe...
353
                        Controllers may be omitted indicating that
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
354
355
356
357
358
359
360
361
362
363
364
365
                        they should retain the default slew rate setting.
               Example: slewrate:{0x1}
                          On Controller 0 set slew rate to 1.
               Example: slewrate :{1,,8}
                          On Controller 0 set slew rate to 1.
                          On Controller 2 set slew rate to 8.
                        
       Possible Values: 0 - 15
         Default Value: Varies based on chip revision
     -----------------------------------------------------------------
                Option: amplitude: {value[,value...]}
            Definition: Set IO Cell signal amplitude on a per-controller basis.
25985edce   Lucas De Marchi   Fix common misspe...
366
                        Controllers may be omitted indicating that
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
                        they should retain the default read streaming setting.
               Example: amplitude:{0x1}
                          On Controller 0 set amplitude to 1.
               Example: amplitude :{1,,7}
                          On Controller 0 set amplitude to 1.
                          On Controller 2 set amplitude to 7.
                        
       Possible Values: 1 - 7
         Default Value: Varies based on chip revision
     -----------------------------------------------------------------
  
     Example: 'options aic79xx aic79xx=verbose,rd_strm:{{0x0041}}'
          enables verbose output in the driver and turns read streaming on
          for targets 0 and 6 of Controller 0.
  
  4. Additional Notes
  
     4.1. Known/Unresolved or FYI Issues
  
          * Under SuSE Linux Enterprise 7, the driver may fail to operate
            correctly due to a problem with PCI interrupt routing in the
            Linux kernel.  Please contact SuSE for an updated Linux
            kernel.
  
     4.2. Third-Party Compatibility Issues
  
          * Adaptec only supports Ultra320 hard drives running
            the latest firmware available. Please check with
            your hard drive manufacturer to ensure you have the
            latest version.
  
     4.3. Operating System or Technology Limitations
          
          * PCI Hot Plug is untested and may cause the operating system 
            to stop responding.
          * Luns that are not numbered contiguously starting with 0 might not
            be automatically probed during system startup.  This is a limitation
            of the OS.  Please contact your Linux vendor for instructions on
            manually probing non-contiguous luns.
          * Using the Driver Update Disk version of this package during OS
            installation under RedHat might result in two versions of this
            driver being installed into the system module directory.  This
            might cause problems with the /sbin/mkinitrd program and/or
            other RPM packages that try to install system modules.  The best
            way to correct this once the system is running is to install
            the latest RPM package version of this driver, available from
            http://www.adaptec.com.
d60256b1b   Hannes Reinecke   [SCSI] aic7xxx: u...
414
  5. Adaptec Customer Support
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
415
416
417
418
  
     A Technical Support Identification (TSID) Number is required for 
     Adaptec technical support.
      - The 12-digit TSID can be found on the white barcode-type label
d60256b1b   Hannes Reinecke   [SCSI] aic7xxx: u...
419
        included inside the box with your product.  The TSID helps us 
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
420
421
        provide more efficient service by accurately identifying your 
        product and support status.
d60256b1b   Hannes Reinecke   [SCSI] aic7xxx: u...
422

1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
423
424
425
     Support Options
      - Search the Adaptec Support Knowledgebase (ASK) at
        http://ask.adaptec.com for articles, troubleshooting tips, and
d60256b1b   Hannes Reinecke   [SCSI] aic7xxx: u...
426
        frequently asked questions about your product.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
427
      - For support via Email, submit your question to Adaptec's 
d60256b1b   Hannes Reinecke   [SCSI] aic7xxx: u...
428
        Technical Support Specialists at http://ask.adaptec.com/.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
429
430
       
     North America
d60256b1b   Hannes Reinecke   [SCSI] aic7xxx: u...
431
432
433
434
435
436
437
438
439
440
441
442
      - Visit our Web site at http://www.adaptec.com/.
      - For information about Adaptec's support options, call
        408-957-2550, 24 hours a day, 7 days a week.
      - To speak with a Technical Support Specialist,
        * For hardware products, call 408-934-7274,
          Monday to Friday, 3:00 am to 5:00 pm, PDT.
        * For RAID and Fibre Channel products, call 321-207-2000,
          Monday to Friday, 3:00 am to 5:00 pm, PDT.
        To expedite your service, have your computer with you.
      - To order Adaptec products, including accessories and cables,
        call 408-957-7274.  To order cables online go to
        http://www.adaptec.com/buy-cables/.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
443
444
  
     Europe
0ea6e6112   Justin P. Mattock   Documentation: up...
445
      - Visit our Web site at http://www.adaptec.com/en-US/_common/world_index.
d60256b1b   Hannes Reinecke   [SCSI] aic7xxx: u...
446
447
448
449
450
451
452
453
454
      - To speak with a Technical Support Specialist, call, or email,
        * German:  +49 89 4366 5522, Monday-Friday, 9:00-17:00 CET,
          http://ask-de.adaptec.com/.
        * French:  +49 89 4366 5533, Monday-Friday, 9:00-17:00 CET,
  	http://ask-fr.adaptec.com/.
        * English: +49 89 4366 5544, Monday-Friday, 9:00-17:00 GMT,
  	http://ask.adaptec.com/.
      - You can order Adaptec cables online at
        http://www.adaptec.com/buy-cables/.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
455
456
  
     Japan
d60256b1b   Hannes Reinecke   [SCSI] aic7xxx: u...
457
      - Visit our web site at http://www.adaptec.co.jp/.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
458
      - To speak with a Technical Support Specialist, call 
d60256b1b   Hannes Reinecke   [SCSI] aic7xxx: u...
459
460
        +81 3 5308 6120, Monday-Friday, 9:00 a.m. to 12:00 p.m.,
        1:00 p.m. to 6:00 p.m.
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
  
  -------------------------------------------------------------------
  /*
   * Copyright (c) 2003 Adaptec Inc. 691 S. Milpitas Blvd., Milpitas CA 95035 USA.
   * All rights reserved.
   *
   * You are permitted to redistribute, use and modify this README file in whole
   * or in part in conjunction with redistribution of software governed by the
   * General Public License, provided that the following conditions are met:
   * 1. Redistributions of README file must retain the above copyright
   *    notice, this list of conditions, and the following disclaimer,
   *    without modification.
   * 2. The name of the author may not be used to endorse or promote products
   *    derived from this software without specific prior written permission.
   * 3. Modifications or new contributions must be attributed in a copyright
   *    notice identifying the author ("Contributor") and added below the
   *    original copyright notice. The copyright notice is for purposes of
   *    identifying contributors and should not be deemed as permission to alter
   *    the permissions given by Adaptec.
   *
   * THIS README FILE IS PROVIDED BY ADAPTEC AND CONTRIBUTORS ``AS IS'' AND
   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, ANY
   * WARRANTIES OF NON-INFRINGEMENT OR THE IMPLIED WARRANTIES OF MERCHANTABILITY
   * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
   * ADAPTEC OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
   * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS README
   * FILE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */