Re: 1.3.100: My notes, as usual

Jamie Lokier (jamie@rebellion.co.uk)
Thu, 6 Jun 96 00:24 BST


>>>>> "Theodore" == Theodore Y Ts'o <tytso@mit.edu> writes:

Theodore> Actually, we could do something like this. I think it was
Theodore> Alan Cox (or possibly Eric Young) who first suggested that
Theodore> we could use the gcc attribute feature to put certain
Theodore> procedure into a separate ELF section, so that at the end
Theodore> of the boot sequence, those pages could be marked as being
Theodore> reusable. It would require doing some GCC-specific
Theodore> features, but it shouldn't require any special as or ld
Theodore> hacks.

Or we could load everything as modules using initrd. I favour that
anyway, as a way to safely autodetect all the hardware (at boot time),
but still use modules to save run-time memory. I'm sure we could find
some way to load the FPU emulator from /linuxrc, if it is the first
thing loaded.

One way or another, you have to have some way of marking freeable kernel
code to minimise memory usage. The module mechanism already exists, and
will continue to be used for other things anyway. So why not use it at
boot time too?

Longer term, we could look at ditching non-module versions of
modularised drivers, for the sake of simplifying the code. All kernels
could have a special initrd glued onto the end containing all the
modules (and insmod, etc.), with the autodetect sequence distributed
with the kernel source as a special linuxrc script. (So everything is
probed in the right order). Perhaps a special, extra-simple read-only
filesystem could be tacked on just for this.

I'm sure we can find a way not to waste the partially unused pages for
modules loaded at boot time, too.

-- Jamie