1       BusLogic MultiMaster and FlashPoint SCSI Driver for Linux
3             Version 2.0.15 for Linux 2.0
4             Version 2.1.15 for Linux 2.1
6                  PRODUCTION RELEASE
8                17 August 1998
10                   Leonard N. Zubkoff
11                   Dandelion Digital
14     Copyright 1995-1998 by Leonard N. Zubkoff <>
17                 INTRODUCTION
19BusLogic, Inc. designed and manufactured a variety of high performance SCSI
20host adapters which share a common programming interface across a diverse
21collection of bus architectures by virtue of their MultiMaster ASIC technology.
22BusLogic was acquired by Mylex Corporation in February 1996, but the products
23supported by this driver originated under the BusLogic name and so that name is
24retained in the source code and documentation.
26This driver supports all present BusLogic MultiMaster Host Adapters, and should
27support any future MultiMaster designs with little or no modification. More
28recently, BusLogic introduced the FlashPoint Host Adapters, which are less
29costly and rely on the host CPU, rather than including an onboard processor.
30Despite not having an onboard CPU, the FlashPoint Host Adapters perform very
31well and have very low command latency. BusLogic has recently provided me with
32the FlashPoint Driver Developer's Kit, which comprises documentation and freely
33redistributable source code for the FlashPoint SCCB Manager. The SCCB Manager
34is the library of code that runs on the host CPU and performs functions
35analogous to the firmware on the MultiMaster Host Adapters. Thanks to their
36having provided the SCCB Manager, this driver now supports the FlashPoint Host
37Adapters as well.
39My primary goals in writing this completely new BusLogic driver for Linux are
40to achieve the full performance that BusLogic SCSI Host Adapters and modern
41SCSI peripherals are capable of, and to provide a highly robust driver that can
42be depended upon for high performance mission critical applications. All of
43the major performance features can be configured from the Linux kernel command
44line or at module initialization time, allowing individual installations to
45tune driver performance and error recovery to their particular needs.
47The latest information on Linux support for BusLogic SCSI Host Adapters, as
48well as the most recent release of this driver and the latest firmware for the
49BT-948/958/958D, will always be available from my Linux Home Page at URL
52Bug reports should be sent via electronic mail to "". Please
53include with the bug report the complete configuration messages reported by the
54driver and SCSI subsystem at startup, along with any subsequent system messages
55relevant to SCSI operations, and a detailed description of your system's
56hardware configuration.
58Mylex has been an excellent company to work with and I highly recommend their
59products to the Linux community. In November 1995, I was offered the
60opportunity to become a beta test site for their latest MultiMaster product,
61the BT-948 PCI Ultra SCSI Host Adapter, and then again for the BT-958 PCI Wide
62Ultra SCSI Host Adapter in January 1996. This was mutually beneficial since
63Mylex received a degree and kind of testing that their own testing group cannot
64readily achieve, and the Linux community has available high performance host
65adapters that have been well tested with Linux even before being brought to
66market. This relationship has also given me the opportunity to interact
67directly with their technical staff, to understand more about the internal
68workings of their products, and in turn to educate them about the needs and
69potential of the Linux community.
71More recently, Mylex has reaffirmed the company's interest in supporting the
72Linux community, and I am now working on a Linux driver for the DAC960 PCI RAID
73Controllers. Mylex's interest and support is greatly appreciated.
75Unlike some other vendors, if you contact Mylex Technical Support with a
76problem and are running Linux, they will not tell you that your use of their
77products is unsupported. Their latest product marketing literature even states
78"Mylex SCSI host adapters are compatible with all major operating systems
79including: ... Linux ...".
81Mylex Corporation is located at 34551 Ardenwood Blvd., Fremont, California
8294555, USA and can be reached at 510/796-6100 or on the World Wide Web at
83 Mylex HBA Technical Support can be reached by electronic
84mail at, by Voice at 510/608-2400, or by FAX at 510/745-7715.
85Contact information for offices in Europe and Japan is available on the Web
89                DRIVER FEATURES
91o Configuration Reporting and Testing
93  During system initialization, the driver reports extensively on the host
94  adapter hardware configuration, including the synchronous transfer parameters
95  requested and negotiated with each target device. AutoSCSI settings for
96  Synchronous Negotiation, Wide Negotiation, and Disconnect/Reconnect are
97  reported for each target device, as well as the status of Tagged Queuing.
98  If the same setting is in effect for all target devices, then a single word
99  or phrase is used; otherwise, a letter is provided for each target device to
100  indicate the individual status. The following examples
101  should clarify this reporting format:
103    Synchronous Negotiation: Ultra
105      Synchronous negotiation is enabled for all target devices and the host
106      adapter will attempt to negotiate for 20.0 mega-transfers/second.
108    Synchronous Negotiation: Fast
110      Synchronous negotiation is enabled for all target devices and the host
111      adapter will attempt to negotiate for 10.0 mega-transfers/second.
113    Synchronous Negotiation: Slow
115      Synchronous negotiation is enabled for all target devices and the host
116      adapter will attempt to negotiate for 5.0 mega-transfers/second.
118    Synchronous Negotiation: Disabled
120      Synchronous negotiation is disabled and all target devices are limited to
121      asynchronous operation.
123    Synchronous Negotiation: UFSNUUU#UUUUUUUU
125      Synchronous negotiation to Ultra speed is enabled for target devices 0
126      and 4 through 15, to Fast speed for target device 1, to Slow speed for
127      target device 2, and is not permitted to target device 3. The host
128      adapter's SCSI ID is represented by the "#".
130    The status of Wide Negotiation, Disconnect/Reconnect, and Tagged Queuing
131    are reported as "Enabled", Disabled", or a sequence of "Y" and "N" letters.
133o Performance Features
135  BusLogic SCSI Host Adapters directly implement SCSI-2 Tagged Queuing, and so
136  support has been included in the driver to utilize tagged queuing with any
137  target devices that report having the tagged queuing capability. Tagged
138  queuing allows for multiple outstanding commands to be issued to each target
139  device or logical unit, and can improve I/O performance substantially. In
140  addition, BusLogic's Strict Round Robin Mode is used to optimize host adapter
141  performance, and scatter/gather I/O can support as many segments as can be
142  effectively utilized by the Linux I/O subsystem. Control over the use of
143  tagged queuing for each target device as well as individual selection of the
144  tagged queue depth is available through driver options provided on the kernel
145  command line or at module initialization time. By default, the queue depth
146  is determined automatically based on the host adapter's total queue depth and
147  the number, type, speed, and capabilities of the target devices found. In
148  addition, tagged queuing is automatically disabled whenever the host adapter
149  firmware version is known not to implement it correctly, or whenever a tagged
150  queue depth of 1 is selected. Tagged queuing is also disabled for individual
151  target devices if disconnect/reconnect is disabled for that device.
153o Robustness Features
155  The driver implements extensive error recovery procedures. When the higher
156  level parts of the SCSI subsystem request that a timed out command be reset,
157  a selection is made between a full host adapter hard reset and SCSI bus reset
158  versus sending a bus device reset message to the individual target device
159  based on the recommendation of the SCSI subsystem. Error recovery strategies
160  are selectable through driver options individually for each target device,
161  and also include sending a bus device reset to the specific target device
162  associated with the command being reset, as well as suppressing error
163  recovery entirely to avoid perturbing an improperly functioning device. If
164  the bus device reset error recovery strategy is selected and sending a bus
165  device reset does not restore correct operation, the next command that is
166  reset will force a full host adapter hard reset and SCSI bus reset. SCSI bus
167  resets caused by other devices and detected by the host adapter are also
168  handled by issuing a soft reset to the host adapter and re-initialization.
169  Finally, if tagged queuing is active and more than one command reset occurs
170  in a 10 minute interval, or if a command reset occurs within the first 10
171  minutes of operation, then tagged queuing will be disabled for that target
172  device. These error recovery options improve overall system robustness by
173  preventing individual errant devices from causing the system as a whole to
174  lock up or crash, and thereby allowing a clean shutdown and restart after the
175  offending component is removed.
177o PCI Configuration Support
179  On PCI systems running kernels compiled with PCI BIOS support enabled, this
180  driver will interrogate the PCI configuration space and use the I/O port
181  addresses assigned by the system BIOS, rather than the ISA compatible I/O
182  port addresses. The ISA compatible I/O port address is then disabled by the
183  driver. On PCI systems it is also recommended that the AutoSCSI utility be
184  used to disable the ISA compatible I/O port entirely as it is not necessary.
185  The ISA compatible I/O port is disabled by default on the BT-948/958/958D.
187o /proc File System Support
189  Copies of the host adapter configuration information together with updated
190  data transfer and error recovery statistics are available through the
191  /proc/scsi/BusLogic/<N> interface.
193o Shared Interrupts Support
195  On systems that support shared interrupts, any number of BusLogic Host
196  Adapters may share the same interrupt request channel.
199                SUPPORTED HOST ADAPTERS
201The following list comprises the supported BusLogic SCSI Host Adapters as of
202the date of this document. It is recommended that anyone purchasing a BusLogic
203Host Adapter not in the following table contact the author beforehand to verify
204that it is or will be supported.
206FlashPoint Series PCI Host Adapters:
208FlashPoint LT (BT-930) Ultra SCSI-3
209FlashPoint LT (BT-930R) Ultra SCSI-3 with RAIDPlus
210FlashPoint LT (BT-920) Ultra SCSI-3 (BT-930 without BIOS)
211FlashPoint DL (BT-932) Dual Channel Ultra SCSI-3
212FlashPoint DL (BT-932R) Dual Channel Ultra SCSI-3 with RAIDPlus
213FlashPoint LW (BT-950) Wide Ultra SCSI-3
214FlashPoint LW (BT-950R) Wide Ultra SCSI-3 with RAIDPlus
215FlashPoint DW (BT-952) Dual Channel Wide Ultra SCSI-3
216FlashPoint DW (BT-952R) Dual Channel Wide Ultra SCSI-3 with RAIDPlus
218MultiMaster "W" Series Host Adapters:
220BT-948 PCI Ultra SCSI-3
221BT-958 PCI Wide Ultra SCSI-3
222BT-958D PCI Wide Differential Ultra SCSI-3
224MultiMaster "C" Series Host Adapters:
226BT-946C PCI Fast SCSI-2
227BT-956C PCI Wide Fast SCSI-2
228BT-956CD PCI Wide Differential Fast SCSI-2
229BT-445C VLB Fast SCSI-2
230BT-747C EISA Fast SCSI-2
231BT-757C EISA Wide Fast SCSI-2
232BT-757CD EISA Wide Differential Fast SCSI-2
233BT-545C ISA Fast SCSI-2
234BT-540CF ISA Fast SCSI-2
236MultiMaster "S" Series Host Adapters:
238BT-445S VLB Fast SCSI-2
239BT-747S EISA Fast SCSI-2
240BT-747D EISA Differential Fast SCSI-2
241BT-757S EISA Wide Fast SCSI-2
242BT-757D EISA Wide Differential Fast SCSI-2
243BT-545S ISA Fast SCSI-2
244BT-542D ISA Differential Fast SCSI-2
245BT-742A EISA SCSI-2 (742A revision H)
246BT-542B ISA SCSI-2 (542B revision H)
248MultiMaster "A" Series Host Adapters:
250BT-742A EISA SCSI-2 (742A revisions A - G)
251BT-542B ISA SCSI-2 (542B revisions A - G)
253AMI FastDisk Host Adapters that are true BusLogic MultiMaster clones are also
254supported by this driver.
256BusLogic SCSI Host Adapters are available packaged both as bare boards and as
257retail kits. The BT- model numbers above refer to the bare board packaging.
258The retail kit model numbers are found by replacing BT- with KT- in the above
259list. The retail kit includes the bare board and manual as well as cabling and
260driver media and documentation that are not provided with bare boards.
265o RAIDPlus Support
267  FlashPoint Host Adapters now include RAIDPlus, Mylex's bootable software
268  RAID. RAIDPlus is not supported on Linux, and there are no plans to support
269  it. The MD driver in Linux 2.0 provides for concatenation (LINEAR) and
270  striping (RAID-0), and support for mirroring (RAID-1), fixed parity (RAID-4),
271  and distributed parity (RAID-5) is available separately. The built-in Linux
272  RAID support is generally more flexible and is expected to perform better
273  than RAIDPlus, so there is little impetus to include RAIDPlus support in the
274  BusLogic driver.
276o Enabling UltraSCSI Transfers
278  FlashPoint Host Adapters ship with their configuration set to "Factory
279  Default" settings that are conservative and do not allow for UltraSCSI speed
280  to be negotiated. This results in fewer problems when these host adapters
281  are installed in systems with cabling or termination that is not sufficient
282  for UltraSCSI operation, or where existing SCSI devices do not properly
283  respond to synchronous transfer negotiation for UltraSCSI speed. AutoSCSI
284  may be used to load "Optimum Performance" settings which allow UltraSCSI
285  speed to be negotiated with all devices, or UltraSCSI speed can be enabled on
286  an individual basis. It is recommended that SCAM be manually disabled after
287  the "Optimum Performance" settings are loaded.
290              BT-948/958/958D INSTALLATION NOTES
292The BT-948/958/958D PCI Ultra SCSI Host Adapters have some features which may
293require attention in some circumstances when installing Linux.
295o PCI I/O Port Assignments
297  When configured to factory default settings, the BT-948/958/958D will only
298  recognize the PCI I/O port assignments made by the motherboard's PCI BIOS.
299  The BT-948/958/958D will not respond to any of the ISA compatible I/O ports
300  that previous BusLogic SCSI Host Adapters respond to. This driver supports
301  the PCI I/O port assignments, so this is the preferred configuration.
302  However, if the obsolete BusLogic driver must be used for any reason, such as
303  a Linux distribution that does not yet use this driver in its boot kernel,
304  BusLogic has provided an AutoSCSI configuration option to enable a legacy ISA
305  compatible I/O port.
307  To enable this backward compatibility option, invoke the AutoSCSI utility via
308  Ctrl-B at system startup and select "Adapter Configuration", "View/Modify
309  Configuration", and then change the "ISA Compatible Port" setting from
310  "Disable" to "Primary" or "Alternate". Once this driver has been installed,
311  the "ISA Compatible Port" option should be set back to "Disable" to avoid
312  possible future I/O port conflicts. The older BT-946C/956C/956CD also have
313  this configuration option, but the factory default setting is "Primary".
315o PCI Slot Scanning Order
317  In systems with multiple BusLogic PCI Host Adapters, the order in which the
318  PCI slots are scanned may appear reversed with the BT-948/958/958D as
319  compared to the BT-946C/956C/956CD. For booting from a SCSI disk to work
320  correctly, it is necessary that the host adapter's BIOS and the kernel agree
321  on which disk is the boot device, which requires that they recognize the PCI
322  host adapters in the same order. The motherboard's PCI BIOS provides a
323  standard way of enumerating the PCI host adapters, which is used by the Linux
324  kernel. Some PCI BIOS implementations enumerate the PCI slots in order of
325  increasing bus number and device number, while others do so in the opposite
326  direction.
328  Unfortunately, Microsoft decided that Windows 95 would always enumerate the
329  PCI slots in order of increasing bus number and device number regardless of
330  the PCI BIOS enumeration, and requires that their scheme be supported by the
331  host adapter's BIOS to receive Windows 95 certification. Therefore, the
332  factory default settings of the BT-948/958/958D enumerate the host adapters
333  by increasing bus number and device number. To disable this feature, invoke
334  the AutoSCSI utility via Ctrl-B at system startup and select "Adapter
335  Configuration", "View/Modify Configuration", press Ctrl-F10, and then change
336  the "Use Bus And Device # For PCI Scanning Seq." option to OFF.
338  This driver will interrogate the setting of the PCI Scanning Sequence option
339  so as to recognize the host adapters in the same order as they are enumerated
340  by the host adapter's BIOS.
342o Enabling UltraSCSI Transfers
344  The BT-948/958/958D ship with their configuration set to "Factory Default"
345  settings that are conservative and do not allow for UltraSCSI speed to be
346  negotiated. This results in fewer problems when these host adapters are
347  installed in systems with cabling or termination that is not sufficient for
348  UltraSCSI operation, or where existing SCSI devices do not properly respond
349  to synchronous transfer negotiation for UltraSCSI speed. AutoSCSI may be
350  used to load "Optimum Performance" settings which allow UltraSCSI speed to be
351  negotiated with all devices, or UltraSCSI speed can be enabled on an
352  individual basis. It is recommended that SCAM be manually disabled after the
353  "Optimum Performance" settings are loaded.
356                DRIVER OPTIONS
358BusLogic Driver Options may be specified either via the Linux Kernel Command
359Line or via the Loadable Kernel Module Installation Facility. Driver Options
360for multiple host adapters may be specified either by separating the option
361strings by a semicolon, or by specifying multiple "BusLogic=" strings on the
362command line. Individual option specifications for a single host adapter are
363separated by commas. The Probing and Debugging Options apply to all host
364adapters whereas the remaining options apply individually only to the
365selected host adapter.
367The BusLogic Driver Probing Options comprise the following:
371  The "IO:" option specifies an ISA I/O Address to be probed for a non-PCI
372  MultiMaster Host Adapter. If neither "IO:" nor "NoProbeISA" options are
373  specified, then the standard list of BusLogic MultiMaster ISA I/O Addresses
374  will be probed (0x330, 0x334, 0x230, 0x234, 0x130, and 0x134). Multiple
375  "IO:" options may be specified to precisely determine the I/O Addresses to
376  be probed, but the probe order will always follow the standard list.
380  The "NoProbe" option disables all probing and therefore no BusLogic Host
381  Adapters will be detected.
385  The "NoProbeISA" option disables probing of the standard BusLogic ISA I/O
386  Addresses and therefore only PCI MultiMaster and FlashPoint Host Adapters
387  will be detected.
391  The "NoProbePCI" options disables the interrogation of PCI Configuration
392  Space and therefore only ISA Multimaster Host Adapters will be detected, as
393  well as PCI Multimaster Host Adapters that have their ISA Compatible I/O
394  Port set to "Primary" or "Alternate".
398  The "NoSortPCI" option forces PCI MultiMaster Host Adapters to be
399  enumerated in the order provided by the PCI BIOS, ignoring any setting of
400  the AutoSCSI "Use Bus And Device # For PCI Scanning Seq." option.
404  The "MultiMasterFirst" option forces MultiMaster Host Adapters to be probed
405  before FlashPoint Host Adapters. By default, if both FlashPoint and PCI
406  MultiMaster Host Adapters are present, this driver will probe for
407  FlashPoint Host Adapters first unless the BIOS primary disk is controlled
408  by the first PCI MultiMaster Host Adapter, in which case MultiMaster Host
409  Adapters will be probed first.
413  The "FlashPointFirst" option forces FlashPoint Host Adapters to be probed
414  before MultiMaster Host Adapters.
416The BusLogic Driver Tagged Queuing Options allow for explicitly specifying
417the Queue Depth and whether Tagged Queuing is permitted for each Target
418Device (assuming that the Target Device supports Tagged Queuing). The Queue
419Depth is the number of SCSI Commands that are allowed to be concurrently
420presented for execution (either to the Host Adapter or Target Device). Note
421that explicitly enabling Tagged Queuing may lead to problems; the option to
422enable or disable Tagged Queuing is provided primarily to allow disabling
423Tagged Queuing on Target Devices that do not implement it correctly. The
424following options are available:
428  The "QueueDepth:" or QD:" option specifies the Queue Depth to use for all
429  Target Devices that support Tagged Queuing, as well as the maximum Queue
430  Depth for devices that do not support Tagged Queuing. If no Queue Depth
431  option is provided, the Queue Depth will be determined automatically based
432  on the Host Adapter's Total Queue Depth and the number, type, speed, and
433  capabilities of the detected Target Devices. For Host Adapters that
434  require ISA Bounce Buffers, the Queue Depth is automatically set by default
435  to BusLogic_TaggedQueueDepthBB or BusLogic_UntaggedQueueDepthBB to avoid
436  excessive preallocation of DMA Bounce Buffer memory. Target Devices that
437  do not support Tagged Queuing always have their Queue Depth set to
438  BusLogic_UntaggedQueueDepth or BusLogic_UntaggedQueueDepthBB, unless a
439  lower Queue Depth option is provided. A Queue Depth of 1 automatically
440  disables Tagged Queuing.
444  The "QueueDepth:[...]" or "QD:[...]" option specifies the Queue Depth
445  individually for each Target Device. If an <integer> is omitted, the
446  associated Target Device will have its Queue Depth selected automatically.
450  The "TaggedQueuing:Default" or "TQ:Default" option permits Tagged Queuing
451  based on the firmware version of the BusLogic Host Adapter and based on
452  whether the Queue Depth allows queuing multiple commands.
456  The "TaggedQueuing:Enable" or "TQ:Enable" option enables Tagged Queuing for
457  all Target Devices on this Host Adapter, overriding any limitation that
458  would otherwise be imposed based on the Host Adapter firmware version.
462  The "TaggedQueuing:Disable" or "TQ:Disable" option disables Tagged Queuing
463  for all Target Devices on this Host Adapter.
467  The "TaggedQueuing:<Target-Spec>" or "TQ:<Target-Spec>" option controls
468  Tagged Queuing individually for each Target Device. <Target-Spec> is a
469  sequence of "Y", "N", and "X" characters. "Y" enables Tagged Queuing, "N"
470  disables Tagged Queuing, and "X" accepts the default based on the firmware
471  version. The first character refers to Target Device 0, the second to
472  Target Device 1, and so on; if the sequence of "Y", "N", and "X" characters
473  does not cover all the Target Devices, unspecified characters are assumed
474  to be "X".
476The BusLogic Driver Miscellaneous Options comprise the following:
480  The "BusSettleTime:" or "BST:" option specifies the Bus Settle Time in
481  seconds. The Bus Settle Time is the amount of time to wait between a Host
482  Adapter Hard Reset which initiates a SCSI Bus Reset and issuing any SCSI
483  Commands. If unspecified, it defaults to BusLogic_DefaultBusSettleTime.
487  The "InhibitTargetInquiry" option inhibits the execution of an Inquire
488  Target Devices or Inquire Installed Devices command on MultiMaster Host
489  Adapters. This may be necessary with some older Target Devices that do not
490  respond correctly when Logical Units above 0 are addressed.
492The BusLogic Driver Debugging Options comprise the following:
496  The "TraceProbe" option enables tracing of Host Adapter Probing.
500  The "TraceHardwareReset" option enables tracing of Host Adapter Hardware
501  Reset.
505  The "TraceConfiguration" option enables tracing of Host Adapter
506  Configuration.
510  The "TraceErrors" option enables tracing of SCSI Commands that return an
511  error from the Target Device. The CDB and Sense Data will be printed for
512  each SCSI Command that fails.
516  The "Debug" option enables all debugging options.
518The following examples demonstrate setting the Queue Depth for Target Devices
5191 and 2 on the first host adapter to 7 and 15, the Queue Depth for all Target
520Devices on the second host adapter to 31, and the Bus Settle Time on the
521second host adapter to 30 seconds.
523Linux Kernel Command Line:
525  linux BusLogic=QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30
527LILO Linux Boot Loader (in /etc/lilo.conf):
529  append = "BusLogic=QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30"
531INSMOD Loadable Kernel Module Installation Facility:
533  insmod BusLogic.o \
534      'BusLogic="QueueDepth:[,7,15];QueueDepth:31,BusSettleTime:30"'
536NOTE: Module Utilities 2.1.71 or later is required for correct parsing
537      of driver options containing commas.
540                  DRIVER INSTALLATION
542This distribution was prepared for Linux kernel version 2.0.35, but should be
543compatible with 2.0.4 or any later 2.0 series kernel.
545To install the new BusLogic SCSI driver, you may use the following commands,
546replacing "/usr/src" with wherever you keep your Linux kernel source tree:
548  cd /usr/src
549  tar -xvzf BusLogic-2.0.15.tar.gz
550  mv README.* LICENSE.* BusLogic.[ch] FlashPoint.c linux/drivers/scsi
551  patch -p0 < BusLogic.patch (only for 2.0.33 and below)
552  cd linux
553  make config
554  make zImage
556Then install "arch/i386/boot/zImage" as your standard kernel, run lilo if
557appropriate, and reboot.
562The BusLogic Announcements Mailing List provides a forum for informing Linux
563users of new driver releases and other announcements regarding Linux support
564for BusLogic SCSI Host Adapters. To join the mailing list, send a message to
565"" with the line "subscribe" in the
566message body.

Archive Download this file