From: Prarit Bhargava <prarit@redhat.com>
To: Borislav Petkov <bp@amd64.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Russ Anderson <rja@sgi.com>, "Luck, Tony" <tony.luck@intel.com>,
"dzickus@redhat.com" <dzickus@redhat.com>,
"mstowe@redhat.com" <mstowe@redhat.com>,
"dnelson@redhat.com" <dnelson@redhat.com>,
"rja@americas.sgi.com" <rja@americas.sgi.com>
Subject: Re: [PATCH -v2] x86, MCE: Drop default decoding notifier
Date: Thu, 14 Apr 2011 10:59:00 -0400 [thread overview]
Message-ID: <4DA70BB4.4020407@redhat.com> (raw)
In-Reply-To: <20110413173705.GJ2791@aftab>
> In the worst case, we will report 32 CEs before panicking. For that case
> we either do printk_once as Tony suggested or we ratelimit it. I'll
> update the patch.
>
Okay ... how 'bout using Tony's printk_once() just after the call to
print_mce() in mce_panic()? [uncompiled and untested patch below]
diff --git a/arch/x86/include/asm/mce.h b/arch/x86/include/asm/mce.h
index eb16e94..021979a 100644
--- a/arch/x86/include/asm/mce.h
+++ b/arch/x86/include/asm/mce.h
@@ -142,8 +142,6 @@ static inline void winchip_mcheck_init(struct cpuinfo_x86 *c) {}
static inline void enable_p5_mce(void) {}
#endif
-extern void (*x86_mce_decode_callback)(struct mce *m);
-
void mce_setup(struct mce *m);
void mce_log(struct mce *m);
DECLARE_PER_CPU(struct sys_device, mce_dev);
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index 3385ea2..6ecfea5 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -105,20 +105,6 @@ static int cpu_missing;
ATOMIC_NOTIFIER_HEAD(x86_mce_decoder_chain);
EXPORT_SYMBOL_GPL(x86_mce_decoder_chain);
-static int default_decode_mce(struct notifier_block *nb, unsigned long val,
- void *data)
-{
- pr_emerg(HW_ERR "No human readable MCE decoding support on this CPU type.\n");
- pr_emerg(HW_ERR "Run the message through 'mcelog --ascii' to decode.\n");
-
- return NOTIFY_STOP;
-}
-
-static struct notifier_block mce_dec_nb = {
- .notifier_call = default_decode_mce,
- .priority = -1,
-};
-
/* MCA banks polled by the period polling timer for corrected events */
DEFINE_PER_CPU(mce_banks_t, mce_poll_banks) = {
[0 ... BITS_TO_LONGS(MAX_NR_BANKS)-1] = ~0UL
@@ -212,6 +198,8 @@ void mce_log(struct mce *mce)
static void print_mce(struct mce *m)
{
+ int ret = 0;
+
pr_emerg(HW_ERR "CPU %d: Machine Check Exception: %Lx Bank %d: %016Lx\n",
m->extcpu, m->mcgstatus, m->bank, m->status);
@@ -239,7 +227,10 @@ static void print_mce(struct mce *m)
* Print out human-readable details about the MCE error,
* (if the CPU has an implementation for that)
*/
- atomic_notifier_call_chain(&x86_mce_decoder_chain, 0, m);
+ ret = atomic_notifier_call_chain(&x86_mce_decoder_chain, 0, m);
+ if (ret != NOTIFY_STOP && (m->status & MCI_STATUS_UC))
+ pr_emerg(HW_ERR "Run the above through 'mcelog --ascii' "
+ "to decode.\n");
}
#define PANIC_TIMEOUT 5 /* 5 seconds */
@@ -289,6 +280,8 @@ static void mce_panic(char *msg, struct mce *final, char *exp)
continue;
if (!(m->status & MCI_STATUS_UC)) {
print_mce(m);
+ printk_once(KERN_EMERG HW_ERR "MCE Corrected Error(s) "
+ "detected.");
if (!apei_err)
apei_err = apei_write_mce(m);
}
@@ -1722,8 +1715,6 @@ __setup("mce", mcheck_enable);
int __init mcheck_init(void)
{
- atomic_notifier_chain_register(&x86_mce_decoder_chain, &mce_dec_nb);
-
mcheck_intel_therm_init();
return 0;
next prev parent reply other threads:[~2011-04-14 14:59 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-12 17:44 [PATCH]: mce: don't print "human readable" message for corrected errors Prarit Bhargava
2011-04-12 18:58 ` Borislav Petkov
2011-04-12 19:22 ` Prarit Bhargava
2011-04-12 19:57 ` Borislav Petkov
2011-04-12 20:02 ` Luck, Tony
2011-04-12 20:15 ` Prarit Bhargava
2011-04-12 20:28 ` Borislav Petkov
2011-04-13 3:00 ` Russ Anderson
2011-04-13 7:14 ` Borislav Petkov
2011-04-13 13:24 ` Borislav Petkov
2011-04-13 13:36 ` [PATCH 1/3] x86, MCE: Do not taint when correctable errors Borislav Petkov
2011-04-13 13:36 ` [PATCH 2/3] x86, MCE: Drop default decoding notifier Borislav Petkov
2011-04-13 14:01 ` Prarit Bhargava
2011-04-13 14:18 ` Borislav Petkov
2011-04-13 14:22 ` Prarit Bhargava
2011-04-13 14:26 ` Borislav Petkov
2011-04-13 14:32 ` Prarit Bhargava
2011-04-13 14:39 ` Borislav Petkov
2011-04-13 14:45 ` Prarit Bhargava
2011-04-13 14:36 ` [PATCH -v2] " Borislav Petkov
2011-04-13 17:01 ` Prarit Bhargava
2011-04-13 17:13 ` Luck, Tony
2011-04-13 17:17 ` Prarit Bhargava
2011-04-13 17:14 ` Prarit Bhargava
2011-04-13 17:37 ` Borislav Petkov
2011-04-14 14:59 ` Prarit Bhargava [this message]
2011-04-14 15:00 ` [PATCH -v3] x86, MCE: Drop the " Borislav Petkov
2011-04-14 15:04 ` Prarit Bhargava
2011-04-14 15:16 ` Borislav Petkov
2011-04-14 15:23 ` Prarit Bhargava
2011-04-14 15:44 ` Borislav Petkov
2011-04-14 15:49 ` Prarit Bhargava
2011-04-14 19:02 ` Borislav Petkov
2011-04-14 19:04 ` Prarit Bhargava
2011-04-14 15:33 ` Russ Anderson
2011-04-14 15:49 ` Borislav Petkov
2011-04-13 13:36 ` [PATCH 3/3] EDAC, MCE, AMD: Register with MCE core Borislav Petkov
2011-04-13 2:24 ` [PATCH]: mce: don't print "human readable" message for corrected errors Russ Anderson
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=4DA70BB4.4020407@redhat.com \
--to=prarit@redhat.com \
--cc=bp@amd64.org \
--cc=dnelson@redhat.com \
--cc=dzickus@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mstowe@redhat.com \
--cc=rja@americas.sgi.com \
--cc=rja@sgi.com \
--cc=tony.luck@intel.com \
/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.