aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.9.21/0010-x86-mce-Do-not-overwrite-MCi_STATUS-in-mce_no_way_ou.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.9.21/0010-x86-mce-Do-not-overwrite-MCi_STATUS-in-mce_no_way_ou.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.9.21/0010-x86-mce-Do-not-overwrite-MCi_STATUS-in-mce_no_way_ou.patch81
1 files changed, 0 insertions, 81 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.9.21/0010-x86-mce-Do-not-overwrite-MCi_STATUS-in-mce_no_way_ou.patch b/common/recipes-kernel/linux/linux-yocto-4.9.21/0010-x86-mce-Do-not-overwrite-MCi_STATUS-in-mce_no_way_ou.patch
deleted file mode 100644
index d00a4886..00000000
--- a/common/recipes-kernel/linux/linux-yocto-4.9.21/0010-x86-mce-Do-not-overwrite-MCi_STATUS-in-mce_no_way_ou.patch
+++ /dev/null
@@ -1,81 +0,0 @@
-From 754013b3067881c493df74f91ad34099c3a32c61 Mon Sep 17 00:00:00 2001
-From: Borislav Petkov <bp@suse.de>
-Date: Fri, 22 Jun 2018 11:54:28 +0200
-Subject: [PATCH 10/10] x86/mce: Do not overwrite MCi_STATUS in
- mce_no_way_out()
-
-commit 1f74c8a64798e2c488f86efc97e308b85fb7d7aa upstream.
-
-mce_no_way_out() does a quick check during #MC to see whether some of
-the MCEs logged would require the kernel to panic immediately. And it
-passes a struct mce where MCi_STATUS gets written.
-
-However, after having saved a valid status value, the next iteration
-of the loop which goes over the MCA banks on the CPU, overwrites the
-valid status value because we're using struct mce as storage instead of
-a temporary variable.
-
-Which leads to MCE records with an empty status value:
-
- mce: [Hardware Error]: CPU 0: Machine Check Exception: 6 Bank 0: 0000000000000000
- mce: [Hardware Error]: RIP 10:<ffffffffbd42fbd7> {trigger_mce+0x7/0x10}
-
-In order to prevent the loss of the status register value, return
-immediately when severity is a panic one so that we can panic
-immediately with the first fatal MCE logged. This is also the intention
-of this function and not to noodle over the banks while a fatal MCE is
-already logged.
-
-Tony: read the rest of the MCA bank to populate the struct mce fully.
-
-Suggested-by: Tony Luck <tony.luck@intel.com>
-Signed-off-by: Borislav Petkov <bp@suse.de>
-Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-Cc: <stable@vger.kernel.org>
-Link: https://lkml.kernel.org/r/20180622095428.626-8-bp@alien8.de
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/x86/kernel/cpu/mcheck/mce.c | 18 ++++++++++--------
- 1 file changed, 10 insertions(+), 8 deletions(-)
-
-diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
-index 4711e1c..bf6013d 100644
---- a/arch/x86/kernel/cpu/mcheck/mce.c
-+++ b/arch/x86/kernel/cpu/mcheck/mce.c
-@@ -779,23 +779,25 @@ EXPORT_SYMBOL_GPL(machine_check_poll);
- static int mce_no_way_out(struct mce *m, char **msg, unsigned long *validp,
- struct pt_regs *regs)
- {
-- int i, ret = 0;
- char *tmp;
-+ int i;
-
- for (i = 0; i < mca_cfg.banks; i++) {
- m->status = mce_rdmsrl(msr_ops.status(i));
-- if (m->status & MCI_STATUS_VAL) {
-- __set_bit(i, validp);
-- if (quirk_no_way_out)
-- quirk_no_way_out(i, m, regs);
-- }
-+ if (!(m->status & MCI_STATUS_VAL))
-+ continue;
-+
-+ __set_bit(i, validp);
-+ if (quirk_no_way_out)
-+ quirk_no_way_out(i, m, regs);
-
- if (mce_severity(m, mca_cfg.tolerant, &tmp, true) >= MCE_PANIC_SEVERITY) {
-+ mce_read_aux(m, i);
- *msg = tmp;
-- ret = 1;
-+ return 1;
- }
- }
-- return ret;
-+ return 0;
- }
-
- /*
---
-2.7.4
-