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/acpi/apei/cper.c | |
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/acpi/apei/cper.c')
-rw-r--r-- | drivers/acpi/apei/cper.c | 7 |
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 | ||
196 | static void cper_print_mem(const char *pfx, const struct cper_sec_mem_err *mem) | 197 | static 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) |