Chapter 8. Mid Level, Unifying layer
The SCSI mid level is common to all usage of the SCSI subsystem. Probably
its most important role is to define internal interfaces and services that
are used by all other SCSI drivers. These internal mechanisms are not
discussed in this document [see ref: W2].
The primary kernel configuration parameter "CONFIG_SCSI" determines whether
the mid level is built in (when "=y") or a module (when "=m"). If
"CONFIG_SCSI=m" then all other SCSI subsystem drivers must also be modules.
When the mid level is built as a module then it probably never needs to be
loaded explicitly because using 'modprobe' to load any other SCSI subsystem
module will cause the mid level to be loaded first (if it is not already).
Some upper and lower level drivers do not (fully) load if there are no
devices for that driver to control. Sometimes the report is loud as in
this case for the imm driver which controls zip drives connected to a
parallel port:
$ modprobe imm
imm.o: init_module: No such device
|
lsmod will not show the "imm" module as loaded.
In other cases the result is more subtle. For example, if the sg driver
is loaded in a system with no (real or pseudo) scsi devices then the
/proc/scsi/sg directory will not appear. [It will
be created when the first scsi device is recognized.]