| ==================================================================== | 
 | =             Adaptec Ultra320 Family Manager Set                  = | 
 | =                                                                  = | 
 | =                            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 | 
 |  | 
 |    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. | 
 |  | 
 |    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. | 
 |         - Implement controller suspend and resume. | 
 |         - 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. | 
 |         - Simplify handling of the packetized lun Rev A workaround. | 
 |         - 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 | 
 |           device list during add-single-device. | 
 |  | 
 |    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 | 
 |           to reset our transceivers. | 
 |  | 
 |    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 | 
 |           interrupt coalescing. | 
 |  | 
 |    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) | 
 |         - Interrupt Coalescing | 
 |         - Initiator Mode (target mode not currently  | 
 |           supported) | 
 |         - Support for the PCI-X standard up to 133MHz | 
 |         - Support for the PCI v2.2 standard | 
 |         - Domain Validation | 
 |  | 
 |    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.  | 
 |  | 
 |    Edit the file "modprobe.conf" in the directory /etc and add/edit a | 
 |    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 | 
 |                       may be omitted indicating that they should retain | 
 |                       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 | 
 |                       target.  Controllers may be omitted indicating that | 
 |                       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. | 
 |                       Controllers may be omitted indicating that | 
 |                       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. | 
 |                       Controllers may be omitted indicating that | 
 |                       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. | 
 |                       Controllers may be omitted indicating that | 
 |                       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. | 
 |                       Controllers may be omitted indicating that | 
 |                       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. | 
 |  | 
 |  | 
 | 5. Adaptec Customer Support | 
 |  | 
 |    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 | 
 |       included inside the box with your product.  The TSID helps us  | 
 |       provide more efficient service by accurately identifying your  | 
 |       product and support status. | 
 |  | 
 |    Support Options | 
 |     - Search the Adaptec Support Knowledgebase (ASK) at | 
 |       http://ask.adaptec.com for articles, troubleshooting tips, and | 
 |       frequently asked questions about your product. | 
 |     - For support via Email, submit your question to Adaptec's  | 
 |       Technical Support Specialists at http://ask.adaptec.com/. | 
 |       | 
 |    North America | 
 |     - 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/. | 
 |  | 
 |    Europe | 
 |     - Visit our Web site at http://www.adaptec.com/en-US/_common/world_index. | 
 |     - 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/. | 
 |  | 
 |    Japan | 
 |     - Visit our web site at http://www.adaptec.co.jp/. | 
 |     - To speak with a Technical Support Specialist, call  | 
 |       +81 3 5308 6120, Monday-Friday, 9:00 a.m. to 12:00 p.m., | 
 |       1:00 p.m. to 6:00 p.m. | 
 |  | 
 | ------------------------------------------------------------------- | 
 | /* | 
 |  * 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. | 
 |  */ |