222 lines
5.0 KiB
HTML
222 lines
5.0 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<HTML
|
|
><HEAD
|
|
><TITLE
|
|
>Lower Level drivers</TITLE
|
|
><META
|
|
NAME="GENERATOR"
|
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
|
|
REL="HOME"
|
|
TITLE="The Linux 2.4 SCSI subsystem HOWTO"
|
|
HREF="index.html"><LINK
|
|
REL="PREVIOUS"
|
|
TITLE="Generic driver (sg)"
|
|
HREF="sg.html"><LINK
|
|
REL="NEXT"
|
|
TITLE="Pseudo drivers"
|
|
HREF="llevelpseudo.html"></HEAD
|
|
><BODY
|
|
CLASS="chapter"
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#840084"
|
|
ALINK="#0000FF"
|
|
><DIV
|
|
CLASS="NAVHEADER"
|
|
><TABLE
|
|
SUMMARY="Header navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TH
|
|
COLSPAN="3"
|
|
ALIGN="center"
|
|
>The Linux 2.4 SCSI subsystem HOWTO</TH
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="left"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="sg.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="80%"
|
|
ALIGN="center"
|
|
VALIGN="bottom"
|
|
></TD
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="right"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="llevelpseudo.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"></DIV
|
|
><DIV
|
|
CLASS="chapter"
|
|
><H1
|
|
><A
|
|
NAME="llevel"
|
|
></A
|
|
>Chapter 10. Lower Level drivers</H1
|
|
><P
|
|
> There are too many SCSI low level drivers to detail in this document.
|
|
As an alternative to giving any superficial overview here, the reader is
|
|
given suggestions of places to look for further information.
|
|
</P
|
|
><P
|
|
> The source directory for the SCSI subsystem in the Linux kernel is a good place
|
|
to start: <TT
|
|
CLASS="filename"
|
|
>/usr/src/linux/drivers/scsi</TT
|
|
>. Several drivers
|
|
have information in a "readme" file: <TT
|
|
CLASS="filename"
|
|
>README.<driver_name>
|
|
</TT
|
|
>. Others have extensive information at the top of their ".c" file
|
|
This information often includes a version number, change logs and kernel
|
|
boot time and module load
|
|
time options. Often the latter information can be found in the installation
|
|
guides of the various Linux distributions. Sometimes the driver maintainer will
|
|
have a web site containing the most recent bug fix information. Official
|
|
maintainers are listed in the <TT
|
|
CLASS="filename"
|
|
>/usr/src/linux/MAINTAINERS</TT
|
|
>
|
|
file. If there is nothing there, look in the relevant ".c" file in the SCSI
|
|
subsystem directory. Some old drivers have no active maintainers. In such cases
|
|
posting to the linux-scsi newsgroup may help [see <A
|
|
HREF="refs.html#N1"
|
|
>N1
|
|
</A
|
|
>].
|
|
</P
|
|
><P
|
|
> For an overview of the drivers supplied with the kernel source tree,
|
|
use one of the kernel configuration programs (e.g.
|
|
<B
|
|
CLASS="command"
|
|
>cd /usr/src/linux; make menuconfig</B
|
|
>). The help
|
|
information associated with each selection can be found together in one
|
|
(large) flat file at
|
|
<TT
|
|
CLASS="filename"
|
|
>/usr/src/linux/Documentation/Configure.help</TT
|
|
>.
|
|
Drivers can be obtained from other places. It is unlikely that a SCSI
|
|
driver made for the lk 2.2 series (or before) will build or operate
|
|
successfully in the lk 2.4 series. [From a programmatic viewpoint
|
|
there are not a lot of things that need changing.] Drivers may even
|
|
be only available in binary form, in which case make sure that you
|
|
trust the provider and follow their instructions closely.
|
|
</P
|
|
><P
|
|
> Lower level drivers can support either of 2 error handling strategies.
|
|
The older one is considered obsolete while the newer one is often called
|
|
"new_eh". The advantage of "new_eh" is that it uses a separate kernel
|
|
thread per host (named "scsi_eh_<n>" where <n> is the host number) to
|
|
facilitate error recovery. Both error handling strategies were also
|
|
available in the lk 2.2 series in which very few adapter drivers used
|
|
"new_eh". In the lk 2.4 series, more
|
|
drivers are using it and the plan for the forthcoming lk 2.5 development
|
|
series is to drop mid level support for the older, obsolete error strategy.
|
|
</P
|
|
><P
|
|
> Drew Eckhardt's SCSI-HOWTO document [see reference <A
|
|
HREF="refs.html#W7"
|
|
>W7
|
|
</A
|
|
>] goes into much more detail about lower level (adapter) drivers
|
|
than this document. Since that SCSI-HOWTO is 5 years old, many things
|
|
have changed and more drivers have been added.
|
|
</P
|
|
><P
|
|
> There is a lower level driver called <EM
|
|
>scsi_debug</EM
|
|
>
|
|
that simulates one or more "direct access" devices (i.e. disk(s)) using
|
|
the computer's memory. From lk 2.4.17 it acts as a "ram disk". While there
|
|
are many ram disk implementations available in Linux (e.g. ramfs),
|
|
scsi_debug may help to isolate a defective scsi driver in a problematic
|
|
installation. See <TT
|
|
CLASS="filename"
|
|
>scsi_debug.c</TT
|
|
> for further information.
|
|
</P
|
|
></DIV
|
|
><DIV
|
|
CLASS="NAVFOOTER"
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"><TABLE
|
|
SUMMARY="Footer navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="sg.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="index.html"
|
|
ACCESSKEY="H"
|
|
>Home</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="llevelpseudo.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
>Generic driver (sg)</TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
> </TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
>Pseudo drivers</TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |