From: Borislav Petkov <bp@alien8.de>
To: linux-edac <linux-edac@vger.kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Tony Luck <tony.luck@intel.com>,
Yazen Ghannam <Yazen.Ghannam@amd.com>, X86 ML <x86@kernel.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: [RFC PATCH 7/8] EDAC, mce_amd: Add a simple tracepoint dumping a decoded string
Date: Tue, 25 Jul 2017 17:46:00 +0200 [thread overview]
Message-ID: <20170725154601.27427-8-bp@alien8.de> (raw)
In-Reply-To: <20170725154601.27427-1-bp@alien8.de>
From: Borislav Petkov <bp@suse.de>
It is a single string which gets dynamically generated when the error
gets decoded. Dump it to userspace through that tracepoint so that
consumers can get the already decoded string and the kernel has the
decoding functionality too, even if there are no userspace consumers.
Signed-off-by: Borislav Petkov <bp@suse.de>
Cc: Steven Rostedt <rostedt@goodmis.org>
---
drivers/edac/mce_amd.c | 7 ++++++-
drivers/ras/ras.c | 1 +
include/ras/ras_event.h | 16 ++++++++++++++++
3 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/drivers/edac/mce_amd.c b/drivers/edac/mce_amd.c
index 1f5e9bb161f3..ce7e20ca6773 100644
--- a/drivers/edac/mce_amd.c
+++ b/drivers/edac/mce_amd.c
@@ -1,6 +1,8 @@
#include <linux/seq_buf.h>
#include <linux/module.h>
#include <linux/slab.h>
+#include <linux/ras.h>
+#include <ras/ras_event.h>
#include <asm/cpu.h>
@@ -1053,7 +1055,10 @@ amd_decode_mce(struct notifier_block *nb, unsigned long val, void *data)
err_code:
amd_decode_err_code(m->status & 0xffff);
- pr_emerg("%.*s\n", (int)sb.len, sb.buffer);
+ if (ras_userspace_consumers())
+ trace_mce_decode(sb.buffer);
+ else
+ pr_emerg("%.*s\n", (int)sb.len, sb.buffer);
seq_buf_clear_buf(&sb);
diff --git a/drivers/ras/ras.c b/drivers/ras/ras.c
index 5429d3795732..a09e39b3f711 100644
--- a/drivers/ras/ras.c
+++ b/drivers/ras/ras.c
@@ -42,6 +42,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(extlog_mem_event);
EXPORT_TRACEPOINT_SYMBOL_GPL(mc_event);
EXPORT_TRACEPOINT_SYMBOL_GPL(non_standard_event);
EXPORT_TRACEPOINT_SYMBOL_GPL(arm_event);
+EXPORT_TRACEPOINT_SYMBOL_GPL(mce_decode);
static int __init parse_ras_param(char *str)
{
diff --git a/include/ras/ras_event.h b/include/ras/ras_event.h
index 429f46fb61e4..113df73f7ba0 100644
--- a/include/ras/ras_event.h
+++ b/include/ras/ras_event.h
@@ -407,6 +407,22 @@ TRACE_EVENT(memory_failure_event,
)
);
#endif /* CONFIG_MEMORY_FAILURE */
+
+TRACE_EVENT(mce_decode,
+ TP_PROTO(const char *param_str),
+
+ TP_ARGS(param_str),
+
+ TP_STRUCT__entry(
+ __string(str, param_str)
+ ),
+
+ TP_fast_assign(
+ __assign_str(str, param_str);
+ ),
+
+ TP_printk("%s", __get_str(str))
+);
#endif /* _TRACE_HW_EVENT_MC_H */
/* This part must be outside protection */
--
2.14.0.rc0
next prev parent reply other threads:[~2017-07-25 15:48 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-25 15:45 [RFC PATCH 0/8] EDAC, mce_amd: Add a tracepoint for the decoded error Borislav Petkov
2017-07-25 15:45 ` [RFC PATCH 1/8] EDAC, mce_amd: Rename decode_smca_errors() to decode_smca_error() Borislav Petkov
2017-07-25 15:45 ` [RFC PATCH 2/8] EDAC, mce_amd: Get rid of most struct cpuinfo_x86 uses Borislav Petkov
2017-07-25 15:45 ` [RFC PATCH 3/8] EDAC, mce_amd: Get rid of local var in amd_filter_mce() Borislav Petkov
2017-07-25 15:45 ` [RFC PATCH 4/8] seq_buf: Add seq_buf_clear_buf() Borislav Petkov
2017-07-28 1:43 ` Steven Rostedt
2017-07-25 15:45 ` [RFC PATCH 5/8] seq_buf: Export seq_buf_printf() to modules Borislav Petkov
2017-07-28 1:44 ` Steven Rostedt
2017-07-25 15:45 ` [RFC PATCH 6/8] EDAC, mce_amd: Convert to seq_buf Borislav Petkov
2017-07-28 1:47 ` Steven Rostedt
2017-07-28 7:09 ` Borislav Petkov
2017-07-28 10:51 ` Borislav Petkov
2017-07-28 12:59 ` Steven Rostedt
2017-07-28 14:09 ` Borislav Petkov
2017-07-25 15:46 ` Borislav Petkov [this message]
2017-07-28 1:47 ` [RFC PATCH 7/8] EDAC, mce_amd: Add a simple tracepoint dumping a decoded string Steven Rostedt
2017-07-28 7:12 ` Borislav Petkov
2017-07-25 15:46 ` [RFC PATCH 8/8] EDAC, mce_amd: Issue the decoded info through the TP or printk Borislav Petkov
2017-07-27 7:10 ` [RFC PATCH 0/8] EDAC, mce_amd: Add a tracepoint for the decoded error Ingo Molnar
2017-07-27 7:58 ` Borislav Petkov
2017-07-27 8:39 ` Ingo Molnar
2017-07-27 13:09 ` Borislav Petkov
2017-07-28 6:37 ` Ingo Molnar
2017-07-28 7:15 ` Borislav Petkov
2017-07-28 15:08 ` Borislav Petkov
2017-07-28 15:38 ` Borislav Petkov
2017-07-27 16:42 ` Luck, Tony
2017-07-28 7:20 ` 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=20170725154601.27427-8-bp@alien8.de \
--to=bp@alien8.de \
--cc=Yazen.Ghannam@amd.com \
--cc=linux-edac@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.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 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®