OSDev.org
https://forum.osdev.org/

Determining the failing bits of an uncorrectable ECC error.
https://forum.osdev.org/viewtopic.php?f=1&t=34653
Page 1 of 1

Author:  matviy [ Thu Sep 19, 2019 1:45 pm ]
Post subject:  Determining the failing bits of an uncorrectable ECC error.

I'm running a system with an x86 AMD CPU, that has a 64-bit data bus + 8-bits of ECC, so 72-bits total. I have 9 x8 DRAMs on my DIMM.

I'm getting uncorrectable ECC errors that trigger a machine check exception and cause a reboot. I can dump the machine check registers from the CPU before the BIOS initializes to see the "uncorrectable ECC error" bit set. I can also get the error Syndrome.

However, there doesn't seem to be a way to figure out which data bits specifically are bad. The Syndrome is only valid for correctable errors, so it doesn't map to anything on the ECC syndrome lookup table.

The system uses 4-bit symbol BCH ECC that is single-symbol-correcting and dual-symbol-detecting. So since it's uncorrectable, I'm getting errors across at least two symbols. In fact, I'm fairly sure that it's an entire DRAM (8-bits) that's completely dying.

If the AMD CPU somewhere had a register that contained the 72-bits read from memory that caused the error, i could probably look at it to see which bits are obviously wrong. But there doesn't seem to be such a register anywhere.

The datasheet for this CPU is here: https://www.amd.com/system/files/TechDo ... h_BKDG.pdf

Any ideas how to figure out which chip is failing?

EDIT: To be specific, the reason i need to know which chip is failing is because they're all soldered to the main board.

Author:  bzt [ Sun Sep 22, 2019 9:06 am ]
Post subject:  Re: Determining the failing bits of an uncorrectable ECC err

Hi,

matviy wrote:
I'm getting uncorrectable ECC errors that trigger a machine check exception and cause a reboot. I can dump the machine check registers from the CPU before the BIOS initializes to see the "uncorrectable ECC error" bit set. I can also get the error Syndrome.
This is quite a problem. ECC usually capable of fixing one faulty bit, and that happens transparently. If it can't, that means there are more, even number of errors on the same row or column.

matviy wrote:
However, there doesn't seem to be a way to figure out which data bits specifically are bad.
Sure, if there would be a way, then it would be a correctable error.

matviy wrote:
Any ideas how to figure out which chip is failing?
Well, programaticaly from your OS? You'll need the memory bank information for that, usually found in SMBIOS and ACPI tables.

For Linux, just execute "dmidecode -t 6" and "dmidecode -t 17". It will tell you which RAM area corresponds to which memory bank (at least, if you're lucky you will get the exact chip too). You can also read the hardware fault log if your firmware supports that.

Cheers,
bzt

Page 1 of 1 All times are UTC - 6 hours
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/