aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi/apei/cper.c
diff options
context:
space:
mode:
authorChen, Gong <gong.chen@linux.intel.com>2013-10-18 17:30:13 -0400
committerTony Luck <tony.luck@intel.com>2013-10-23 13:10:20 -0400
commit147de14772ed897727dba7353916b02d1e0f17f4 (patch)
tree7643b3c62c1b6ad149f36d573409b6f2d6761dc7 /drivers/acpi/apei/cper.c
parentdd6dad4288cb93e79bd7abfa6c6a338c47454d1a (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/acpi/apei/cper.c')
-rw-r--r--drivers/acpi/apei/cper.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/acpi/apei/cper.c b/drivers/acpi/apei/cper.c
index eb5f6d6d7dbc..946ef520186f 100644
--- a/drivers/acpi/apei/cper.c
+++ b/drivers/acpi/apei/cper.c
@@ -8,7 +8,7 @@
8 * various tables, such as ERST, BERT and HEST etc. 8 * various tables, such as ERST, BERT and HEST etc.
9 * 9 *
10 * For more information about CPER, please refer to Appendix N of UEFI 10 * For more information about CPER, please refer to Appendix N of UEFI
11 * Specification version 2.3. 11 * Specification version 2.4.
12 * 12 *
13 * This program is free software; you can redistribute it and/or 13 * This program is free software; you can redistribute it and/or
14 * modify it under the terms of the GNU General Public License version 14 * modify it under the terms of the GNU General Public License version
@@ -191,16 +191,17 @@ static const char *cper_mem_err_type_strs[] = {
191 "memory sparing", 191 "memory sparing",
192 "scrub corrected error", 192 "scrub corrected error",
193 "scrub uncorrected error", 193 "scrub uncorrected error",
194 "physical memory map-out event",
194}; 195};
195 196
196static void cper_print_mem(const char *pfx, const struct cper_sec_mem_err *mem) 197static void cper_print_mem(const char *pfx, const struct cper_sec_mem_err *mem)
197{ 198{
198 if (mem->validation_bits & CPER_MEM_VALID_ERROR_STATUS) 199 if (mem->validation_bits & CPER_MEM_VALID_ERROR_STATUS)
199 printk("%s""error_status: 0x%016llx\n", pfx, mem->error_status); 200 printk("%s""error_status: 0x%016llx\n", pfx, mem->error_status);
200 if (mem->validation_bits & CPER_MEM_VALID_PHYSICAL_ADDRESS) 201 if (mem->validation_bits & CPER_MEM_VALID_PA)
201 printk("%s""physical_address: 0x%016llx\n", 202 printk("%s""physical_address: 0x%016llx\n",
202 pfx, mem->physical_addr); 203 pfx, mem->physical_addr);
203 if (mem->validation_bits & CPER_MEM_VALID_PHYSICAL_ADDRESS_MASK) 204 if (mem->validation_bits & CPER_MEM_VALID_PA_MASK)
204 printk("%s""physical_address_mask: 0x%016llx\n", 205 printk("%s""physical_address_mask: 0x%016llx\n",
205 pfx, mem->physical_addr_mask); 206 pfx, mem->physical_addr_mask);
206 if (mem->validation_bits & CPER_MEM_VALID_NODE) 207 if (mem->validation_bits & CPER_MEM_VALID_NODE)