SDMS
Device Drivers for Linux
This file presents general information about the
SDMS device drivers for Linux. It also describes the features and use of the device drivers for the
Linux operating system environment.
It is divided into the following sections:
Introduction
The Linux 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 http://www.gnu.org/copyleft/gpl.html.
The official Linux kernel currently bundles three drivers
that support the LSI53C8XX family of PCI to SCSI chips: 53C7,8XX; NCR53C8XX; and SYM53C8XX. The latter two drivers use the same code base and are maintained.
LSI Logic recommends that you install the SYM53C8XX driver if your controllers are supported by it. If you are not
sure, configure the kernel to load both the SYM53C8XX and NCR53C8XX drivers (either built into the kernel or as modules). The
kernel will then select an appropriate driver for each of your LSI53C8XX or
LSI53C1XXX controllers. The SYM53C8XX driver will install first and
then the NCR53C8XX driver
will install and support all remaining LSI53C8XX or LSI53C1XXX devices.
The SYM53C8XX driver takes full advantage of the features
for the latest LSI53C8XX or LSI53C1XXX family of chips, although support for some of the earliest chips is no longer
available. The differences between the two drivers are:
- The SYM53C8XX driver supports only those
NCR/SYM/LSI/53C8XX chips that perform
Load/Store instructions. Additionally, it supports the Ultra160 LSI53C1010 chip, uses 8
Kbytes on-chip RAM and handles phase mismatches in SCRIPTS™ for the LSI53C895,
LSI53C895A, LSI53C896, LSI53C897 and LSI53C1010 chips.
- The NCR53C8XX driver supports the entire NCR/SYM/LSI/53C8XX family of chips
excluding the latest Ultra160 SYM53C1010 parts released by LSI Logic.
Note that this driver supports the earliest chips from NCR, such as the NCR53C810 revision
1.
back to top
Features
For the SYM53C8XX driver only, the supported features are:
- Utilizes SCRIPTS Load/Store command
- Handles Phase Mismatch from SCRIPTS
- Parallel Protocol Request (PPR) negotiation
- Ultra160 Data Transfers (for LSI53C1010)
For SYM53C8XX and NCR53C8XX drivers, the supported features are:
- Integrity Checking (Domain Validation for 2.2.X Kernels)
- Handles one interrupt per I/O
- Synchronous negotiation (including Fast SCSI/Ultra
SCSI/Ultra2 SCSI)
- Wide negotiation
- Disconnect/Reselect
- Allows tagged command queuing
- Scatter/Gather
- Shared interrupts
- SCSI parity checking
- Master parity checking
- Provides LSI Logic and Tekram formatted NVRAM
- Allows memory-mapped or normal I/O user configurations
- Command line options to override default configuration
- Allows drivers to be built into the kernel or built as a
module
- Allows installation of both drivers simultaneously
back to top
LSI
Logic Devices Supported
All LSI Logic devices and host adapters have
undergone a name change. They have transitioned from a SYM prefix to an LSI
prefix. No name changes have occurred for the SDMS Linux drivers.
Host adapters based on the LSI53C8XX or
LSI53C1XXX family of chips (formerly prefixed with SYM) are
supported by the SYM53C8XX
and NCR53C8XX drivers as
follows:
Chip |
On
Board
SDMS BIOS |
Wide |
SCSI
STD |
Max
Sync |
Supported by:
NCR53C8XX
driver |
Supported by:
SYM53C8XX
driver |
LSI53C810 |
N
|
N
|
FAST10
|
10 MB/s |
Y |
N |
LSI53C810A |
N |
N |
FAST10
|
10 MB/s |
Y
|
Y |
LSI53C815 |
Y
|
N |
FAST10
|
10
MB/s |
Y
|
N |
LSI53C825 |
Y
|
Y |
FAST10
|
20
MB/s |
Y
|
N |
LSI53C825A |
Y
|
Y |
FAST10
|
20
MB/s |
Y
|
Y |
LSI53C860 |
N |
N |
FAST20
|
20
MB/s |
Y
|
Y |
LSI53C875 |
Y
|
Y |
FAST20
|
40
MB/s |
Y
|
Y |
LSI53C876 |
Y
|
Y
|
FAST20
|
40
MB/s |
Y
|
Y |
LSI53C895 |
Y
|
Y
|
FAST40
|
80
MB/s |
Y
|
Y |
LSI53C895A |
Y
|
Y
|
FAST40
|
80
MB/s |
Y
|
Y |
LSI53C896 |
Y
|
Y
|
FAST40
|
80
MB/s |
Y
|
Y |
LSI53C897 |
Y
|
Y
|
FAST40
|
80
MB/s |
Y
|
Y |
LSI53C1010* |
Y
|
Y |
FAST80 |
160
MB/s |
N |
Y |
* 66 and 33 MHz PCI bus support.
Details on the drivers can be found on your system in the
file:
/usr/src/linux/driver/scsi/README.ncr53c8xx
back to top
Installing
your Linux Driver
After installing the Linux operating system, you must
patch the driver and other kernel files to upgrade to SYM53C8XX version 1.60 (NCR53C8XX version 3.30).
- Obtain and install the kernel source.
Note: Patches are available for
kernel versions 2.2.5, 2.2.12, Red Hat 6.1 kernel (2.2.12-20), 2.2.13, 2.2.14, Red Hat 6.2
kernel (2.2.14-5), 2.2.15, 2.3.99-pre8 and 2.3.99-pre9.
The kernel source may be obtained through anonymous ftp from http://www.us.kernel.org/pub.
Be sure to use binary mode to download the kernel file. For this example, the bz2
compressed kernel was downloaded and stored under /root/Kernels.
- Uncompress and install the kernel by typing at the prompt:
#cd
/usr/src
#rm linux
#bunzip2 -c /root/Kernels/linux-2.2.13.tar.bz2 | tar xvf -
Note: bunzip2 is not installed by default
with Red Hat 6.1 version.
- Reset the soft links and type at the prompt:
#mv linux
linux-2.2.13
#ln -s linux-2.2.13 linux
#cd linux/include
#ln -s asm-<platform> asm
- Obtain the driver patches.
Patches for driver versions are stored in tarball
format:
<driver
version>-2.2.13.tar.gz
and may be obtained either from the SDMS Software Device Drivers
and Utilities CD-ROM at:
{CD-ROM Mount Point}drivers/8xx-1010/unixes/linux
or
by anonymous ftp from:
ftp://ftp.lsil.com/HostAdapterDrivers/linux
When using ftp, download the tarball for the kernel of interest by typing these instructions:
ftp> cd 8xx-driver
ftp> binary
ftp> get 2.2.13.tar.gz
ftp> quit
Extract the patch files from the tarball:
#tar xzvf 2.2.13.tar.gz
The newly created directory 2.2.13 will contain:
readme-2.2.13.ftp - A listing of the driver version versus patch number.
script-2.2.13 - A shell script that can be executed to apply the patches in the correct order.
files in the format:
patch-ncr53C8xx-s<setno>-d<patchno>-<extension>-<kernelversion>.gz
These files are generated with diff -u
and compressed using gzip. Typically, all
patches are applied in order beginning with the lowest set and patch number. Some patches
have an additional extension of dri or
sys to indicate that they are patches to the driver
files or the system files. Patches with the same set and patch number but different
extension (dri or
sys) may be applied in any order.
back to top
-
Apply the driver patches.
Edit the script file and
replace <your patch directory> with the full path to the patches. For example, if the
full path to your patches is:
/home/myself/kernelpatches/2.2.13
then the script becomes:
echo "Patching ncr53c8xx/sym53c8xx to versions 3.3b and 1.6b
- kernel 2.2.13"
cd /usr/src
ln -s /home/myself/kernelpatches/2.2.13 source
gzip -d <source/patch-53c8xx-s01-d00-dri-2.2.13.gz | patch -p0
gzip -d <source/patch-53c8xx-s01-d00-sys-2.2.13.gz | patch -p0
gzip -d <source/patch-53c8xx-s01-d01-sys-2.2.13.gz | patch -p0
gzip -d <source/patch-53c8xx-s01-d01-dri-2.2.13.gz | patch -p0
gzip -d <source/patch-53c8xx-s01-d02-sys-2.2.13.gz | patch -p0
gzip -d <source/patch-53c8xx-s01-d02-dri-2.2.13.gz | patch -p0
gzip -d <source/patch-53c8xx-s01-d03-sys-2.2.13.gz | patch -p0
gzip -d <source/patch-53c8xx-s01-d03-dri-2.2.13.gz | patch -p0
gzip -d <source/patch-53c8xx-s04-d00-sys-2.2.13.gz | patch -p0
gzip -d <source/patch-53c8xx-s04-d00-dri-2.2.13.gz | patch -p0
gzip -d <source/patch-53c8xx-s04-d01-2.2.13.gz | patch -p0
rm source
Execute the script by typing at the prompt:
#./script-2.2.13
Note 1: The script must have execute permission. If it does not,
set the permission by typing at the prompt:
#chmod +x
script-2.2.13
Note 2: If you uncompress the patch files to examine the content, you
can still apply the patch either by recompressing with gzip or
by replacing "gzip -d <" with "cat" in the script file.
- Reconfigure and rebuild the kernel.
Rebuild the kernel in the usual way for your platform. It is
strongly recommended that you make an emergency boot diskette prior to rebuilding the
kernel. See your system documentation or use the online documentation ($man mkbootdisk) for more information.
To rebuild the kernel on an I386 platform, type at the
prompt:
#cd /usr/src/linux
#make mrproper (to reset to default state)
#make xconfig (or: #make
menuconfig)
At this point, enable the Joliet file
system for CD-ROMs under the Filesystems option. Then continue:
#make dep
#make clean
#make bzImage (for an Alpha platform: #make boot)
#make modules
#make modules_install
#cd /boot
#rm System.map vmlinuz module-info
#cp /usr/src/linux/System.map System.map-<kernel version>
#ln -s System.map-<kernel version> System.map
#cp /usr/src/linux/arch/i386/boot/bzImage vmlinuz-<kernel version>
#ln -s vmlinuz-<kernel version> vmlinuz
WARNING: If you modify the previous
kernel and are using lilo,
you must update and run your boot loader (#lilo -v). If you forget to do so and do not have an emergency boot
diskette, your system will be unbootable. There is no recovery method if you boot from a
SCSI disk. See $man mkbootdisk for instructions on how to make a boot diskette.
back to top
Troubleshooting
If you have problems with any of these patches or if you
need patches for an official kernel not listed, refer to the LSI Logic Technical Support Page for additional assistance. Provide
details about the kernel version. If patches have failed, also
specify if it is an official kernel or vendor kernel and which patches failed.
Some potential problems and their suggested solutions are:
Problem: Integrity Checking
(Domain Validation) is not enabled.
Solution:
To enable integrity checking, run menuconfig (or xconfig).
Under SCSI support-->SCSI Low-level drivers-->NCR53C8XX (or
SYM53C8XX), select Perform integrity check. Rebuild
the kernel and run lilo -v.
Problem: Integrity Checking
(Domain Validation) is enabled but a device behaves badly. How can it be
disabled?
Solution:
- To disable integrity checking, type at the prompt:
#insmod ncr53c8xx "ncr53c8xx=buschk:4"
or
#insmod sym53c8xx "sym53c8xx=buschk:4"
To disable integrity checking when the driver is built into the kernel, type at the lilo prompt:
lilo: linux root=/dev/hda2 ncr53c8xx=buschk:4
or
lilo: linux root=/dev/hda2 sym53c8xx=buschk:4
where hda2 is the root partition.
Problem: The C1010 boards are shipped
with the default speed set to Ultra2.
Solution:
To run at Ultra160 speeds, update the sync speed in the
configuration (set to 80) and change the setting in NVRAM. If necessary, use the command
line arguments nvram:7,
sync:9 and
wide:1 to the setup
command. For example, with insmod:
#insmod sym53c8xx "sym53c8xx=nvram:7 wide:1
sync:9"
Problem: There are no patches for your
kernel.
Solution:
You may go to the LSI Logic Technical Support Home Page,
which is located at http://www.lsilogic.com/support/index.html
and call the listed number if you need patches for an official kernel.
back to top
LINUX IS A REGISTERED
TRADEMARK OF LINUS TORVALDS
RED HAT IS A REGISTERED TRADEMARK OF RED HAT SOFTWARE, INC. |