| Rick van Rein
BadRAM: Linux kernel support for broken RAM modules
This page proposes an approach to support RAMs with defective addresses,
This may open interesting business perspectives, where those
RAMs can be sold under a white label for less money rather
than discarded of without any profit.
Objective of the project
My objective is to patch the Linux kernel in such a way that it can handle defective RAM modules.
With defective RAM, I mean RAM which has some bits wrong at some (known) addresses.
Normally, such RAM is considered useless and thrown away; the larger RAMs get, the higher the chances of failing addresses.
With ever growing RAM sizes, it would therefore be pleasant to have an alternative to discarding of defective RAM chips.
How to do it?
The technology behind this idea relies on the memory allocation approach inside the Linux kernel, as well as the memory swapping mechanisms.
The kernel distinguishes kernel allocated memory from user allocated memory, by never swapping kernel memory out of RAM.
Furthermore, it is possible (as needed for some hardware boards) to allocate fixed phycical address to a kernel process.
I want to exploit this to allocate precisely the defective parts of RAM before they are made available to anyone else.
By allocating them for the kernel, and never freeing them, the RAM at that part of memory is effectively disabled.
Furthermore, this need not be done a memory page at a time, since the kernel allocates blocks of 4, 8, 16, 32, ... bytes each to itself, making it possible to enclose a defective address quite closely.
A memory module with one bit wrong would perhaps miss 4 bytes out of 128 MB.
Would it not be a waste to throw away such a RAM module?
Ah, nostalgia, where did you go?
For once were the times,
that a memory module had to be completely correct,
were it to function at all...