******************************************************************************
mptlinux.txt
******************************************************************************
This file presents general information about the LSI Logic Fusion-MPT (TM)
(Message Passing Technology) device drivers for Linux.
It also describes the features and use of the device drivers for the
Linux operating system environment.
This file is divided into the following sections:
Introduction
Features
LSI Logic Devices Supported
Installing the Fusion-MPT Linux Drivers
Custom Linux Kernel Installation Instructions
Adding Fusion-MPT support to the Kernel
Updating Bundled Fusion-MPT Driver
Kernel Patch Instructions
General Information
Driver Build Instructions
Loading the Drivers As Modules
Boot Setup Commands
Syntax
Available Arguments
Configuring Network Interfaces for Fusion-MPT LAN Support
Troubleshooting
******************************** Introduction ********************************
The mptlinux drivers are free software and are supported in source form.
These drivers are distributed in the hope that they will be useful, but
without any warranty and without even the implied warranty of merchantability
or fitness for a particular purpose. You can redistribute them and/or modify
them under the terms of version 2 or later of the GNU Public License as
published by the Free Software Foundation. You should have received a copy
of this license with your Linux kernel source tree (/usr/src/linux/COPYING).
For detailed information on the GNU Public License, contact the Free Software
Foundation, Inc at 59 Temple Place - Suite 330, Boston, MA 02111-1307 or at
URL http://www.gnu.org/copyleft/gpl.html.
=== Features ===
o Supports SCSI and IETF-compliant LAN protocols concurrently over FC
o Supports 1 Gbit/s Fibre Channel transfer rates (LSIFC909)
o Supports 1 Gbit/s and 2 Gbit/s Fibre Channel transfer rates (LSIFC919,
LSIFC929)
o Supports Ultra320 SCSI transfer rates (LSI53C1030)
o Supports LSI Logic Fusion-MPT Architecture and common software interface
o Low host CPU utilization with one, or less than one, interrupt per I/O
=== LSI Logic Devices Supported ===
o LSIFC909 chips and LSI40909 adapters
o LSIFC919 chips and LSI40919 adapters
o LSIFC929 chips and LSI44929 adapters
o LSI53C1030 chips and LSI22320 adapters
o LSI53C1020 chips and LSI20320 adapters
****************** Installing the Fusion-MPT Linux Drivers *******************
=== Custom Linux Kernel Installation Instructions ===
The mptlinux drivers are provided in source form so that the drivers can
be compiled and installed on any system running Linux. You must have the
linux kernel source tree available to perform the procedures below.
------ Adding Fusion-MPT support to the Kernel
For Red Hat 7.0, all 2.2 and 2.4.0 through 2.4.6 kernels, Fusion-MPT support
must be added to the kernel source.
The mptlinux driver source tar archive should be unpacked from the root of
your linux kernel source tree (normally /usr/src/linux).
Example:
$ cd /usr/src/linux
$ zcat /tmp/mptlinux-2.01-src.tar.gz | tar xvf -
------ Updating Bundled Fusion-MPT Driver
A version of the mptlinux driver is bundled in Red Hat 7.1 and 7.2
and official kernels starting with version 2.4.7.
Before updating the bundled source, save the original driver tree
in a compressed tar file.
Example:
# cd /usr/src/linux/drivers/message
# tar czvf fusion.orig.tar.gz fusion
Delete the original driver tree and unpack the new driver files
Example:
# rm -rf fusion
# cd /usr/src/linux
# zcat /tmp/mptlinux-2.01-src.tar.gz | tar xvf -
(Deletion of the original driver tree is necessary to remove obsolete files.)
=== Kernel Patch Instructions ===
------ General Information
The mptlinux host drivers may require a small set of patches to your linux kernel
source tree. Patch sets for stock and "well known" kernel versions have been
included with the packed source tar archive. Patches may be required even if
the mptlinux driver is currently bundled.
Fusion patch files available for linux 2.2.x kernel versions are:
2.2.5-15, 2.2.5-16, (Red Hat 6.0)
2.2.12,
2.2.12-20, (Red Hat 6.1)
2.2.13,
2.2.14,
2.2.14-5.0, 2.2.14-6.0, (Red Hat 6.2)
2.2.14-caldera, (Caldera 2.3.1)
2.2.15,
2.2.16,
2.2.16-22, (Red Hat 7.0)
2.2.17,
2.2.18,
2.2.18-2, (TurboLinux 6.5)
2.2.19,
2.2.20
Fusion patch files available for linux 2.4.x kernel versions are:
2.4.0,
2.4.1,
2.4.2,
2.4.2-2, (Red Hat 7.1)
<not needed>, (Caldera 3.1)
2.4.3,
2.4.3-12, (Red Hat 7.1, upd#1)
2.4.4,
2.4.4-4GB, (SuSE 7.2)
2.4.5,
2.4.5-3, (TurboLinux 7.0)
2.4.6,
2.4.7,
2.4.7-10, (Red Hat 7.2)
2.4.8,
2.4.9,
2.4.9-6, <zero patches> (Red Hat 7.1, upd#2)
2.4.9-13, <zero patches> (Red Hat 7.2, upd#1)
2.4.9-18, (Red Hat 7.2 IA64)
2.4.9-21, <zero patches> (Red Hat 7.2, upd#2)
2.4.10,
2.4.10-4GB, (SuSE 7.3)
2.4.11 (broken kernel, do not use),
2.4.12,
2.4.13,
2.4.14,
2.4.15,
2.4.16,
2.4.17,
2.4.18
NOTES:
o The Fusion-MPT LAN driver is NOT supported in any of the 2.2.x
kernels listed here. You MUST be working with a linux-2.4.x
kernel for Fusion-MPT LAN support.
o For module support under 2.3.x and 2.4.x kernels you must have
modutils v2.3.15 or newer installed.
o IA64 support requires a linux-2.4.x kernel.
To identify which kernel version you have, examine your
/usr/src/linux/Makefile as follows:
Example (on a RedHat 6.2 system):
VERSION = 2
PATCHLEVEL = 2
SUBLEVEL = 14
EXTRAVERSION = -5.0
Then apply the closest patch set you can find.
Example (on a Red Hat 6.2 system):
$ patch -p0 < drivers/message/fusion/patch/linux-2.2.14-5.0.txt
These patches will apply small changes to the following files:
Makefile
arch/alpha/config.in
arch/i386/config.in
arch/sparc64/config.in
drivers/Makefile
include/linux/miscdevice.h
include/linux/proc_fs.h
NOTE 1: If the driver is bundled in your kernel and no patch is
listed for your kernel, no patch set is required. Proceed to
the Driver Build Instructions.
NOTE 2: You may not find an exact match for your kernel, however, applying
the closest patch set *should* work, in general, but may require that you
manually update any files for which the patch procedure might produce *.rej
file sections. You might optionally choose to hand-apply the small set of
required kernel patches by examining one or more of the kernel patch files.
=== Driver Build Instructions ===
The following examples illustrate configuring and building
the LSI Logic Fusion-MPT driver(s) as kernel modules, however,
please note that the MPT base and ScsiHost drivers can alternatively
be compiled into the linux kernel instead of built as modules.
1. From the /usr/src/linux directory, ensure a clean kernel source
tree by executing the following command:
$ make mrproper
2. From the /usr/src/linux directory, run your normal kernel
configuration routine:
$ make oldconfig
or:
$ make config
or:
$ make menuconfig
or:
$ make xconfig
3. Look for the new top-level "Fusion MPT device support" entry:
Fusion MPT device support --->
and select it to access the Fusion-MPT drivers submenu entries:
<M> Fusion MPT (base + ScsiHost) drivers
<M> Enhanced SCSI error reporting
< > Fusion MPT misc device (ioctl) driver
< > Fusion MPT LAN driver
On the submenu, select the "Fusion MPT (base + ScsiHost) drivers" line,
and then enter "m" to configure for building this support as a module.
(Alternatively, you can enter "y" here to have this support built
into the kernel.)
NOTES:
o Enhanced SCSI error reporting and ioctl drivers are optional,
and it is recommended they only be built as modules,
due to kernel size considerations.
o DO NOT answer "y" for Fusion-MPT LAN driver option as support
for this driver is currently restricted to module use only.
4. For LAN support, make sure that "Fibre Channel driver support" is turned
on in the "Network device support" section.
5. Save your kernel config changes. Follow any post config instructions
and do everything needed on your platform to rebuild the kernel.
This will typically include:
$ make dep
and:
$ make bzImage # varies on non-intel platforms
6. Rebuild the kernel modules:
$ make modules
NOTE: These last steps shown here require root permission.
7. Optionally, do everything needed on your platform to install a
newly built kernel.
Take care with this step. It's easy to destroy a good/stable kernel
in the follwing steps.
8. (Re)Install newly compiled kernel modules:
# make modules_install
The output from the last step should look something like this:
Installing modules under /lib/modules/2.2.14-5.0/block
Installing modules under /lib/modules/2.2.14-5.0/net
Installing modules under /lib/modules/2.2.14-5.0/ipv4
Installing modules under /lib/modules/2.2.14-5.0/scsi
Installing modules under /lib/modules/2.2.14-5.0/fs
Installing modules under /lib/modules/2.2.14-5.0/fs
Installing modules under /lib/modules/2.2.14-5.0/cdrom
Installing modules under /lib/modules/2.2.14-5.0/video
Installing modules under /lib/modules/2.2.14-5.0/net
Installing modules under /lib/modules/2.2.14-5.0/misc
9. Shut down the system:
Example:
# shutdown -r now
and then reboot with the newly built linux kernel.
=== Loading the Drivers As Modules ===
After building the driver modules, as described in the previous section,
the newly compiled kernel and modules are ready to be loaded.
1. Load the Fusion-MPT base driver.
# insmod mptbase
Fusion-MPT base driver 2.01
Copyright (c) 1999-2002 LSI Logic Corporation
mptbase: Initiating ioc0 bringup
ioc0: FC919: Capabilities={Initiator,Target,LAN}
mptbase: 1 MPT adapter found, 1 installed.
2. Load the isense driver (optional but highly recommended),
to enable enhanced SCSI error reporting.
# insmod isense
SCSI-3 Opcodes & ASC/ASCQ Strings 2.01
mptbase: English readable SCSI-3 OPs & ASC/ASCQ strings enabled
3. Load the Fusion-MPT SCSI host driver.
# insmod mptscsih
Fusion-MPT SCSI Host driver 2.01
Depending on what FC devices you have attached to your FC link,
you should see something like the following on the console and
in the system log:
scsi0 : ioc0: LSIFC919, FwRev=1000h, Ports=1, MaxQ=256, IRQ=9
scsi : 1 host.
Vendor: SEAGATE Model: ST39102FC Rev: 0007
Type: Direct-Access ANSI SCSI revision: 02
Detected scsi disk sda at scsi0, channel 0, id 0, lun 0
Vendor: SEAGATE Model: ST19171FC Rev: 0017
Type: Direct-Access ANSI SCSI revision: 02
Detected scsi disk sdb at scsi0, channel 0, id 1, lun 0
SCSI device sda: hdwr sector= 512 bytes. Sectors= 17783240 [8683 MB] [8.7 GB]
sda: sda1
SCSI device sdb: hdwr sector= 512 bytes. Sectors= 17783112 [8683 MB] [8.7 GB]
sdb: sdb1
All Fibre Channel target devices should be detected and mapped to linux
SCSI devices, /dev/sd{a,b,c,...} when the mptscsih module is loaded.
All linux commands pertaining to SCSI disk storage management
(fdisk, mke2fs, mount, etc.) using the /dev/sdX[N] notation
should now be functional.
FCP (SCSI) Device Access Example:
# fdisk /dev/sdb
# mke2fs /dev/sdb1
# mount /dev/sdb1 /mnt/s1
=== Boot Setup Commands ===
1. Syntax
Setup commands can be passed to the SCSI host driver mptscsih
as a string variable using 'insmod'. The following command
will install driver module with the bus width set to narrow
and Domain Validation disabled.
insmod mptscsih.o mptscsih="dv:n width:0"
Each string argument must be specified as "keyword:value". Only lower-case
characters and digits are allowed.
2. Available Arguments
2.1 Domain Validation
dv:n disabled
dv:y enabled [default]
The SCSI host driver will perform a sequence of write, read and compare
commands to each target device during driver initialization. If data
corruption or bus hangs are detected during this sequence, the driver
will automatically slow the transfer rate until reliable transmission is
achieved.
Warning! These tests use a devices internal buffer. Some
older SCSI devices behave badly, that is, freeze, when they receive a
Read or Write Buffer command.
DV may be disabled on a per-device basis by setting the transfer
characterists to ASYNC and NARROW in the adapter BIOS. Alternatively,
DV may be disabled for the driver by passing in dv:n as a command
line argument.
This option is has no effect for LSIFC9XX parts.
2.2 Maximum SCSI Bus Width
width:0 wide SCSI disabled
width:1 wide SCSI enabled
The maximum allowed SCSI bus data transfer width is set to the
minimum of the command line options, adapter capabilities, and
NVRAM settings.
This option is has no effect for LSIFC9XX parts.
2.3 Minimum SCSI Synchronous Factor
factor:0x08 Ultra320 (160 Mega-transfers / second)
factor:0x09 Ultra160 ( 80 Mega-transfers / second)
factor:0x0A Ultra2 ( 40 Mega-transfers / second)
factor:0x0C Ultra ( 20 Mega-transfers / second)
factor:0x19 FAST ( 10 Mega-transfers / second)
factor:0x32 SCSI ( 5 Mega-transfers / second)
factor:0xFF 5 Mega-trasfers/second and asynchronous
The minimum allowed SCSI synchronous factor is set to the
maximum of the command line input, adapters capabilities and
NVRAM setting. If the minimum synchronous factor is 0xFF, the
synchronous offset will be set to 0 (asynchronous).
This option is has no effect for LSIFC9XX parts.
=== Configuring Network Interfaces for Fusion-MPT LAN Support ===
You can use either linuxconf, netcfg (only runs under X), or your own
knowledge of network configuration files and vi/emacs to setup your
Fusion-MPT LAN connection. The instructions below are specifically for
linuxconf, but they could be easily adapted to netcfg. Instructions for
manually adding the needed config files is beyond the scope of this
document.
1. In linuxconf, go to Config->Networking->Client tasks->Basic host
information.
2. Select an unused adaptor (i.e. 2)
3. Set "Config mode" to "Manual"
4. Set "Primary name" to the name you want.
5. Set "IP Address" to the IP address that you're using.
6. Set your netmask to whatever is used on your network. The default is
255.255.255.0, and should be used unless your network admin says
otherwise.
7. Set "Net device" to fc? (fc0 for the first LAN port, fc1 for the
second, . . .)
8. If you want the interface to be activated automatically at boot, select
"Enabled" and then type "mptlan" on the "Kernel module" line.
****************************** Troubleshooting *******************************
1. The SCSI driver error reporting has been enhanced, making it more readable.
Also, there's an (optional) isense driver/shim which
provides SCSI-3 opcode string lookup and a LARGE sorted table of 463
unique SCSI-3 Additional Sense Code & Qualifier (ASC/ASCQ) strings. It is
translated directly from a text file off the SCSI T10.org's ftp site:
ftp://ftp.t10.org/t10/drafts/spc2/asc-num.txt
If the isense driver is (optionally) loaded, whenever a SCSI check
condition is generated[1], an english readable ASC/ASCQ string for the
SCSI error is also printed.
Here's an example:
-----
SCSI Error Report =-=-= (ioc0,scsi5:0)
SCSI_Status=02h (CHECK_CONDITION)
Original_CDB[]: 2A 00 00 00 00 41 00 00 02 00 - "WRITE(10)"
SenseData[12h]: 70 00 02 00 00 00 00 0A 00 00 00 00 04 02 02 00 00 00
SenseKey=2h (NOT READY); FRU=02h
ASC/ASCQ=29h/00h "LOGICAL UNIT NOT READY, INITIALIZING CMD. REQUIRED"
-----
If the isense driver is NOT installed, neither the SCSI opcode string
nor the last ASC/ASCQ string will be displayed.
2. If you have compiled your linux kernel with /proc file system support,
you can examine SCSI devices using this command:
$ cat /proc/scsi/scsi
A summary of attached/recognized Fusion-MPT adapters can be examined with
the following command:
$ cat /proc/mpt/summary
3. If you have an LSI Logic Fibre Channel RAID subsystem attached, some of
the standard linux SCSI devices that show up will not be accessible,
depending on the exact configuration of the RAID controller(s).
For example, if you have dual active controllers in one subsystem with
8 active LUNs configured for each controller, all 16 LUNs will be visible
through each controller (32 SCSI devices total), although only 8 LUNs
will actually be accessible from each controller. There is currently
no filtering out of the "visible but not accessible" entries.
******************************************************************************
Fusion-MPT is a trademark of LSI Logic Corporation
Linux is a registered trademark of Linus Torvalds
Red Hat is a registered trademark of Red Hat Software, Inc.
******************************************************************************
Download Driver Pack
After your driver has been downloaded, follow these simple steps to install it.
Expand the archive file (if the download file is in zip or rar format).
If the expanded file has an .exe extension, double click it and follow the installation instructions.
Otherwise, open Device Manager by right-clicking the Start menu and selecting Device Manager.
Find the device and model you want to update in the device list.
Double-click on it to open the Properties dialog box.
From the Properties dialog box, select the Driver tab.
Click the Update Driver button, then follow the instructions.
Very important: You must reboot your system to ensure that any driver updates have taken effect.
For more help, visit our Driver Support section for step-by-step videos on how to install drivers for every file type.