cvs commit: src/sys/boot/i386/loader main.c

Maxim Sobolev sobomax at portaone.com
Mon Dec 19 20:32:44 PST 2005


John Baldwin wrote:
> On Monday 19 December 2005 01:32 pm, Maxim Sobolev wrote:
>> John Baldwin wrote:
>>> On Monday 19 December 2005 04:26 am, Maxim Sobolev wrote:
>>>> sobomax     2005-12-19 09:26:42 UTC
>>>>
>>>>   FreeBSD src repository
>>>>
>>>>   Modified files:
>>>>     sys/boot/i386/loader main.c
>>>>   Log:
>>>>   If LOADER_BZIP2_SUPPORT is defined allocate heap in the 1MB-4MB range
>>>> to provide enough room for decompression (up to 2.5MB is necessary).
>>>> This should be safe to do since we load i386 kernels after 8MB mark now,
>>>> so that 16MB is the minimum amount of RAM necessary to even boot
>>>> FreeBSD.
>>> Err, I thought we loaded PAE kernels at 2MB and non-PAE kernels at 4MB to
>>> skip the first PSE page (PSE pages are 2MB on PAE).
>> You are right, my mistake, sorry. In any case memory in the range
>> 1MB-4MB can be used by default.
> 
> Errm, no it can't.  PAE kernels (and amd64 kernels I think) are both loaded at 
> 2MB, so that only leaves memory in the range 1MB-2MB.

I see, did not know about amd64 (PAE is less a concern for me since it's 
not a default kernel). What do you think about the following patch:

http://www.pbxpress.com/~sobomax/loader.diff

It moves heap to the top of the extended memory and teaches 
i386_copyin() to avoid messing up this region, so that in low memory 
situation it will just fail, not trash heap.

-Maxim


More information about the cvs-src mailing list