blob: 276918eb4d7442bae0397643807eb19021b80ec4 [file] [log] [blame]
Mauro Carvalho Chehabb7223d92020-03-02 09:16:06 +01001.. SPDX-License-Identifier: GPL-2.0
2
3============================
Linus Torvalds1da177e2005-04-16 15:20:36 -07004SCSI subsystem documentation
5============================
Mauro Carvalho Chehabb7223d92020-03-02 09:16:06 +01006
Linus Torvalds1da177e2005-04-16 15:20:36 -07007The Linux Documentation Project (LDP) maintains a document describing
8the SCSI subsystem in the Linux kernel (lk) 2.4 series. See:
9http://www.tldp.org/HOWTO/SCSI-2.4-HOWTO . The LDP has single
10and multiple page HTML renderings as well as postscript and pdf.
Justin P. Mattock0ea6e612010-07-23 20:51:24 -070011It can also be found at:
Mauro Carvalho Chehabb7223d92020-03-02 09:16:06 +010012http://web.archive.org/web/%2E/http://www.torque.net/scsi/SCSI-2.4-HOWTO
Linus Torvalds1da177e2005-04-16 15:20:36 -070013
14Notes on using modules in the SCSI subsystem
15============================================
Mauro Carvalho Chehabb7223d92020-03-02 09:16:06 +010016The scsi support in the linux kernel can be modularized in a number of
Linus Torvalds1da177e2005-04-16 15:20:36 -070017different ways depending upon the needs of the end user. To understand
18your options, we should first define a few terms.
19
Mauro Carvalho Chehabb7223d92020-03-02 09:16:06 +010020The scsi-core (also known as the "mid level") contains the core of scsi
Linus Torvalds1da177e2005-04-16 15:20:36 -070021support. Without it you can do nothing with any of the other scsi drivers.
22The scsi core support can be a module (scsi_mod.o), or it can be built into
Mauro Carvalho Chehabb7223d92020-03-02 09:16:06 +010023the kernel. If the core is a module, it must be the first scsi module
24loaded, and if you unload the modules, it will have to be the last one
Linus Torvalds1da177e2005-04-16 15:20:36 -070025unloaded. In practice the modprobe and rmmod commands (and "autoclean")
26will enforce the correct ordering of loading and unloading modules in
27the SCSI subsystem.
28
Mauro Carvalho Chehabb7223d92020-03-02 09:16:06 +010029The individual upper and lower level drivers can be loaded in any order
Linus Torvalds1da177e2005-04-16 15:20:36 -070030once the scsi core is present in the kernel (either compiled in or loaded
31as a module). The disk driver (sd_mod.o), cdrom driver (sr_mod.o),
Mauro Carvalho Chehabb7223d92020-03-02 09:16:06 +010032tape driver [1]_ (st.o) and scsi generics driver (sg.o) represent the upper
33level drivers to support the various assorted devices which can be
34controlled. You can for example load the tape driver to use the tape drive,
Linus Torvalds1da177e2005-04-16 15:20:36 -070035and then unload it once you have no further need for the driver (and release
36the associated memory).
37
38The lower level drivers are the ones that support the individual cards that
39are supported for the hardware platform that you are running under. Those
40individual cards are often called Host Bus Adapters (HBAs). For example the
Mauro Carvalho Chehabb7223d92020-03-02 09:16:06 +010041aic7xxx.o driver is used to control all recent SCSI controller cards from
42Adaptec. Almost all lower level drivers can be built either as modules or
Linus Torvalds1da177e2005-04-16 15:20:36 -070043built into the kernel.
44
Mauro Carvalho Chehabb7223d92020-03-02 09:16:06 +010045.. [1] There is a variant of the st driver for controlling OnStream tape
46 devices. Its module name is osst.o .
Linus Torvalds1da177e2005-04-16 15:20:36 -070047