From: Magnus Damm 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 --- 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: _