diff options
author | Tony Luck <tony.luck@intel.com> | 2021-05-28 00:28:46 +0200 |
---|---|---|
committer | Borislav Petkov <bp@suse.de> | 2021-05-28 16:57:16 +0200 |
commit | 40cd0aae5957ec175b73dc17dce6079d33fa74f6 (patch) | |
tree | e22af5aff5b90b2dc4bc6af1ec660745126fec9c | |
parent | x86/MCE/AMD, EDAC/mce_amd: Add new SMCA bank types (diff) | |
download | linux-40cd0aae5957ec175b73dc17dce6079d33fa74f6.tar.xz linux-40cd0aae5957ec175b73dc17dce6079d33fa74f6.zip |
x86/mce: Include a MCi_MISC value in faked mce logs
When BIOS reports memory errors to Linux using the ACPI/APEI
error reporting method Linux creates a "struct mce" to pass
to the normal reporting code path.
The constructed record doesn't include a value for the "misc"
field of the structure, and so mce_usable_address() says this
record doesn't include a valid address.
Net result is that functions like uc_decode_notifier() will
just ignore this record instead of taking action to offline
a page.
Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20210527222846.931851-1-tony.luck@intel.com
-rw-r--r-- | arch/x86/kernel/cpu/mce/apei.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/x86/kernel/cpu/mce/apei.c b/arch/x86/kernel/cpu/mce/apei.c index b58b85380ddb..0e3ae64d3b76 100644 --- a/arch/x86/kernel/cpu/mce/apei.c +++ b/arch/x86/kernel/cpu/mce/apei.c @@ -36,7 +36,8 @@ void apei_mce_report_mem_error(int severity, struct cper_sec_mem_err *mem_err) mce_setup(&m); m.bank = -1; /* Fake a memory read error with unknown channel */ - m.status = MCI_STATUS_VAL | MCI_STATUS_EN | MCI_STATUS_ADDRV | 0x9f; + m.status = MCI_STATUS_VAL | MCI_STATUS_EN | MCI_STATUS_ADDRV | MCI_STATUS_MISCV | 0x9f; + m.misc = (MCI_MISC_ADDR_PHYS << 6) | PAGE_SHIFT; if (severity >= GHES_SEV_RECOVERABLE) m.status |= MCI_STATUS_UC; |