From: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
To: <tony.luck@intel.com>, <bp@alien8.de>, <tglx@linutronix.de>,
<mingo@redhat.com>, <hpa@zytor.com>
Cc: <x86@kernel.org>, <linux-edac@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Subject: [PATCH V2 4/5] x86/mcheck/AMD: Fix LVT offset configuration for thresholding
Date: Fri, 15 Jan 2016 17:50:35 -0600 [thread overview]
Message-ID: <1452901836-27632-5-git-send-email-Aravind.Gopalakrishnan@amd.com> (raw)
In-Reply-To: <1452901836-27632-1-git-send-email-Aravind.Gopalakrishnan@amd.com>
For processor families with SMCA feature, the LVT offset
for threshold interrupts is configured only in MSR 0xC0000410
and not in each per bank MISC register as was done in earlier
families.
Fixing the code here to obtain the LVT offset from the correct
MSR for those families which have SMCA feature enabled.
Signed-off-by: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
---
arch/x86/kernel/cpu/mcheck/mce_amd.c | 34 +++++++++++++++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kernel/cpu/mcheck/mce_amd.c b/arch/x86/kernel/cpu/mcheck/mce_amd.c
index e650fdc..29a7688 100644
--- a/arch/x86/kernel/cpu/mcheck/mce_amd.c
+++ b/arch/x86/kernel/cpu/mcheck/mce_amd.c
@@ -49,6 +49,15 @@
#define DEF_LVT_OFF 0x2
#define DEF_INT_TYPE_APIC 0x2
+/*
+ * SMCA settings:
+ * The following defines provide masks or bit positions of
+ * MSRs that are applicable only to SMCA enabled processors
+ */
+
+/* Threshold LVT offset is at MSR0xC0000410[15:12] */
+#define SMCA_THR_LVT_OFF 0xF000
+
static const char * const th_names[] = {
"load_store",
"insn_fetch",
@@ -143,6 +152,15 @@ static int lvt_off_valid(struct threshold_block *b, int apic, u32 lo, u32 hi)
}
if (apic != msr) {
+ /*
+ * For SMCA enabled processors, LVT offset is programmed at
+ * different MSR and BIOS provides the value.
+ * The original field where LVT offset was set is Reserved.
+ * So, return early here.
+ */
+ if (mce_flags.smca)
+ return 0;
+
pr_err(FW_BUG "cpu %d, invalid threshold interrupt offset %d "
"for bank %d, block %d (MSR%08X=0x%x%08x)\n",
b->cpu, apic, b->bank, b->block, b->address, hi, lo);
@@ -301,7 +319,21 @@ void mce_amd_feature_init(struct cpuinfo_x86 *c)
goto init;
b.interrupt_enable = 1;
- new = (high & MASK_LVTOFF_HI) >> 20;
+
+ if (mce_flags.smca) {
+ u32 smca_low = 0, smca_high = 0;
+
+ /* Gather LVT offset for thresholding */
+ if (rdmsr_safe(MSR_CU_DEF_ERR,
+ &smca_low,
+ &smca_high))
+ break;
+
+ new = (smca_low & SMCA_THR_LVT_OFF) >> 12;
+ } else {
+ new = (high & MASK_LVTOFF_HI) >> 20;
+ }
+
offset = setup_APIC_mce_threshold(offset, new);
if ((offset == new) &&
--
2.7.0
next prev parent reply other threads:[~2016-01-15 23:42 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-15 23:50 [PATCH V2 0/5] Updates to AMD MCE driver per Scalable MCA spec Aravind Gopalakrishnan
2016-01-15 23:50 ` [PATCH V2 1/5] x86, mce: Fix order of AMD MCE init function call Aravind Gopalakrishnan
2016-01-15 23:50 ` [PATCH V2 2/5] x86/mcheck/AMD: Do not perform shared bank check for future processors Aravind Gopalakrishnan
2016-01-16 1:01 ` kbuild test robot
2016-01-16 1:01 ` [PATCH] x86/mcheck/AMD: fix boolreturn.cocci warnings kbuild test robot
2016-01-15 23:50 ` [PATCH V2 3/5] x86/mcheck/AMD: Reduce number of blocks scanned per bank Aravind Gopalakrishnan
2016-01-15 23:50 ` Aravind Gopalakrishnan [this message]
2016-01-16 10:37 ` [PATCH V2 4/5] x86/mcheck/AMD: Fix LVT offset configuration for thresholding Borislav Petkov
2016-01-16 10:45 ` Borislav Petkov
2016-01-15 23:50 ` [PATCH V2 5/5] x86/mcheck/AMD: Set MCAX Enable bit Aravind Gopalakrishnan
2016-01-16 16:05 ` [PATCH V2 0/5] Updates to AMD MCE driver per Scalable MCA spec Borislav Petkov
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=1452901836-27632-5-git-send-email-Aravind.Gopalakrishnan@amd.com \
--to=aravind.gopalakrishnan@amd.com \
--cc=bp@alien8.de \
--cc=hpa@zytor.com \
--cc=linux-edac@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=tglx@linutronix.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®