brintos

brintos / linux-shallow public Read only

0
0
Text · 25.8 KiB · d7d4d56 Raw
582 lines · plain
1.. SPDX-License-Identifier: GPL-2.02 3=========================================================4BusLogic MultiMaster and FlashPoint SCSI Driver for Linux5=========================================================6 7			 Version 2.0.15 for Linux 2.08 9			 Version 2.1.15 for Linux 2.110 11			      PRODUCTION RELEASE12 13				17 August 199814 15			       Leonard N. Zubkoff16 17			       Dandelion Digital18 19			       lnz@dandelion.com20 21	 Copyright 1995-1998 by Leonard N. Zubkoff <lnz@dandelion.com>22 23 24Introduction25============26 27BusLogic, Inc. designed and manufactured a variety of high performance SCSI28host adapters which share a common programming interface across a diverse29collection of bus architectures by virtue of their MultiMaster ASIC technology.30BusLogic was acquired by Mylex Corporation in February 1996, but the products31supported by this driver originated under the BusLogic name and so that name is32retained in the source code and documentation.33 34This driver supports all present BusLogic MultiMaster Host Adapters, and should35support any future MultiMaster designs with little or no modification.  More36recently, BusLogic introduced the FlashPoint Host Adapters, which are less37costly and rely on the host CPU, rather than including an onboard processor.38Despite not having an onboard CPU, the FlashPoint Host Adapters perform very39well and have very low command latency.  BusLogic has recently provided me with40the FlashPoint Driver Developer's Kit, which comprises documentation and freely41redistributable source code for the FlashPoint SCCB Manager.  The SCCB Manager42is the library of code that runs on the host CPU and performs functions43analogous to the firmware on the MultiMaster Host Adapters.  Thanks to their44having provided the SCCB Manager, this driver now supports the FlashPoint Host45Adapters as well.46 47My primary goals in writing this completely new BusLogic driver for Linux are48to achieve the full performance that BusLogic SCSI Host Adapters and modern49SCSI peripherals are capable of, and to provide a highly robust driver that can50be depended upon for high performance mission critical applications.  All of51the major performance features can be configured from the Linux kernel command52line or at module initialization time, allowing individual installations to53tune driver performance and error recovery to their particular needs.54 55The latest information on Linux support for BusLogic SCSI Host Adapters, as56well as the most recent release of this driver and the latest firmware for the57BT-948/958/958D, will always be available from my Linux Home Page at URL58"http://sourceforge.net/projects/dandelion/".59 60Bug reports should be sent via electronic mail to "lnz@dandelion.com".  Please61include with the bug report the complete configuration messages reported by the62driver and SCSI subsystem at startup, along with any subsequent system messages63relevant to SCSI operations, and a detailed description of your system's64hardware configuration.65 66Mylex has been an excellent company to work with and I highly recommend their67products to the Linux community.  In November 1995, I was offered the68opportunity to become a beta test site for their latest MultiMaster product,69the BT-948 PCI Ultra SCSI Host Adapter, and then again for the BT-958 PCI Wide70Ultra SCSI Host Adapter in January 1996.  This was mutually beneficial since71Mylex received a degree and kind of testing that their own testing group cannot72readily achieve, and the Linux community has available high performance host73adapters that have been well tested with Linux even before being brought to74market.  This relationship has also given me the opportunity to interact75directly with their technical staff, to understand more about the internal76workings of their products, and in turn to educate them about the needs and77potential of the Linux community.78 79More recently, Mylex has reaffirmed the company's interest in supporting the80Linux community, and I am now working on a Linux driver for the DAC960 PCI RAID81Controllers.  Mylex's interest and support is greatly appreciated.82 83Unlike some other vendors, if you contact Mylex Technical Support with a84problem and are running Linux, they will not tell you that your use of their85products is unsupported.  Their latest product marketing literature even states86"Mylex SCSI host adapters are compatible with all major operating systems87including: ... Linux ...".88 89Mylex Corporation is located at 34551 Ardenwood Blvd., Fremont, California9094555, USA and can be reached at 510/796-6100 or on the World Wide Web at91http://www.mylex.com.  Mylex HBA Technical Support can be reached by electronic92mail at techsup@mylex.com, by Voice at 510/608-2400, or by FAX at 510/745-7715.93Contact information for offices in Europe and Japan is available on the Web94site.95 96 97Driver Features98===============99 100Configuration Reporting and Testing101-----------------------------------102 103  During system initialization, the driver reports extensively on the host104  adapter hardware configuration, including the synchronous transfer parameters105  requested and negotiated with each target device.  AutoSCSI settings for106  Synchronous Negotiation, Wide Negotiation, and Disconnect/Reconnect are107  reported for each target device, as well as the status of Tagged Queuing.108  If the same setting is in effect for all target devices, then a single word109  or phrase is used; otherwise, a letter is provided for each target device to110  indicate the individual status.  The following examples111  should clarify this reporting format:112 113    Synchronous Negotiation: Ultra114 115      Synchronous negotiation is enabled for all target devices and the host116      adapter will attempt to negotiate for 20.0 mega-transfers/second.117 118    Synchronous Negotiation: Fast119 120      Synchronous negotiation is enabled for all target devices and the host121      adapter will attempt to negotiate for 10.0 mega-transfers/second.122 123    Synchronous Negotiation: Slow124 125      Synchronous negotiation is enabled for all target devices and the host126      adapter will attempt to negotiate for 5.0 mega-transfers/second.127 128    Synchronous Negotiation: Disabled129 130      Synchronous negotiation is disabled and all target devices are limited to131      asynchronous operation.132 133    Synchronous Negotiation: UFSNUUU#UUUUUUUU134 135      Synchronous negotiation to Ultra speed is enabled for target devices 0136      and 4 through 15, to Fast speed for target device 1, to Slow speed for137      target device 2, and is not permitted to target device 3.  The host138      adapter's SCSI ID is represented by the "#".139 140    The status of Wide Negotiation, Disconnect/Reconnect, and Tagged Queuing141    are reported as "Enabled", Disabled", or a sequence of "Y" and "N" letters.142 143Performance Features144--------------------145 146  BusLogic SCSI Host Adapters directly implement SCSI-2 Tagged Queuing, and so147  support has been included in the driver to utilize tagged queuing with any148  target devices that report having the tagged queuing capability.  Tagged149  queuing allows for multiple outstanding commands to be issued to each target150  device or logical unit, and can improve I/O performance substantially.  In151  addition, BusLogic's Strict Round Robin Mode is used to optimize host adapter152  performance, and scatter/gather I/O can support as many segments as can be153  effectively utilized by the Linux I/O subsystem.  Control over the use of154  tagged queuing for each target device as well as individual selection of the155  tagged queue depth is available through driver options provided on the kernel156  command line or at module initialization time.  By default, the queue depth157  is determined automatically based on the host adapter's total queue depth and158  the number, type, speed, and capabilities of the target devices found.  In159  addition, tagged queuing is automatically disabled whenever the host adapter160  firmware version is known not to implement it correctly, or whenever a tagged161  queue depth of 1 is selected.  Tagged queuing is also disabled for individual162  target devices if disconnect/reconnect is disabled for that device.163 164Robustness Features165-------------------166 167  The driver implements extensive error recovery procedures.  When the higher168  level parts of the SCSI subsystem request that a timed out command be reset,169  a selection is made between a full host adapter hard reset and SCSI bus reset170  versus sending a bus device reset message to the individual target device171  based on the recommendation of the SCSI subsystem.  Error recovery strategies172  are selectable through driver options individually for each target device,173  and also include sending a bus device reset to the specific target device174  associated with the command being reset, as well as suppressing error175  recovery entirely to avoid perturbing an improperly functioning device.  If176  the bus device reset error recovery strategy is selected and sending a bus177  device reset does not restore correct operation, the next command that is178  reset will force a full host adapter hard reset and SCSI bus reset.  SCSI bus179  resets caused by other devices and detected by the host adapter are also180  handled by issuing a soft reset to the host adapter and re-initialization.181  Finally, if tagged queuing is active and more than one command reset occurs182  in a 10 minute interval, or if a command reset occurs within the first 10183  minutes of operation, then tagged queuing will be disabled for that target184  device.  These error recovery options improve overall system robustness by185  preventing individual errant devices from causing the system as a whole to186  lock up or crash, and thereby allowing a clean shutdown and restart after the187  offending component is removed.188 189PCI Configuration Support190-------------------------191 192  On PCI systems running kernels compiled with PCI BIOS support enabled, this193  driver will interrogate the PCI configuration space and use the I/O port194  addresses assigned by the system BIOS, rather than the ISA compatible I/O195  port addresses.  The ISA compatible I/O port address is then disabled by the196  driver.  On PCI systems it is also recommended that the AutoSCSI utility be197  used to disable the ISA compatible I/O port entirely as it is not necessary.198  The ISA compatible I/O port is disabled by default on the BT-948/958/958D.199 200/proc File System Support201-------------------------202 203  Copies of the host adapter configuration information together with updated204  data transfer and error recovery statistics are available through the205  /proc/scsi/BusLogic/<N> interface.206 207Shared Interrupts Support208-------------------------209 210  On systems that support shared interrupts, any number of BusLogic Host211  Adapters may share the same interrupt request channel.212 213 214Supported Host Adapters215=======================216 217The following list comprises the supported BusLogic SCSI Host Adapters as of218the date of this document.  It is recommended that anyone purchasing a BusLogic219Host Adapter not in the following table contact the author beforehand to verify220that it is or will be supported.221 222FlashPoint Series PCI Host Adapters:223 224=======================	=============================================225FlashPoint LT (BT-930)	Ultra SCSI-3226FlashPoint LT (BT-930R)	Ultra SCSI-3 with RAIDPlus227FlashPoint LT (BT-920)	Ultra SCSI-3 (BT-930 without BIOS)228FlashPoint DL (BT-932)	Dual Channel Ultra SCSI-3229FlashPoint DL (BT-932R)	Dual Channel Ultra SCSI-3 with RAIDPlus230FlashPoint LW (BT-950)	Wide Ultra SCSI-3231FlashPoint LW (BT-950R)	Wide Ultra SCSI-3 with RAIDPlus232FlashPoint DW (BT-952)	Dual Channel Wide Ultra SCSI-3233FlashPoint DW (BT-952R)	Dual Channel Wide Ultra SCSI-3 with RAIDPlus234=======================	=============================================235 236MultiMaster "W" Series Host Adapters:237 238=======     ===		==============================239BT-948	    PCI		Ultra SCSI-3240BT-958	    PCI		Wide Ultra SCSI-3241BT-958D	    PCI		Wide Differential Ultra SCSI-3242=======     ===		==============================243 244MultiMaster "C" Series Host Adapters:245 246========    ====	==============================247BT-946C	    PCI		Fast SCSI-2248BT-956C	    PCI		Wide Fast SCSI-2249BT-956CD    PCI		Wide Differential Fast SCSI-2250BT-445C	    VLB		Fast SCSI-2251BT-747C	    EISA	Fast SCSI-2252BT-757C	    EISA	Wide Fast SCSI-2253BT-757CD    EISA	Wide Differential Fast SCSI-2254========    ====	==============================255 256MultiMaster "S" Series Host Adapters:257 258=======     ====	==============================259BT-445S	    VLB		Fast SCSI-2260BT-747S	    EISA	Fast SCSI-2261BT-747D	    EISA	Differential Fast SCSI-2262BT-757S	    EISA	Wide Fast SCSI-2263BT-757D	    EISA	Wide Differential Fast SCSI-2264BT-742A	    EISA	SCSI-2 (742A revision H)265=======     ====	==============================266 267MultiMaster "A" Series Host Adapters:268 269=======     ====	==============================270BT-742A	    EISA	SCSI-2 (742A revisions A - G)271=======     ====	==============================272 273AMI FastDisk Host Adapters that are true BusLogic MultiMaster clones are also274supported by this driver.275 276BusLogic SCSI Host Adapters are available packaged both as bare boards and as277retail kits.  The BT- model numbers above refer to the bare board packaging.278The retail kit model numbers are found by replacing BT- with KT- in the above279list.  The retail kit includes the bare board and manual as well as cabling and280driver media and documentation that are not provided with bare boards.281 282 283FlashPoint Installation Notes284=============================285 286RAIDPlus Support287----------------288 289  FlashPoint Host Adapters now include RAIDPlus, Mylex's bootable software290  RAID.  RAIDPlus is not supported on Linux, and there are no plans to support291  it.  The MD driver in Linux 2.0 provides for concatenation (LINEAR) and292  striping (RAID-0), and support for mirroring (RAID-1), fixed parity (RAID-4),293  and distributed parity (RAID-5) is available separately.  The built-in Linux294  RAID support is generally more flexible and is expected to perform better295  than RAIDPlus, so there is little impetus to include RAIDPlus support in the296  BusLogic driver.297 298Enabling UltraSCSI Transfers299----------------------------300 301  FlashPoint Host Adapters ship with their configuration set to "Factory302  Default" settings that are conservative and do not allow for UltraSCSI speed303  to be negotiated.  This results in fewer problems when these host adapters304  are installed in systems with cabling or termination that is not sufficient305  for UltraSCSI operation, or where existing SCSI devices do not properly306  respond to synchronous transfer negotiation for UltraSCSI speed.  AutoSCSI307  may be used to load "Optimum Performance" settings which allow UltraSCSI308  speed to be negotiated with all devices, or UltraSCSI speed can be enabled on309  an individual basis.  It is recommended that SCAM be manually disabled after310  the "Optimum Performance" settings are loaded.311 312 313BT-948/958/958D Installation Notes314==================================315 316The BT-948/958/958D PCI Ultra SCSI Host Adapters have some features which may317require attention in some circumstances when installing Linux.318 319PCI I/O Port Assignments320------------------------321 322  When configured to factory default settings, the BT-948/958/958D will only323  recognize the PCI I/O port assignments made by the motherboard's PCI BIOS.324  The BT-948/958/958D will not respond to any of the ISA compatible I/O ports325  that previous BusLogic SCSI Host Adapters respond to.  This driver supports326  the PCI I/O port assignments, so this is the preferred configuration.327  However, if the obsolete BusLogic driver must be used for any reason, such as328  a Linux distribution that does not yet use this driver in its boot kernel,329  BusLogic has provided an AutoSCSI configuration option to enable a legacy ISA330  compatible I/O port.331 332  To enable this backward compatibility option, invoke the AutoSCSI utility via333  Ctrl-B at system startup and select "Adapter Configuration", "View/Modify334  Configuration", and then change the "ISA Compatible Port" setting from335  "Disable" to "Primary" or "Alternate".  Once this driver has been installed,336  the "ISA Compatible Port" option should be set back to "Disable" to avoid337  possible future I/O port conflicts.  The older BT-946C/956C/956CD also have338  this configuration option, but the factory default setting is "Primary".339 340PCI Slot Scanning Order341-----------------------342 343  In systems with multiple BusLogic PCI Host Adapters, the order in which the344  PCI slots are scanned may appear reversed with the BT-948/958/958D as345  compared to the BT-946C/956C/956CD.  For booting from a SCSI disk to work346  correctly, it is necessary that the host adapter's BIOS and the kernel agree347  on which disk is the boot device, which requires that they recognize the PCI348  host adapters in the same order.  The motherboard's PCI BIOS provides a349  standard way of enumerating the PCI host adapters, which is used by the Linux350  kernel.  Some PCI BIOS implementations enumerate the PCI slots in order of351  increasing bus number and device number, while others do so in the opposite352  direction.353 354  Unfortunately, Microsoft decided that Windows 95 would always enumerate the355  PCI slots in order of increasing bus number and device number regardless of356  the PCI BIOS enumeration, and requires that their scheme be supported by the357  host adapter's BIOS to receive Windows 95 certification.  Therefore, the358  factory default settings of the BT-948/958/958D enumerate the host adapters359  by increasing bus number and device number.  To disable this feature, invoke360  the AutoSCSI utility via Ctrl-B at system startup and select "Adapter361  Configuration", "View/Modify Configuration", press Ctrl-F10, and then change362  the "Use Bus And Device # For PCI Scanning Seq." option to OFF.363 364  This driver will interrogate the setting of the PCI Scanning Sequence option365  so as to recognize the host adapters in the same order as they are enumerated366  by the host adapter's BIOS.367 368Enabling UltraSCSI Transfers369----------------------------370 371  The BT-948/958/958D ship with their configuration set to "Factory Default"372  settings that are conservative and do not allow for UltraSCSI speed to be373  negotiated.  This results in fewer problems when these host adapters are374  installed in systems with cabling or termination that is not sufficient for375  UltraSCSI operation, or where existing SCSI devices do not properly respond376  to synchronous transfer negotiation for UltraSCSI speed.  AutoSCSI may be377  used to load "Optimum Performance" settings which allow UltraSCSI speed to be378  negotiated with all devices, or UltraSCSI speed can be enabled on an379  individual basis.  It is recommended that SCAM be manually disabled after the380  "Optimum Performance" settings are loaded.381 382 383Driver Options384==============385 386BusLogic Driver Options may be specified either via the Linux Kernel Command387Line or via the Loadable Kernel Module Installation Facility.  Driver Options388for multiple host adapters may be specified either by separating the option389strings by a semicolon, or by specifying multiple "BusLogic=" strings on the390command line.  Individual option specifications for a single host adapter are391separated by commas.  The Probing and Debugging Options apply to all host392adapters whereas the remaining options apply individually only to the393selected host adapter.394 395The BusLogic Driver Probing Options comprise the following:396 397NoProbe398 399  The "NoProbe" option disables all probing and therefore no BusLogic Host400  Adapters will be detected.401 402NoProbePCI403 404  The "NoProbePCI" options disables the interrogation of PCI Configuration405  Space and therefore only ISA Multimaster Host Adapters will be detected, as406  well as PCI Multimaster Host Adapters that have their ISA Compatible I/O407  Port set to "Primary" or "Alternate".408 409NoSortPCI410 411  The "NoSortPCI" option forces PCI MultiMaster Host Adapters to be412  enumerated in the order provided by the PCI BIOS, ignoring any setting of413  the AutoSCSI "Use Bus And Device # For PCI Scanning Seq." option.414 415MultiMasterFirst416 417  The "MultiMasterFirst" option forces MultiMaster Host Adapters to be probed418  before FlashPoint Host Adapters.  By default, if both FlashPoint and PCI419  MultiMaster Host Adapters are present, this driver will probe for420  FlashPoint Host Adapters first unless the BIOS primary disk is controlled421  by the first PCI MultiMaster Host Adapter, in which case MultiMaster Host422  Adapters will be probed first.423 424FlashPointFirst425 426  The "FlashPointFirst" option forces FlashPoint Host Adapters to be probed427  before MultiMaster Host Adapters.428 429The BusLogic Driver Tagged Queuing Options allow for explicitly specifying430the Queue Depth and whether Tagged Queuing is permitted for each Target431Device (assuming that the Target Device supports Tagged Queuing).  The Queue432Depth is the number of SCSI Commands that are allowed to be concurrently433presented for execution (either to the Host Adapter or Target Device).  Note434that explicitly enabling Tagged Queuing may lead to problems; the option to435enable or disable Tagged Queuing is provided primarily to allow disabling436Tagged Queuing on Target Devices that do not implement it correctly.  The437following options are available:438 439QueueDepth:<integer>440 441  The "QueueDepth:" or QD:" option specifies the Queue Depth to use for all442  Target Devices that support Tagged Queuing, as well as the maximum Queue443  Depth for devices that do not support Tagged Queuing.  If no Queue Depth444  option is provided, the Queue Depth will be determined automatically based445  on the Host Adapter's Total Queue Depth and the number, type, speed, and446  capabilities of the detected Target Devices.  Target Devices that447  do not support Tagged Queuing always have their Queue Depth set to448  BusLogic_UntaggedQueueDepth or BusLogic_UntaggedQueueDepthBB, unless a449  lower Queue Depth option is provided.  A Queue Depth of 1 automatically450  disables Tagged Queuing.451 452QueueDepth:[<integer>,<integer>...]453 454  The "QueueDepth:[...]" or "QD:[...]" option specifies the Queue Depth455  individually for each Target Device.  If an <integer> is omitted, the456  associated Target Device will have its Queue Depth selected automatically.457 458TaggedQueuing:Default459 460  The "TaggedQueuing:Default" or "TQ:Default" option permits Tagged Queuing461  based on the firmware version of the BusLogic Host Adapter and based on462  whether the Queue Depth allows queuing multiple commands.463 464TaggedQueuing:Enable465 466  The "TaggedQueuing:Enable" or "TQ:Enable" option enables Tagged Queuing for467  all Target Devices on this Host Adapter, overriding any limitation that468  would otherwise be imposed based on the Host Adapter firmware version.469 470TaggedQueuing:Disable471 472  The "TaggedQueuing:Disable" or "TQ:Disable" option disables Tagged Queuing473  for all Target Devices on this Host Adapter.474 475TaggedQueuing:<Target-Spec>476 477  The "TaggedQueuing:<Target-Spec>" or "TQ:<Target-Spec>" option controls478  Tagged Queuing individually for each Target Device.  <Target-Spec> is a479  sequence of "Y", "N", and "X" characters.  "Y" enables Tagged Queuing, "N"480  disables Tagged Queuing, and "X" accepts the default based on the firmware481  version.  The first character refers to Target Device 0, the second to482  Target Device 1, and so on; if the sequence of "Y", "N", and "X" characters483  does not cover all the Target Devices, unspecified characters are assumed484  to be "X".485 486The BusLogic Driver Miscellaneous Options comprise the following:487 488BusSettleTime:<seconds>489 490  The "BusSettleTime:" or "BST:" option specifies the Bus Settle Time in491  seconds.  The Bus Settle Time is the amount of time to wait between a Host492  Adapter Hard Reset which initiates a SCSI Bus Reset and issuing any SCSI493  Commands.  If unspecified, it defaults to BusLogic_DefaultBusSettleTime.494 495InhibitTargetInquiry496 497  The "InhibitTargetInquiry" option inhibits the execution of an Inquire498  Target Devices or Inquire Installed Devices command on MultiMaster Host499  Adapters.  This may be necessary with some older Target Devices that do not500  respond correctly when Logical Units above 0 are addressed.501 502The BusLogic Driver Debugging Options comprise the following:503 504TraceProbe505 506  The "TraceProbe" option enables tracing of Host Adapter Probing.507 508TraceHardwareReset509 510  The "TraceHardwareReset" option enables tracing of Host Adapter Hardware511  Reset.512 513TraceConfiguration514 515  The "TraceConfiguration" option enables tracing of Host Adapter516  Configuration.517 518TraceErrors519 520  The "TraceErrors" option enables tracing of SCSI Commands that return an521  error from the Target Device.  The CDB and Sense Data will be printed for522  each SCSI Command that fails.523 524Debug525 526  The "Debug" option enables all debugging options.527 528The following examples demonstrate setting the Queue Depth for Target Devices5291 and 2 on the first host adapter to 7 and 15, the Queue Depth for all Target530Devices on the second host adapter to 31, and the Bus Settle Time on the531second host adapter to 30 seconds.532 533Linux Kernel Command Line::534 535  linux BusLogic=QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30536 537LILO Linux Boot Loader (in /etc/lilo.conf)::538 539  append = "BusLogic=QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30"540 541INSMOD Loadable Kernel Module Installation Facility::542 543  insmod BusLogic.o \544      'BusLogic="QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30"'545 546 547.. Note::548 549      Module Utilities 2.1.71 or later is required for correct parsing550      of driver options containing commas.551 552 553Driver Installation554===================555 556This distribution was prepared for Linux kernel version 2.0.35, but should be557compatible with 2.0.4 or any later 2.0 series kernel.558 559To install the new BusLogic SCSI driver, you may use the following commands,560replacing "/usr/src" with wherever you keep your Linux kernel source tree::561 562  cd /usr/src563  tar -xvzf BusLogic-2.0.15.tar.gz564  mv README.* LICENSE.* BusLogic.[ch] FlashPoint.c linux/drivers/scsi565  patch -p0 < BusLogic.patch (only for 2.0.33 and below)566  cd linux567  make config568  make zImage569 570Then install "arch/x86/boot/zImage" as your standard kernel, run lilo if571appropriate, and reboot.572 573 574BusLogic Announcements Mailing List575===================================576 577The BusLogic Announcements Mailing List provides a forum for informing Linux578users of new driver releases and other announcements regarding Linux support579for BusLogic SCSI Host Adapters.  To join the mailing list, send a message to580"buslogic-announce-request@dandelion.com" with the line "subscribe" in the581message body.582