[parisc-linux] Today's boot experience on a 735
Philipp Rumpf
Philipp.H.Rumpf@mathe.stud.uni-erlangen.de
Wed, 17 Nov 1999 21:54:06 +0100
> The problem is the kernel can't determine how big its common data section
> is and therefore where free memory should start.
Okay, I didn't take into account we actually want to know where our free
memory starts - sometimes being stupid doesn't help.
> There are quite a few big structures and arrays throughout the linux code
> that are global and not initiallized.
> Uninitialized common data can be avoided by using static or explicitly
> initializing the data object (puts data into $DATA$ instead of $DLT$).
> Without the trick, _end is located at the end of the
> bss section. When "theend" is linked in, _end moves to the end of
> unitialized common data and the kernel can easily determine where free
> memory starts.
Okay, this is a SOM-specific bug around a missing feature of the SOM linker
(i.e. not supporting linker scripts) (tell me if I'm wrong).
> The current hack to determine the start of free memory is to use a symbol
> that is near the end of the common data and add a fudge amount to it.
> This failed for me recently when I built a configuration without network
> support and the symbol was no longer defined. The size of the common
> data varies depending on kernel configuration as well.
Yeah, this code needs to go / change.
> However, if you explicitly initialize, the size of the kernel will grow.
> I know some systems still allow installation from floppies. The kernel
PARISC systems ?
> Memory from the start of the bss section to the end of the common data
> should be zeroed. I presume other free memory will be initialized when
> it is used.
yup, Linux doesn't need to have all available memory zero'd out on boot.
Philipp Rumpf