Re: Breaking the 64MB barrier

Michael Mess (michael@kawo2.rwth-aachen.de)
Sat, 17 Oct 1998 17:23:56 +0200


1) The 64MB barrier is a bios-limitation. The bios can only report 64
MB. It reports an unsigned short int value for the memorysize in KB.

Look at linux/arch/i386/kernel/setup.c

memory_end = (1<<20) + (EXT_MEM_K<<10);
memory_end &= PAGE_MASK;

2) A workaround about this problem would be a memory-check if the bios
reports 64MB RAM. The memory check can detect more RAM if there is more.

We could check memory by writing some bytes ( hexadecimal values FF, AA,
55, 00 ) into each byte at addresses above 64MB RAM and then reading and
comparing. If these addresses contain memory, these bytes will be stored
and the comparison will be successfull.
If we enter adresses without memory the values written will be lost and
we will read some garbage, so the comparison will fail.
Thus we can detect the right memory_end.

Maybe there are some difficulties as the processor uses cache so we have
to prevent that we read back only from processor-cache.

Greetings, Michael

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/