There are several classic problems related to memory on Linux
systems.

	1) There are some buggy motherboards which cannot properly 
	   deal with the memory above 16MB.  Consider exchanging
	   your motherboard.

	2) You cannot do DMA on the ISA bus to addresses above
	   16M.  Most device drivers under Linux allow the use
           of bounce buffers which work around this problem.  Drivers
	   that don't use bounce buffers will be unstable with
	   more than 16M installed.  Drivers that use bounce buffers
	   will be OK, but may have slightly higher overhead.
	
	3) There are some motherboards that will not cache above
	   a certain quantity of memory.  If you have one of these
	   motherboards, your system will be SLOWER, not faster
	   as you add more memory.  Consider exchanging your 
           motherboard.

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.

There are other memory problems which Linux cannot deal with.  Random
corruption of memory is usually a sign of serious hardware trouble.
Try:

	* Reducing memory settings in the BIOS to the most conservative 
          timings.

	* Adding a cooling fan.

	* Not overclocking your CPU.

	* Having the memory tested in a memory tester or exchanged
	  with the vendor. Consider testing it with memtest86 yourself.
	
	* Exchanging your CPU, cache, or motherboard for one that works.

	* 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. Use "memmap="-option
	  together with "mem=" on systems with PCI to avoid physical address
	  space collisions.


Other tricks:

	* Try passing the "no-387" option to the kernel to ignore
	  a buggy FPU.

	* Try passing the "no-hlt" option to disable the potentially
          buggy HLT instruction in your CPU.
