mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Borislav Petkov <bp@alien8.de>
To: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
Cc: tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com,
	tony.luck@intel.com, jiang.liu@linux.intel.com,
	yinghai@kernel.org, x86@kernel.org, dvlasenk@redhat.com,
	JBeulich@suse.com, slaoub@gmail.com, luto@amacapital.net,
	dave.hansen@linux.intel.com, oleg@redhat.com,
	rostedt@goodmis.org, rusty@rustcorp.com.au, prarit@redhat.com,
	linux@rasmusvillemoes.dk, jroedel@suse.de,
	andriy.shevchenko@linux.intel.com, macro@linux-mips.org,
	wangnan0@huawei.com, linux-kernel@vger.kernel.org,
	linux-edac@vger.kernel.org, rric@kernel.org
Subject: Re: [PATCH V2 3/6] x86/mce: Define 'SUCCOR' cpuid bit
Date: Wed, 6 May 2015 20:49:17 +0200	[thread overview]
Message-ID: <20150506184917.GJ22949@pd.tnic> (raw)
In-Reply-To: <1430913538-1415-4-git-send-email-Aravind.Gopalakrishnan@amd.com>

On Wed, May 06, 2015 at 06:58:55AM -0500, Aravind Gopalakrishnan wrote:
> diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
> index e535533..6d218ac 100644
> --- a/arch/x86/kernel/cpu/mcheck/mce.c
> +++ b/arch/x86/kernel/cpu/mcheck/mce.c
> @@ -1639,7 +1639,8 @@ static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c)
>  		break;
>  	case X86_VENDOR_AMD:
>  		mce_amd_feature_init(c);
> -		mce_flags.overflow_recov = cpuid_ebx(0x80000007) & 0x1;
> +		mce_flags.overflow_recov = !!(cpuid_ebx(0x80000007) & BIT(0));
> +		mce_flags.succor	 = !!(cpuid_ebx(0x80000007) & BIT(1));

Yuck, I thought gcc would be smart enough to recognize that we're
calling CPUID twice with the same params and save us the work but nooo.
asm looks yucky.

Oh well, I had to save us the second CPUID read and beef up the commit
message:

---
From: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
Date: Wed, 6 May 2015 06:58:55 -0500
Subject: [PATCH] x86/mce: Add support for deferred errors on AMD

Deferred errors indicate error conditions that were not corrected, but
those errors have not been consumed yet. They require no action from
S/W (or action is optional). These errors provide info about a latent
uncorrectable MCE that can occur when a poisoned data is consumed by the
processor.

Newer AMD processors can generate deferred errors and can be configured
to generate APIC interrupts on such events.

SUCCOR stands for S/W UnCorrectable error COntainment and Recovery.
It indicates support for data poisoning in HW and deferred error
interrupts.

Add new bitfield to mce_vendor_flags for this. We use this to verify
presence of deferred error interrupts before we enable them in mce_amd.c

While at it, clarify comments in mce_vendor_flags to provide an
indication of usages of the bitfields.

Signed-off-by: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@amd.com>
Cc: Tony Luck <tony.luck@intel.com>
Cc: x86-ml <x86@kernel.org>
Cc: linux-edac <linux-edac@vger.kernel.org>
Link: http://lkml.kernel.org/r/1430913538-1415-4-git-send-email-Aravind.Gopalakrishnan@amd.com
[ beef up commit message, do CPUID(8000_0007) only once. ]
Signed-off-by: Borislav Petkov <bp@suse.de>
---
 arch/x86/include/asm/mce.h       | 15 +++++++++++++--
 arch/x86/kernel/cpu/mcheck/mce.c | 10 ++++++++--
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h
index 1f5a86d518db..407ced642ac1 100644
--- a/arch/x86/include/asm/mce.h
+++ b/arch/x86/include/asm/mce.h
@@ -117,8 +117,19 @@ struct mca_config {
 };
 
 struct mce_vendor_flags {
-	__u64		overflow_recov	: 1, /* cpuid_ebx(80000007) */
-			__reserved_0	: 63;
+			/*
+			 * overflow recovery cpuid bit indicates that overflow
+			 * conditions are not fatal
+			 */
+	__u64		overflow_recov	: 1,
+
+			/*
+			 * SUCCOR stands for S/W UnCorrectable error COntainment
+			 * and Recovery. It indicates support for data poisoning
+			 * in HW and deferred error interrupts.
+			 */
+			succor		: 1,
+			__reserved_0	: 62;
 };
 extern struct mce_vendor_flags mce_flags;
 
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index e535533d5ab8..521e5016aca6 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -1637,10 +1637,16 @@ static void __mcheck_cpu_init_vendor(struct cpuinfo_x86 *c)
 		mce_intel_feature_init(c);
 		mce_adjust_timer = cmci_intel_adjust_timer;
 		break;
-	case X86_VENDOR_AMD:
+
+	case X86_VENDOR_AMD: {
+		u32 ebx = cpuid_ebx(0x80000007);
+
 		mce_amd_feature_init(c);
-		mce_flags.overflow_recov = cpuid_ebx(0x80000007) & 0x1;
+		mce_flags.overflow_recov = !!(ebx & BIT(0));
+		mce_flags.succor	 = !!(ebx & BIT(1));
 		break;
+		}
+
 	default:
 		break;
 	}
-- 
2.3.5

-- 
Regards/Gruss,
    Boris.

ECO tip #101: Trim your mails when you reply.
--

  reply	other threads:[~2015-05-06 18:49 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-05-06 11:58 [PATCH V2 0/6] Enable deferred error interrupts Aravind Gopalakrishnan
2015-05-06 11:58 ` [PATCH V2 1/6] x86/MCE/AMD: Factor out logging mechanism Aravind Gopalakrishnan
2015-05-06 17:41   ` Borislav Petkov
2015-05-06 17:47     ` Aravind Gopalakrishnan
2015-06-07 17:36   ` [tip:x86/core] x86/mce/amd: " tip-bot for Aravind Gopalakrishnan
2015-05-06 11:58 ` [PATCH V2 2/6] x86/MCE/AMD: Read MCx_ADDR(bank) before we log the error Aravind Gopalakrishnan
2015-06-07 17:37   ` [tip:x86/core] x86/mce/amd: Collect valid address before logging an error tip-bot for Aravind Gopalakrishnan
2015-05-06 11:58 ` [PATCH V2 3/6] x86/mce: Define 'SUCCOR' cpuid bit Aravind Gopalakrishnan
2015-05-06 18:49   ` Borislav Petkov [this message]
2015-06-07 17:37   ` [tip:x86/core] x86/mce: Add support for deferred errors on AMD tip-bot for Aravind Gopalakrishnan
2015-05-06 11:58 ` [PATCH V2 4/6] x86/MCE/AMD: Introduce deferred error interrupt handler Aravind Gopalakrishnan
2015-05-07  8:24   ` Borislav Petkov
2015-06-07 17:37   ` [tip:x86/core] x86/mce/amd: " tip-bot for Aravind Gopalakrishnan
2015-05-06 11:58 ` [PATCH V2 5/6] x86, irq: Cleanup ordering of vector numbers Aravind Gopalakrishnan
2015-05-07  8:29   ` Borislav Petkov
2015-06-07 17:37   ` [tip:x86/core] x86/irq: " tip-bot for Aravind Gopalakrishnan
2015-05-06 11:58 ` [PATCH V2 6/6] x86/MCE/AMD: Rename setup_APIC_mce Aravind Gopalakrishnan
2015-05-07  8:34   ` Borislav Petkov
2015-06-07 17:38   ` [tip:x86/core] x86/mce/amd: " tip-bot for Aravind Gopalakrishnan

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=20150506184917.GJ22949@pd.tnic \
    --to=bp@alien8.de \
    --cc=Aravind.Gopalakrishnan@amd.com \
    --cc=JBeulich@suse.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=dvlasenk@redhat.com \
    --cc=hpa@zytor.com \
    --cc=jiang.liu@linux.intel.com \
    --cc=jroedel@suse.de \
    --cc=linux-edac@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@rasmusvillemoes.dk \
    --cc=luto@amacapital.net \
    --cc=macro@linux-mips.org \
    --cc=mingo@redhat.com \
    --cc=oleg@redhat.com \
    --cc=prarit@redhat.com \
    --cc=rostedt@goodmis.org \
    --cc=rric@kernel.org \
    --cc=rusty@rustcorp.com.au \
    --cc=slaoub@gmail.com \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=wangnan0@huawei.com \
    --cc=x86@kernel.org \
    --cc=yinghai@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

Powered by JetHome