1There are several classic problems related to memory on Linux 2systems. 3 4 1) There are some buggy motherboards which cannot properly 5 deal with the memory above 16MB. Consider exchanging 6 your motherboard. 7 8 2) You cannot do DMA on the ISA bus to addresses above 9 16M. Most device drivers under Linux allow the use 10 of bounce buffers which work around this problem. Drivers 11 that don't use bounce buffers will be unstable with 12 more than 16M installed. Drivers that use bounce buffers 13 will be OK, but may have slightly higher overhead. 14 15 3) There are some motherboards that will not cache above 16 a certain quantity of memory. If you have one of these 17 motherboards, your system will be SLOWER, not faster 18 as you add more memory. Consider exchanging your 19 motherboard. 20 21All of these problems can be addressed with the "mem=XXXM" boot option 22(where XXX is the size of RAM to use in megabytes). 23It can also tell Linux to use less memory than is actually installed. 24 25See the documentation of your boot loader (LILO, loadlin, etc.) about 26how to pass options to the kernel. 27 28There are other memory problems which Linux cannot deal with. Random 29corruption of memory is usually a sign of serious hardware trouble. 30Try: 31 32 * Reducing memory settings in the BIOS to the most conservative 33 timings. 34 35 * Adding a cooling fan. 36 37 * Not overclocking your CPU. 38 39 * Having the memory tested in a memory tester or exchanged 40 with the vendor. 41 42 * Exchanging your CPU, cache, or motherboard for one that works. 43 44 * Disabling the cache from the BIOS. 45 46 * Try passing the "mem=4M" option to the kernel to limit 47 Linux to using a very small amount of memory. 48 49 50Other tricks: 51 52 * Try passing the "no-387" option to the kernel to ignore 53 a buggy FPU. 54 55 * Try passing the "no-hlt" option to disable the potentially 56 buggy HLT instruction in your CPU. 57 58 * Passing for example the "endbase=0x9F000" option to the kernel, 59 you'll _force_ the kernel to not touch the memory between 0x9F000 60 and 1Mbyte. As default the kernel reads the endbase limit from 61 the BIOS. So you need to specify this option only if the BIOS 62 does not provide the right information to the kernel (or if you 63 don't have a BIOS at all :). You can discover the endbase value 64 of your running kernel with this command `dmesg | grep endbase`. 65

