Patch "x86/MCE: Export memory_error()" has been added to the 4.9-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
x86/MCE: Export memory_error()
to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
x86-mce-export-memory_error.patch
and it can be found in the queue-4.9 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
2d1f406139ec20320bf38bcd2461aa8e358084b5Mon Sep 17 00:00:00 2001
From: Borislav Petkov <[email protected]>
Date: Fri, 19 May 2017 11:39:09 +0200
Subject: x86/MCE: Export memory_error()
From: Borislav Petkov <[email protected]>
commit 2d1f406139ec20320bf38bcd2461aa8e358084b5 upstream.
Export the function which checks whether an MCE is a memory error to other users so that we can reuse the logic. Drop the boot_cpu_data use, while at it, as mce.cpuvendor already has the CPU vendor in there.
Integrate a piece from a patch from Vishal Verma <[email protected]> to export it for modules (nfit).
The main reason we're exporting it is that the nfit handler nfit_handle_mce() needs to detect a memory error properly before doing its recovery actions.
--- arch/x86/include/asm/mce.h | 1 + arch/x86/kernel/cpu/mcheck/mce.c | 11 +++++------ 2 files changed, 6 insertions(+), 6 deletions(-)
arch/x86/include/asm/mce.h +1 -0
@@ -257,6 +257,7 @@ static inline void mce_amd_feature_init(#endif int mce_available (struct cpuinfo_x86 *c); +bool mce_is_memory_error (struct mce *m);DECLARE_PER_CPU (unsigned, mce_exception_count);DECLARE_PER_CPU (unsigned, mce_poll_count);
arch/x86/kernel/cpu/mcheck/mce.c +5 -6
@@ -598,16 +598,14 @@ static void mce_read_aux(struct mce *m, } } -static bool memory_error (struct mce *m) +bool mce_is_memory_error (struct mce *m) { -struct cpuinfo_x86 *c = &boot_cpu_data; - -if (c->x86_vendor ==X86_VENDOR_AMD ) { +if (m->cpuvendor ==X86_VENDOR_AMD ) {/* ErrCodeExt[20:16] */ u8 xec = (m->status >>16 ) &0x1f ;return (xec ==0x0 || xec ==0x8 ); - }else if (c->x86_vendor ==X86_VENDOR_INTEL ) { + }else if (m->cpuvendor ==X86_VENDOR_INTEL ) {/* * Intel SDM Volume 3B - 15.9.2 Compound Error Codes *
@@ -628,6 +626,7 @@ static bool memory_error(struct mce *m)return false; } +EXPORT_SYMBOL_GPL (mce_is_memory_error);DEFINE_PER_CPU (unsigned, mce_poll_count);
@@ -691,7 +690,7 @@ bool machine_check_poll(enum mcp_flags f severity =mce_severity (&m, mca_cfg.tolerant,NULL , false); -if (severity ==MCE_DEFERRED_SEVERITY &&memory_error (&m)) +if (severity ==MCE_DEFERRED_SEVERITY &&mce_is_memory_error (&m))if (m.status &MCI_STATUS_ADDRV ) m.severity = severity;
Patches currently in stable-queue which might be from [email protected] are
queue-4.9/x86-mce-export-memory_error.patch queue-4.9/acpi-nfit-fix-the-memory-error-check-in-nfit_handle_mce.patch