>> We are attempting to upgrade our P90 to 128M ram (v 1.2.11). I have the
>> mem=128M in the kernel parameters list, and it DOES see the memory.
>> However, I get an 'unrecognized parameter ""' during boot, ld.so fails to
>> load, and I procede to get 'probable memory corrupted' errors on everything.
>> Is this due to this being an a.out system? Device drivers loading at
>> specific memory locations? ..........?
>> I've scanned all the faq's and howto's but nothing seems to pertain to this
>> problem.
>> Any and all help would be GREATLY appreciated!
> If you have only 256k cache, the try 512k. That may do the trick.
Just to explain *why* this makes sense...
A typical PC cache is direct-mapped. Which means that any given byte of
main memory has one byte of cache memory it might be in. Bytes whose
addresses differ by a multiple of 256K want to be in the same part of the
cache, and if you load one, the other will be thrown out of the cache.
So byte 0 of memory shares the same spot in the cache RAM as byte 256K,
byte 512K, byte 768K, byte 1M, byte 1.25M, byte 1.5M, etc.
In fact, caches are organized in "lines" of 16 bytes or so, and the
loading, storing, and throwing out is done on 16-byte boundaries.
(It may be 32 bytes instead on a Pentium, but it doesn't affect the
explanation.)
Anyway, for each byte in a 256K = 2^18 byte cache, if you have 128M = 2^27
bytes of main memory, there are 2^27/2^18 = 2^9 different bytes competing
for that spot in cache RAM.
In order for the cache to tell which of those bytes is in a given cache
line, the line has an additional "tag" associated with it, which are compared
with the high bits of the desired address, and if the high bits match, the
cache gives the processor the data instead of waiting for main memory.
But with 128M of memory, there need to be 9 bits of tag per cache
line. If your tag RAM is only 8 bits wide (a very common size), it
will lose the high bit and the cache will get the two different memory
locations confused, and as soon as Linux tries to use memory above 64M,
everything will go to hell in a handbasket very quickly.
Now, if you increase your cache size to 512K, you only have 2^8 bytes
of memory per byte of cache, and 8 bits of cache tag will work just fine.
In the mean time, limiting memory to 64M (a burden that I feel not the
slightest pity for) will prevent things from getting confused.
--
-Colin