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,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)
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 */
next reply other threads:[~2017-07-25 15:46 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-25 15:46 Borislav Petkov [this message]
-- strict thread matches above, loose matches on Subject: below --
2017-07-28 1:47 [RFC,7/8] EDAC, mce_amd: Add a simple tracepoint dumping a decoded string Steven Rostedt
2017-07-28 7:12 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