All of lore.kernel.org
 help / color / mirror / Atom feed
From: Borislav Petkov <bp@alien8.de>
To: X86 ML <x86@kernel.org>
Cc: Tony Luck <tony.luck@intel.com>, LKML <linux-kernel@vger.kernel.org>
Subject: [PATCH 4/8] x86/MCE/AMD: Collect error info even if valid bits are not set
Date: Wed, 21 Feb 2018 11:18:56 +0100	[thread overview]
Message-ID: <20180221101900.10326-5-bp@alien8.de> (raw)
In-Reply-To: <20180221101900.10326-1-bp@alien8.de>

From: Borislav Petkov <bp@suse.de>

The MCA banks log error info into MCA_ADDR, MCA_MISC0, and MCA_SYND even
if the corresponding valid bits are not set:

"Error handlers should save the values in MCA_ADDR, MCA_MISC0,
and MCA_SYND even if MCA_STATUS[AddrV], MCA_STATUS[MiscV], and
MCA_STATUS[SyndV] are zero."

Do so by setting those bits so that code down the MCE processing path
doesn't need to be changed.

Signed-off-by: Borislav Petkov <bp@suse.de>
---
 arch/x86/kernel/cpu/mcheck/mce.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index b16b184d90c5..dd713335f5d9 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -437,6 +437,20 @@ static inline void mce_gather_info(struct mce *m, struct pt_regs *regs)
 		if (mca_cfg.rip_msr)
 			m->ip = mce_rdmsrl(mca_cfg.rip_msr);
 	}
+
+	/*
+	 * Error handlers should save the values in MCA_ADDR, MCA_MISC0, and
+	 * MCA_SYND even if MCA_STATUS[AddrV], MCA_STATUS[MiscV], and
+	 * MCA_STATUS[SyndV] are zero.
+	 */
+	if (m->cpuvendor == X86_VENDOR_AMD) {
+		u64 status = MCI_STATUS_ADDRV | MCI_STATUS_MISCV;
+
+		if (mce_flags.smca)
+			status |= MCI_STATUS_SYNDV;
+
+		m->status |= status;
+	}
 }
 
 int mce_available(struct cpuinfo_x86 *c)
-- 
2.13.0

  parent reply	other threads:[~2018-02-21 10:19 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-21 10:18 [PATCH 0/8] x86/RAS: Some accumulated stuff Borislav Petkov
2018-02-21 10:18 ` [PATCH 1/8] x86/MCE: Put private structures and definitions into the internal header Borislav Petkov
2018-02-21 11:39   ` Ingo Molnar
2018-02-21 13:28     ` Borislav Petkov
2018-02-21 10:18 ` [PATCH 2/8] x86/MCE: Convert mca_config bools to a bitfield Borislav Petkov
2018-02-21 10:18 ` [PATCH 3/8] x86/mce: Issue the mcelog --ascii message on !AMD Borislav Petkov
2018-02-21 10:18 ` Borislav Petkov [this message]
2018-02-21 10:18 ` [PATCH 5/8] x86/MCE/AMD: Pass the bank number to smca_get_bank_type() Borislav Petkov
2018-02-21 10:18 ` [PATCH 6/8] x86/MCE/AMD, EDAC/mce_amd: Enumerate Reserved SMCA bank type Borislav Petkov
2018-02-21 10:18 ` [PATCH 7/8] x86/MCE/AMD: Get address from already initialized block Borislav Petkov
2018-02-21 10:19 ` [PATCH 8/8] x86/MCE/AMD: Carve out SMCA get_block_address() code Borislav Petkov
  -- strict thread matches above, loose matches on Subject: below --
2018-02-21 17:58 [tip:ras/core] x86/mce: Put private structures and definitions into the internal header tip-bot for Borislav Petkov
2018-02-21 17:58 ` tip-bot for Borislav Petkov
2018-02-21 17:58 [tip:ras/core] x86/mce: Convert 'struct mca_config' bools to a bitfield tip-bot for Borislav Petkov
2018-02-21 17:58 ` tip-bot for Borislav Petkov
2018-02-21 17:59 [tip:ras/core] x86/mce: Issue the 'mcelog --ascii' message only on !AMD tip-bot for Borislav Petkov
2018-02-21 17:59 ` tip-bot for Borislav Petkov
2018-02-21 17:59 [tip:ras/core] x86/mce/AMD: Collect error info even if valid bits are not set tip-bot for Borislav Petkov
2018-02-21 17:59 ` tip-bot for Borislav Petkov
2018-02-21 18:00 [tip:ras/core] x86/mce/AMD: Pass the bank number to smca_get_bank_type() tip-bot for Borislav Petkov
2018-02-21 18:00 ` tip-bot for Yazen Ghannam
2018-02-21 18:00 [tip:ras/core] x86/mce/AMD, EDAC/mce_amd: Enumerate Reserved SMCA bank type tip-bot for Borislav Petkov
2018-02-21 18:00 ` tip-bot for Yazen Ghannam
2018-02-21 18:01 [tip:ras/core] x86/mce/AMD: Get address from already initialized block tip-bot for Borislav Petkov
2018-02-21 18:01 ` tip-bot for Yazen Ghannam

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180221101900.10326-5-bp@alien8.de \
    --to=bp@alien8.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.