- BusLogic MultiMaster and FlashPoint SCSI Driver for Linux¶
- Driver Features¶
- Configuration Reporting and Testing¶
- Performance Features¶
- Robustness Features¶
- PCI Configuration Support¶
- /proc File System Support¶
- Shared Interrupts Support¶
- Supported Host Adapters¶
- SCSI subsystem documentation¶
- Notes on using modules in the SCSI subsystem¶
BusLogic MultiMaster and FlashPoint SCSI Driver for Linux¶
BusLogic, Inc. designed and manufactured a variety of high performance SCSI host adapters which share a common programming interface across a diverse collection of bus architectures by virtue of their MultiMaster ASIC technology. BusLogic was acquired by Mylex Corporation in February 1996, but the products supported by this driver originated under the BusLogic name and so that name is retained in the source code and documentation.
This driver supports all present BusLogic MultiMaster Host Adapters, and should support any future MultiMaster designs with little or no modification. More recently, BusLogic introduced the FlashPoint Host Adapters, which are less costly and rely on the host CPU, rather than including an onboard processor. Despite not having an onboard CPU, the FlashPoint Host Adapters perform very well and have very low command latency. BusLogic has recently provided me with the FlashPoint Driver Developer’s Kit, which comprises documentation and freely redistributable source code for the FlashPoint SCCB Manager. The SCCB Manager is the library of code that runs on the host CPU and performs functions analogous to the firmware on the MultiMaster Host Adapters. Thanks to their having provided the SCCB Manager, this driver now supports the FlashPoint Host Adapters as well.
My primary goals in writing this completely new BusLogic driver for Linux are to achieve the full performance that BusLogic SCSI Host Adapters and modern SCSI peripherals are capable of, and to provide a highly robust driver that can be depended upon for high performance mission critical applications. All of the major performance features can be configured from the Linux kernel command line or at module initialization time, allowing individual installations to tune driver performance and error recovery to their particular needs.
The latest information on Linux support for BusLogic SCSI Host Adapters, as well as the most recent release of this driver and the latest firmware for the BT-948/958/958D, will always be available from my Linux Home Page at URL «http://sourceforge.net/projects/dandelion/».
Bug reports should be sent via electronic mail to «lnz @ dandelion . com». Please include with the bug report the complete configuration messages reported by the driver and SCSI subsystem at startup, along with any subsequent system messages relevant to SCSI operations, and a detailed description of your system’s hardware configuration.
Mylex has been an excellent company to work with and I highly recommend their products to the Linux community. In November 1995, I was offered the opportunity to become a beta test site for their latest MultiMaster product, the BT-948 PCI Ultra SCSI Host Adapter, and then again for the BT-958 PCI Wide Ultra SCSI Host Adapter in January 1996. This was mutually beneficial since Mylex received a degree and kind of testing that their own testing group cannot readily achieve, and the Linux community has available high performance host adapters that have been well tested with Linux even before being brought to market. This relationship has also given me the opportunity to interact directly with their technical staff, to understand more about the internal workings of their products, and in turn to educate them about the needs and potential of the Linux community.
More recently, Mylex has reaffirmed the company’s interest in supporting the Linux community, and I am now working on a Linux driver for the DAC960 PCI RAID Controllers. Mylex’s interest and support is greatly appreciated.
Unlike some other vendors, if you contact Mylex Technical Support with a problem and are running Linux, they will not tell you that your use of their products is unsupported. Their latest product marketing literature even states «Mylex SCSI host adapters are compatible with all major operating systems including: . Linux . «.
Mylex Corporation is located at 34551 Ardenwood Blvd., Fremont, California 94555, USA and can be reached at 510/796-6100 or on the World Wide Web at http://www.mylex.com. Mylex HBA Technical Support can be reached by electronic mail at techsup @ mylex . com, by Voice at 510/608-2400, or by FAX at 510/745-7715. Contact information for offices in Europe and Japan is available on the Web site.
Driver Features¶
Configuration Reporting and Testing¶
During system initialization, the driver reports extensively on the host adapter hardware configuration, including the synchronous transfer parameters requested and negotiated with each target device. AutoSCSI settings for Synchronous Negotiation, Wide Negotiation, and Disconnect/Reconnect are reported for each target device, as well as the status of Tagged Queuing. If the same setting is in effect for all target devices, then a single word or phrase is used; otherwise, a letter is provided for each target device to indicate the individual status. The following examples should clarify this reporting format:
Synchronous Negotiation: Ultra
Synchronous negotiation is enabled for all target devices and the host adapter will attempt to negotiate for 20.0 mega-transfers/second.
Synchronous Negotiation: Fast
Synchronous negotiation is enabled for all target devices and the host adapter will attempt to negotiate for 10.0 mega-transfers/second.
Synchronous Negotiation: Slow
Synchronous negotiation is enabled for all target devices and the host adapter will attempt to negotiate for 5.0 mega-transfers/second.
Synchronous Negotiation: Disabled
Synchronous negotiation is disabled and all target devices are limited to asynchronous operation.
Synchronous Negotiation: UFSNUUU#UUUUUUUU
Synchronous negotiation to Ultra speed is enabled for target devices 0 and 4 through 15, to Fast speed for target device 1, to Slow speed for target device 2, and is not permitted to target device 3. The host adapter’s SCSI ID is represented by the «#».
The status of Wide Negotiation, Disconnect/Reconnect, and Tagged Queuing are reported as «Enabled», Disabled», or a sequence of «Y» and «N» letters.
Performance Features¶
BusLogic SCSI Host Adapters directly implement SCSI-2 Tagged Queuing, and so support has been included in the driver to utilize tagged queuing with any target devices that report having the tagged queuing capability. Tagged queuing allows for multiple outstanding commands to be issued to each target device or logical unit, and can improve I/O performance substantially. In addition, BusLogic’s Strict Round Robin Mode is used to optimize host adapter performance, and scatter/gather I/O can support as many segments as can be effectively utilized by the Linux I/O subsystem. Control over the use of tagged queuing for each target device as well as individual selection of the tagged queue depth is available through driver options provided on the kernel command line or at module initialization time. By default, the queue depth is determined automatically based on the host adapter’s total queue depth and the number, type, speed, and capabilities of the target devices found. In addition, tagged queuing is automatically disabled whenever the host adapter firmware version is known not to implement it correctly, or whenever a tagged queue depth of 1 is selected. Tagged queuing is also disabled for individual target devices if disconnect/reconnect is disabled for that device.
Robustness Features¶
The driver implements extensive error recovery procedures. When the higher level parts of the SCSI subsystem request that a timed out command be reset, a selection is made between a full host adapter hard reset and SCSI bus reset versus sending a bus device reset message to the individual target device based on the recommendation of the SCSI subsystem. Error recovery strategies are selectable through driver options individually for each target device, and also include sending a bus device reset to the specific target device associated with the command being reset, as well as suppressing error recovery entirely to avoid perturbing an improperly functioning device. If the bus device reset error recovery strategy is selected and sending a bus device reset does not restore correct operation, the next command that is reset will force a full host adapter hard reset and SCSI bus reset. SCSI bus resets caused by other devices and detected by the host adapter are also handled by issuing a soft reset to the host adapter and re-initialization. Finally, if tagged queuing is active and more than one command reset occurs in a 10 minute interval, or if a command reset occurs within the first 10 minutes of operation, then tagged queuing will be disabled for that target device. These error recovery options improve overall system robustness by preventing individual errant devices from causing the system as a whole to lock up or crash, and thereby allowing a clean shutdown and restart after the offending component is removed.
PCI Configuration Support¶
On PCI systems running kernels compiled with PCI BIOS support enabled, this driver will interrogate the PCI configuration space and use the I/O port addresses assigned by the system BIOS, rather than the ISA compatible I/O port addresses. The ISA compatible I/O port address is then disabled by the driver. On PCI systems it is also recommended that the AutoSCSI utility be used to disable the ISA compatible I/O port entirely as it is not necessary. The ISA compatible I/O port is disabled by default on the BT-948/958/958D.
/proc File System Support¶
Copies of the host adapter configuration information together with updated data transfer and error recovery statistics are available through the /proc/scsi/BusLogic/ interface.
Shared Interrupts Support¶
On systems that support shared interrupts, any number of BusLogic Host Adapters may share the same interrupt request channel.
Supported Host Adapters¶
The following list comprises the supported BusLogic SCSI Host Adapters as of the date of this document. It is recommended that anyone purchasing a BusLogic Host Adapter not in the following table contact the author beforehand to verify that it is or will be supported.
FlashPoint Series PCI Host Adapters:
Ultra SCSI-3 with RAIDPlus
Ultra SCSI-3 (BT-930 without BIOS)
Dual Channel Ultra SCSI-3 with RAIDPlus
Wide Ultra SCSI-3 with RAIDPlus
Dual Channel Wide Ultra SCSI-3
Dual Channel Wide Ultra SCSI-3 with RAIDPlus
MultiMaster «W» Series Host Adapters:
SCSI subsystem documentation¶
The Linux Documentation Project (LDP) maintains a document describing the SCSI subsystem in the Linux kernel (lk) 2.4 series. See: https://www.tldp.org/HOWTO/SCSI-2.4-HOWTO . The LDP has single and multiple page HTML renderings as well as postscript and pdf.
Notes on using modules in the SCSI subsystem¶
The SCSI support in the Linux kernel can be modularized in a number of different ways depending upon the needs of the end user. To understand your options, we should first define a few terms.
The scsi-core (also known as the «mid level») contains the core of SCSI support. Without it you can do nothing with any of the other SCSI drivers. The SCSI core support can be a module (scsi_mod.o), or it can be built into the kernel. If the core is a module, it must be the first SCSI module loaded, and if you unload the modules, it will have to be the last one unloaded. In practice the modprobe and rmmod commands will enforce the correct ordering of loading and unloading modules in the SCSI subsystem.
The individual upper and lower level drivers can be loaded in any order once the SCSI core is present in the kernel (either compiled in or loaded as a module). The disk driver (sd_mod.o), CD-ROM driver (sr_mod.o), tape driver 1 (st.o) and SCSI generics driver (sg.o) represent the upper level drivers to support the various assorted devices which can be controlled. You can for example load the tape driver to use the tape drive, and then unload it once you have no further need for the driver (and release the associated memory).
The lower level drivers are the ones that support the individual cards that are supported for the hardware platform that you are running under. Those individual cards are often called Host Bus Adapters (HBAs). For example the aic7xxx.o driver is used to control all recent SCSI controller cards from Adaptec. Almost all lower level drivers can be built either as modules or built into the kernel.
There is a variant of the st driver for controlling OnStream tape devices. Its module name is osst.o .