LKM - SCSI Drivers
Welcome to the tutorial guide. The tutorial guide will provide a user with advise and guidance about SCSI drivers.
Please note that Linux’s SCSI function is implemented in three layers, and there are LKMs for all of them.
In the middle is the mid-level driver or SCSI core. This consists of the scsi_mod LKM. It does all those things that are common among SCSI devices regardless of what SCSI adapter a user uses and what class of device (disk, scanner, CD-ROM drive, etc.) it is.
There is a low-level driver for each kind of SCSI adapter — typically, a different driver for each brand. For example, the low-level driver for Advansys adapters (made by the company which is now Connect.com) is named advansys.
High-level drivers present to the rest of the kernel an interface appropriate to a certain class of devices. The SCSI high-level driver for tape devices, st, for example, has ioctls to rewind. The high-level SCSI driver for CD-ROM drives, sr, does not.
Please note that a user rarely needs a high-level driver specific to a certain brand of device. At this level, there is little room for one brand to be distinguishable from another.
One SCSI high-level driver that deserves special mention is sg. This driver, called the “SCSI generic” driver, is a fairly thin layer that presents a rather raw representation of the SCSI mid-level driver to the rest of the kernel. User space programs that operate through the SCSI generic driver (because they access device special files whose major number is the one registered by sg (to wit, 21)) have a detailed understanding of SCSI protocols, whereas user space programs that operate through other SCSI high-level drivers typically don’t even know what SCSI is.
The layering order of the SCSI modules belies the way the LKMs depend upon each other and the order in which they must be loaded. A user should load the mid-level driver first and unload it last. The low-level and high-level drivers can be loaded and unloaded in any order after that, and they hook themselves into and establish dependency on the mid-level driver at both ends. If a user doesn’t have a complete set, a user will get a “device not found” error when he/she tries to access a device.
Most SCSI low-level (adapter) drivers don’t have LKM parameters; they do generally autoprobe for card settings. If a users card responds to some unconventional port address he/she must bind the driver into the base kernel and use kernel “command line” options.
Many SCSI low-level drivers have documentation in the drivers/scsi directory in the Linux source tree, in files called README.*.
15.3.1. scsi_mod: SCSI mid-level driver
Example:
modprobe scsi_mod
There are no module parameters.
15.3.2. sd_mod: SCSI high-level driver for disk devices
Example:
modprobe sd_mod
There are no module parameters.
15.3.3. st: SCSI high-level driver for tape devices
Example:
modprobe st
There are no module parameters for the LKM, but if a user binds this module into the base kernel, he/she can pass some parameters via the Linux boot parameters.
sr_mod: SCSI high-level driver for CD-ROM drives
An example of this is:
modprobe sr_mod
sg: SCSI high-level driver for generic SCSI devices
An example of this is:
modprobe sg
wd7000: SCSI low-level driver for 7000FASST
An example of this is:
modprobe wd7000
Please note that this driver atoprobes the card and requires installed BIOS.
aha152x: SCSI low-level driver for Adaptec AHA152X/2825
An example of this is:
modprobe aha152x
This driver atoprobes the card and requires installed BIOS.
aha1542: SCSI low-level driver for Adaptec AHA1542
An example of this is:
modprobe aha1542
This driver autoprobes the card at 0×330 and 0×334 only.
aha1740: SCSI low-level driver for Adaptec AHA1740 EISA
An example of this is:
modprobe aha1740
Please note that this driver autoprobes the card.
aic7xxx: SCSI low-level driver for Adaptec AHA274X/284X/294X
An example of this is:
modprobe aic7xxx
Please note that this driver autoprobes the card and BIOS must be enabled.
advansys: SCSI low-level driver for AdvanSys/Connect.com
An example of this is:
modprobe advansys asc_iopflag=1 asc_ioport=0×110,0×330 asc_dbglvl=1
Module Parameters:
asc_iopflag
1
enable port scanning
0
disable port scanning
asc_ioport
I/O port addresses to scan for Advansys SCSI adapters
asc_dbglvl
debugging level:
0
Errors only
1
High level tracing
2-N
Verbose tracing
If a user binds this driver into the base kernel, then he/she can pass parameters to it via the kernel boot parameters.
in2000: SCSI low-level driver for Always IN2000
An example of this:
modprobe in2000
Please note that this driver autoprobes the card. No BIOS is required.
BusLogic: SCSI low-level driver for BusLogic
The list of BusLogic cards this driver can drive is long. Read file drivers/scsi/README.BusLogic in the Linux source tree to get the total picture.
An example of this:
modprobe BusLogic
If a user binds this driver into the base kernel then he/she can pass parameters to it via the kernel boot parameters.
dtc: SCSI low-level driver for DTC3180/3280
An example of this is:
modprobe dtc
Please note that this driver autoprobes the card.
eata: SCSI low-level driver for EATA ISA/EISA
An example of this driver is:
modprobe eata
eata_dma: SCSI low-level driver for EATA-DMA
This driver handles DPT, NEC, AT&T, SNI, AST, Olivetti, Alphatronix, DPT Smartcache, Smartcache III and SmartRAID.
An example of this is:
modprobe eata_dma
Autoprobe works in all configurations.
eata_pio: SCSI low-level driver for EATA-PIO
This driver handles old DPT PM2001, PM2012A.
An example of this is:
modprobe eata_pio
fdomain: SCSI low-level driver for Future Domain 16xx
An example of this is:
modprobe fdomain
This driver autoprobes the card and requires installed BIOS.
NCR5380: SCSI low-level driver for NCR5380/53c400
An example of this is:
modprobe NCR5380 ncr_irq=xx ncr_addr=xx ncr_dma=xx ncr_5380=1 \
ncr_53c400=1
for a port mapped NCR5380 board:
modprobe g_NCR5380 ncr_irq=5 ncr_addr=0×350 ncr_5380=1
for a memory mapped NCR53C400 board with interrupts disabled:
modprobe g_NCR5380 ncr_irq=255 ncr_addr=0xc8000 ncr_53c400=1
Parameters:
ncr_irq
the irq the driver is to service. 255 means no or DMA interrupt. 254 to autoprobe for an IRQ line if overridden on the command line.
ncr_addr
the I/O port address or memory mapped I/O address, whichever is appropriate, that the driver is to drive
ncr_dma
the DMA channel the driver is to use
ncr_5380
1 = set up for a NCR5380 board
ncr_53c400
1 = set up for a NCR53C400 board
If a user binds this driver into the base kernel, then he/she can pass parameters to it via the kernel boot parameters.
NCR53c406a: SCSI low-level driver for NCR53c406a
An example of this is:
modprobe NCR53c406a
There are no module parameters for the LKM, but if a user binds this module into the base kernel.
53c7,8xx.o: SCSI low-level driver for NCR53c7,8xx
An example of this is:
modprobe 53c7,8xx
This driver autoprobes the card and requires installed BIOS.
ncr53c8xx: SCSI low-level driver for PCI-SCS NCR538xx family
An example of this is:
modprobe ncr53c8xx
There are no module parameters.
ppa: low-level SCSI driver for IOMEGA parallel port ZIP drive
An example of this driver is:
modprobe ppa ppa_base=0×378 ppa_nybble=1
Parameters:
ppa_base
Base address of the PPA’s I/O port. Default 0×378.
ppa_speed_high
Delay used in data transfers, in microseconds. Default is 1.
ppa_speed_low
Delay used in other operations, in microseconds. Default is 6.
ppa_nybble
1 = Use 4-bit mode. 0 = don’t. Default is 0.
pas16: SCSI low-level driver for PAS16
An example of this is:
modprobe pas16
This driver autoprobes the card. No BIOS is required.
qlogicfas: SCSI low-level driver for Qlogic FAS
An example of this is:
modprobe qlogicfas
qlogicisp: SCSI low-level driver for Qlogic ISP
An example of this is:
modprobe qlogicisp
seagate: SCSI low-level driver for Seagate, Future Domain
This driver is for Seagate ST-02 and Future Domain TMC-8xx.
An example of this is:
modprobe Seagate
This driver autoprobes for address only. The IRQ is fixed at 5. The driver requires installed BIOS.
t128: SCSI low-level driver for Trantor T128/T128F/T228
An example of this is:
modprobe t128
This driver autoprobes the card. The driver requires installed BIOS.
u14-34f: SCSI low-level driver for UltraStor 14F/34F
An example of this is:
modprobe u14-34f
This driver autoprobes the card, but not the 0×310 port. No BIOS is required.
ultrastor: low-level SCSI driver for UltraStor
An example of this is:
modprobe ultrastor
If you followed advise and guidance as provided in this tutorial guide then you would have learnt about SCSI disk drivers.













