
From: Magnus Damm <magnus.damm@gmail.com>

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.

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

Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 25-akpm/Documentation/kernel-parameters.txt |    3 +++
 25-akpm/Documentation/memory.txt            |    6 +++++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff -puN Documentation/kernel-parameters.txt~documentation-mem= Documentation/kernel-parameters.txt
--- 25/Documentation/kernel-parameters.txt~documentation-mem=	2004-12-03 20:57:16.471134808 -0800
+++ 25-akpm/Documentation/kernel-parameters.txt	2004-12-03 20:57:16.476134048 -0800
@@ -711,6 +711,9 @@ running once the system is up.
 	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 -puN Documentation/memory.txt~documentation-mem= Documentation/memory.txt
--- 25/Documentation/memory.txt~documentation-mem=	2004-12-03 20:57:16.472134656 -0800
+++ 25-akpm/Documentation/memory.txt	2004-12-03 20:57:16.476134048 -0800
@@ -21,6 +21,8 @@ systems.
 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 @@ Try:
 	* 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:
_
