Autodetect > 64MB of RAM (was -> Re: 128 MB Linux?)

erich@uruk.org
Tue, 25 Jun 1996 11:08:30 -0700


[I posted this article, but figured I'd forward it for those interested,
I'm not on the 'linux-kernel' e-mail list]:

In article <46bg5j$fnd@rs18.hrz.th-darmstadt.de> di04@hrzpub.th-darmstadt.de (A.Schindler) writes:

Michael J Gebis (gebis@purcell.ecn.purdue.edu) wrote:

: Re-read what Juergen posted. It's NOT a kernel thing; it's a BIOS
: thing. There is no way to query the hardware and get a number bigger
: than 64MB. The kernel supports more memory; you just have to tell it
: about it. (IE let's say you have 256 Megs of memory. When the kernel
: asks the hardware "How much memory do we have?" the hardware responds
: "64 Megs, sir!" If you know that the hardware is lying to you, you
: can override this response.)

Bzzzzt!

You're only correct for machines with very old BIOSes. Newer machines
(i.e. most machines manufactured after mid/late 1994-ish) have at
least one of 2 newer BIOS interfaces available which can report up
to 4 GB of RAM (the newest interface can report up to 2^64 bytes of RAM,
not that any existing x86 chips can address it :-).

: If you think that there is a way to find out about more memory,
: please: code it up, or at least provide references to the hardware
: calls necessary. Apparently, nobody's figured out a good way to do
: this.

I have! I have tested this on a machine with 256MB of RAM, and it worked
great!

Take a look at the web pages for my new bootloader GRUB at:

http://www.uruk.org/grub/

Both a pointer to the FTP area and documentation describing a new booting
standard are available.

I'm going to be sending patches into the main Linux distribution for
Multiboot boot information support sometime in the near future... but
putting in code which utilizes the new features (multiple module loading
at boot-time, for example) will have to be discussed with some of the
major Linux folks.

: --
: Mike Gebis gebis@ecn.purdue.edu Undue Perversity

How does the kernel handle the above 64 Meg memory ? By arranging the MMU
tables, i think. So, if it CAN address the thing, it should be able to write
test patterns e.g. at the beginning of each Meg, true ? Now, whith this
kind of trace we should be able to distinguish true memory from mirrorred
ore ill addressed junk whereever it happens to be positioned in physical
address space.

This technique is *NOT* reliable! It can also wedge your system.

--
  Erich Stefan Boleyn                 \_ E-mail (preferred):  <erich@uruk.org>
Mad Genius wanna-be, CyberMuffin        \__      (finger me for other stats)
Web:  http://www.uruk.org/~erich/     Motto: "I'll live forever or die trying"
  This is my home system, so I'm speaking only for myself, not for Intel.