[PATCH] documentation - mem=

From: Magnus Damm
Date: Wed Dec 01 2004 - 18:47:00 EST


Hi All,

I recently learnt that limiting RAM with by using only "mem=xxxM" is
no good on machines equipped with PCI. In my case (vanilla 2.6.9) the
cardbus bridge on my laptop got mapped to the unused RAM area which
resulted in wierd errors due to the collision.

The right solution is to use "mem=" together with "memmap=" to mark
the unused RAM area reserved.

>From now on I force the kernel to use 2016MiB by passing "mem=2016M
memmap=32M#2016M" instead of just "mem=2016M".

Anyway, this patch tried to document the behaviour. Please comment or apply.

Thanks!

/ magnus
diff -urN linux-2.6.10-rc2-mm4/Documentation/kernel-parameters.txt linux-2.6.10-rc2-mm4-mem_hints/Documentation/kernel-parameters.txt
--- linux-2.6.10-rc2-mm4/Documentation/kernel-parameters.txt 2004-12-01 23:50:53.125191440 +0100
+++ linux-2.6.10-rc2-mm4-mem_hints/Documentation/kernel-parameters.txt 2004-12-02 00:14:39.465354776 +0100
@@ -704,6 +704,9 @@
mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory
Amount of memory to be used when the kernel is not able
to see the whole system memory or for test.
+ [IA-32] Use together with memmap= to avoid physical
+ address space collisions. Without memmap= PCI devices
+ could be placed at addresses belonging to unused RAM.

mem=nopentium [BUGS=IA-32] Disable usage of 4MB pages for kernel
memory.
diff -urN linux-2.6.10-rc2-mm4/Documentation/memory.txt linux-2.6.10-rc2-mm4-mem_hints/Documentation/memory.txt
--- linux-2.6.10-rc2-mm4/Documentation/memory.txt 2004-10-18 23:55:36.000000000 +0200
+++ linux-2.6.10-rc2-mm4-mem_hints/Documentation/memory.txt 2004-12-02 00:03:01.712429344 +0100
@@ -21,6 +21,8 @@
All of these problems can be addressed with the "mem=XXXM" boot option
(where XXX is the size of RAM to use in megabytes).
It can also tell Linux to use less memory than is actually installed.
+If you use "mem=" on a machine with PCI, consider using "memmap=" to avoid
+physical address space collisions.

See the documentation of your boot loader (LILO, loadlin, etc.) about
how to pass options to the kernel.
@@ -44,7 +46,9 @@
* Disabling the cache from the BIOS.

* Try passing the "mem=4M" option to the kernel to limit
- Linux to using a very small amount of memory.
+ Linux to using a very small amount of memory. Use "memmap="-option
+ together with "mem=" on systems with PCI to avoid physical address
+ space collisions.


Other tricks: