On Fri, 6 Nov 1998, Thomas Schenk wrote:

> I have been looking back through the messages on the list and saw a 
> reference to the fact that you have to change something in order to use
> more than 1Gig of RAM on a linux system.  Can anyone enlighten me on what
> I have to do to enable the use of 2Gigs of RAM in a system?  Here are my
> system specs:
> 

it's simple on later 2.1 kernel, you have to change __PAGE_OFFSET and
vmlinux.lds. (the kernel at some point had physical memory size as a
config option, but  has lead to too many misconfigurations) Here is the
apropriate comment from asm-i386/page.h:

/*
 * This handles the memory map.. We could make this a config
 * option, but too many people screw it up, and too few need
 * it.
 *
 * A __PAGE_OFFSET of 0xC0000000 means that the kernel has
 * a virtual address space of one gigabyte, which limits the
 * amount of physical memory you can use to about 950MB. If
 * you want to use more physical memory, change this define.
 *
 * For example, if you have 2GB worth of physical memory, you
 * could change this define to 0x70000000, which gives the
 * kernel slightly more than 2GB of virtual memory (enough to
 * map all your physical memory + a bit extra for various
 * io-memory mappings)
 *
 * IF YOU CHANGE THIS, PLEASE ALSO CHANGE
 *
 *      arch/i386/vmlinux.lds
 *
 * which has the same constant encoded..
 */
#define __PAGE_OFFSET           (0xC0000000)

backport to 2.0 should be relatively easy, take a look at 2.1.90 which
intoroduced that feature, the 2.0 patch is pretty much analogous to that
one. (apart from the fact that 2.0 VM layout differs slightly from 2.1 vm
layout, but not conceptually)

it is beneficial to the VMA allocation routines to have as much user-space
virtual memory as possible, so a 'rigid' split is not wise. (NT did that
at some point i think)

-- mingo

Reply via email to