xref: /linux/Documentation/scsi/scsi.rst (revision cdd5b5a9761fd66d17586e4f4ba6588c70e640ea)
1b7223d9bSMauro Carvalho Chehab.. SPDX-License-Identifier: GPL-2.0
2b7223d9bSMauro Carvalho Chehab
3b7223d9bSMauro Carvalho Chehab============================
4b7223d9bSMauro Carvalho ChehabSCSI subsystem documentation
5b7223d9bSMauro Carvalho Chehab============================
6b7223d9bSMauro Carvalho Chehab
7b7223d9bSMauro Carvalho ChehabThe Linux Documentation Project (LDP) maintains a document describing
8b7223d9bSMauro Carvalho Chehabthe SCSI subsystem in the Linux kernel (lk) 2.4 series. See:
9*c4e672acSRandy Dunlaphttps://www.tldp.org/HOWTO/SCSI-2.4-HOWTO . The LDP has single
10b7223d9bSMauro Carvalho Chehaband multiple page HTML renderings as well as postscript and pdf.
11b7223d9bSMauro Carvalho Chehab
12b7223d9bSMauro Carvalho ChehabNotes on using modules in the SCSI subsystem
13b7223d9bSMauro Carvalho Chehab============================================
14*c4e672acSRandy DunlapThe SCSI support in the Linux kernel can be modularized in a number of
15b7223d9bSMauro Carvalho Chehabdifferent ways depending upon the needs of the end user.  To understand
16b7223d9bSMauro Carvalho Chehabyour options, we should first define a few terms.
17b7223d9bSMauro Carvalho Chehab
18*c4e672acSRandy DunlapThe scsi-core (also known as the "mid level") contains the core of SCSI
19*c4e672acSRandy Dunlapsupport.  Without it you can do nothing with any of the other SCSI drivers.
20*c4e672acSRandy DunlapThe SCSI core support can be a module (scsi_mod.o), or it can be built into
21*c4e672acSRandy Dunlapthe kernel. If the core is a module, it must be the first SCSI module
22b7223d9bSMauro Carvalho Chehabloaded, and if you unload the modules, it will have to be the last one
23*c4e672acSRandy Dunlapunloaded.  In practice the modprobe and rmmod commands
24b7223d9bSMauro Carvalho Chehabwill enforce the correct ordering of loading and unloading modules in
25b7223d9bSMauro Carvalho Chehabthe SCSI subsystem.
26b7223d9bSMauro Carvalho Chehab
27b7223d9bSMauro Carvalho ChehabThe individual upper and lower level drivers can be loaded in any order
28*c4e672acSRandy Dunlaponce the SCSI core is present in the kernel (either compiled in or loaded
29*c4e672acSRandy Dunlapas a module).  The disk driver (sd_mod.o), CD-ROM driver (sr_mod.o),
30*c4e672acSRandy Dunlaptape driver [1]_ (st.o) and SCSI generics driver (sg.o) represent the upper
31b7223d9bSMauro Carvalho Chehablevel drivers to support the various assorted devices which can be
32b7223d9bSMauro Carvalho Chehabcontrolled.  You can for example load the tape driver to use the tape drive,
33b7223d9bSMauro Carvalho Chehaband then unload it once you have no further need for the driver (and release
34b7223d9bSMauro Carvalho Chehabthe associated memory).
35b7223d9bSMauro Carvalho Chehab
36b7223d9bSMauro Carvalho ChehabThe lower level drivers are the ones that support the individual cards that
37b7223d9bSMauro Carvalho Chehabare supported for the hardware platform that you are running under. Those
38b7223d9bSMauro Carvalho Chehabindividual cards are often called Host Bus Adapters (HBAs). For example the
39b7223d9bSMauro Carvalho Chehabaic7xxx.o driver is used to control all recent SCSI controller cards from
40b7223d9bSMauro Carvalho ChehabAdaptec. Almost all lower level drivers can be built either as modules or
41b7223d9bSMauro Carvalho Chehabbuilt into the kernel.
42b7223d9bSMauro Carvalho Chehab
43b7223d9bSMauro Carvalho Chehab.. [1] There is a variant of the st driver for controlling OnStream tape
44b7223d9bSMauro Carvalho Chehab       devices. Its module name is osst.o .
45