diff options
author | Chen, Gong <gong.chen@linux.intel.com> | 2013-10-18 17:30:13 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2013-10-23 13:10:20 -0400 |
commit | 147de14772ed897727dba7353916b02d1e0f17f4 (patch) | |
tree | 7643b3c62c1b6ad149f36d573409b6f2d6761dc7 /drivers/edac | |
parent | dd6dad4288cb93e79bd7abfa6c6a338c47454d1a (diff) |
ACPI, APEI, CPER: Add UEFI 2.4 support for memory error
In latest UEFI spec(by now it is 2.4) memory error definition
for CPER (UEFI 2.4 Appendix N Common Platform Error Record)
adds some new fields. These fields help people to locate
memory error to an actual DIMM location.
Original-author: Tony Luck <tony.luck@intel.com>
Signed-off-by: Chen, Gong <gong.chen@linux.intel.com>
Reviewed-by: Borislav Petkov <bp@suse.de>
Reviewed-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
Acked-by: Naveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'drivers/edac')
-rw-r--r-- | drivers/edac/ghes_edac.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/drivers/edac/ghes_edac.c b/drivers/edac/ghes_edac.c index bb534670ec02..0ad797b9db65 100644 --- a/drivers/edac/ghes_edac.c +++ b/drivers/edac/ghes_edac.c | |||
@@ -297,15 +297,14 @@ void ghes_edac_report_mem_error(struct ghes *ghes, int sev, | |||
297 | } | 297 | } |
298 | 298 | ||
299 | /* Error address */ | 299 | /* Error address */ |
300 | if (mem_err->validation_bits & CPER_MEM_VALID_PHYSICAL_ADDRESS) { | 300 | if (mem_err->validation_bits & CPER_MEM_VALID_PA) { |
301 | e->page_frame_number = mem_err->physical_addr >> PAGE_SHIFT; | 301 | e->page_frame_number = mem_err->physical_addr >> PAGE_SHIFT; |
302 | e->offset_in_page = mem_err->physical_addr & ~PAGE_MASK; | 302 | e->offset_in_page = mem_err->physical_addr & ~PAGE_MASK; |
303 | } | 303 | } |
304 | 304 | ||
305 | /* Error grain */ | 305 | /* Error grain */ |
306 | if (mem_err->validation_bits & CPER_MEM_VALID_PHYSICAL_ADDRESS_MASK) { | 306 | if (mem_err->validation_bits & CPER_MEM_VALID_PA_MASK) |
307 | e->grain = ~(mem_err->physical_addr_mask & ~PAGE_MASK); | 307 | e->grain = ~(mem_err->physical_addr_mask & ~PAGE_MASK); |
308 | } | ||
309 | 308 | ||
310 | /* Memory error location, mapped on e->location */ | 309 | /* Memory error location, mapped on e->location */ |
311 | p = e->location; | 310 | p = e->location; |