Re: modules as drivers and the order of loading

Helge Hafting (helgehaf@idb.hist.no)
Thu, 01 Feb 2001 15:05:20 +0100


Alan Chandler wrote:
>
> As I was building 2.4.1 afresh I took the opportunity to build some of
> the device drivers as modules. In particular I have a SCSI cdrom
> device (it actually is a cd writer) and I had made that and its
> controller (Adaptec AIC-7xxx driver) modules.
>
> However, during boot they fail to load because at the time they are
> brought up VFS had not mounted the root filesystem
>
Is your root disk also connected to that adaptec controller?
If so, compile the adapter into the kernel and let the scsi-CD support
be a module.

> I am not sure why they can be built as modules if they then can't be
> loaded?

It is usually not worth the trouble making modules of something
you need before the root fs is mounted. (There are special cases,
but generally - don't do it!)
About the only thing you need to mount root is harddisk support
and a driver for whatever kind of adapter (scsi, ide,...) that the
root fs disk is connected to.

If it isn't connected to the adaptec (perhaps you have an IDE disk?)
then something else is wrong. Maybe the root device isn't set
right in the kernel image you are booting. Check your lilo.conf
(or whatever kernel loader you use)

The general rules for modules:
Stuff you need almost all the time is compiled in. Stuff you use
only occationally makes sense as modules. Developers often
use modules for drivers they work on - so they can recompile
and reload without a reboot. Modules also makes sense for
buggy drivers - you can force re-initialization by
unloading and reloading the module.

There are a couple of reasons for not modularizing everything. First,
you get a complicated setup for loading the right modules.
Second, there is a memory overhead of half a page per module. (But of
course you save memory for modules when they aren't loaded.)
Third, compiled-in stuff goes in the single big "kernel page" for
those systems that support big pages. Pentiums do. This
gives a performance enhancement as the cpu looks up less
page table entries. That could be important if the driver is
a high-performance thing like a network or disk controller.

Helge Hafting
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
Please read the FAQ at http://www.tux.org/lkml/