OSDN Git Service

EDAC, skx: Retrieve and print retry_rd_err_log registers
authorTony Luck <tony.luck@intel.com>
Thu, 15 Aug 2019 21:53:28 +0000 (14:53 -0700)
committerTony Luck <tony.luck@intel.com>
Fri, 18 Oct 2019 22:27:58 +0000 (15:27 -0700)
commite80634a75aba90e7485cd1fdb463fcac5d45f14d
tree94357e0ec240c2fd39429d27f700f6e361bb74c5
parent29b8e84fbc23cb2b70317b745641ea0569426872
EDAC, skx: Retrieve and print retry_rd_err_log registers

Skylake logs some additional useful information in per-channel
registers in addition the the architectural status/addr/misc
logged in the machine check bank.

Pick up this information and add it to the EDAC log:

retry_rd_err_[five 32-bit register values]

Sorry, no definitions for these registers. OEMs and DIMM vendors
will be able to use them to isolate which cells in the DIMM are
causing problems.

correrrcnt[per rank corrected error counts]

Note that if additional errors are logged while these registers are
being read, you may see a jumble of values some from earlier errors,
others from later errors (since the registers report the most recent
logged error). The correrrcnt registers provide error counts per possible
rank. If these counts only change by one since the previous error logged
for this channel, then it is safe to assume that the registers logged
provide a coherent view of one error.

With this change EDAC logs look like this:

EDAC MC4: 1 CE memory read error on CPU_SrcID#2_MC#0_Chan#1_DIMM#0 (channel:1 slot:0 page:0x8f26018 offset:0x0 grain:32 syndrome:0x0 -  err_code:0x0101:0x0091 socket:2 imc:0 rank:0 bg:0 ba:0 row:0x1f880 col:0x200 retry_rd_err_log[0001a209 00000000 00000001 04800001 0001f880] correrrcnt[0001 0000 0000 0000 0000 0000 0000 0000])

Acked-by: Aristeu Rozanski <aris@redhat.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
drivers/edac/skx_base.c
drivers/edac/skx_common.c
drivers/edac/skx_common.h