Running Windows with defective RAM
The Windows BCD (Boot Configuration Data) actually has a {badmemory}
object. It seems memory addresses that are "predicted to fail" by ECC memory will be listed here, and not used by the operating system.
The {badmemory}
object accepts a BadMemoryList
(BCD type 0x1700000a
) element, which is a list of integers that can be entered as hex, separated by spaces. I guess it would be possible to manually insert bad memory addresses as found by memtest86 to this element - but I have not tested this. Apparently, it accepts 'page frame numbers, which is the actual address divided by 4096. Unfortunately, these addresses/PFNs may not match those reported by memory diagnostics. Manual editing can be done with Visual BCD Editor.
In any case, faulty memory sticks should be replaced as indicated by the other answers. This is merely a note on a possible way to work around the issue (temporarily?).
I had trouble RAM in a tablet with SoC. Memory is welded or integrated into the SoC and cannot be replaced.
I am in Argentina and the seller is in China, and the shipping costs and time, it makes no sense to send in warranty.
I managed a few hits.
The key to passing the damaged memory parameters are:
- addresses in memtest86 match addresses used in Windows.
- must mark full pages of 4KBytes.
- in memtest
0x10000000
corresponds to 0x10000 in Windows - in memtest
0x00001000
corresponds to 0x1 in Windows - means: The page number in windows removes the last 3 memtest hexadecimal numbers.
- means that: windows eliminates zeros in the left.
- consider 5 and 6, to avoid errors in the page numbers.
- the correct statement is:
bcdedit /set {badmemory} badmemorylist 0xB7 0xB8 0xB9 0xBA
to errors in memtest from 0x000B7000 to 0x000BAFFF. Note that you can not put a range of memories, but all pages one by one - cannot add pages, all pages should be marked in the same command. If a new page, adds overwrites older. I managed to add 4096 pages in a only command. I haven't tried it more.
bcdedit /enum {badmemory}
, shows the list of marked pages.bcdedit /set badmemoryaccess no
prevent the marked pages are used- it is necessary to reboot after marking pages and remove access.
Windows BCD has {badmemorylist}
and {badmemoryaccess}
objects. You should set the first ({badmemorylist}
) to bad memory pages separated by spaces (eg. bcdedit /set badmemorylist 1499543 1434007
) and the second ({badmemoryaccess}
) to No
(bcdedit /set badmemoryaccess No
)
Bear in mind that memory page size in windows is usually 4KB
Tested in windows 7 and it works well
You can test your settings with Rammap
util (by Sysinternals)
PS i've got that info from "Windows Internals Book" chapter 10