From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751781AbdG1BsG (ORCPT ); Thu, 27 Jul 2017 21:48:06 -0400 Received: from smtprelay0200.hostedemail.com ([216.40.44.200]:43799 "EHLO smtprelay.hostedemail.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751622AbdG1BsF (ORCPT ); Thu, 27 Jul 2017 21:48:05 -0400 X-Session-Marker: 726F737465647440676F6F646D69732E6F7267 X-Spam-Summary: 2,0,0,,d41d8cd98f00b204,rostedt@goodmis.org,:::::::::::,RULES_HIT:41:355:379:541:599:800:960:973:988:989:1260:1277:1311:1313:1314:1345:1359:1431:1437:1515:1516:1518:1534:1542:1593:1594:1711:1730:1747:1777:1792:2393:2553:2559:2562:2897:3138:3139:3140:3141:3142:3167:3354:3622:3865:3867:3868:3871:3872:3874:4321:4605:5007:6120:6261:7576:7875:10004:10400:10848:10967:11026:11232:11473:11658:11914:12043:12296:12438:12555:12740:12760:12895:12986:13255:13439:14096:14097:14181:14659:14721:21080:21451:21627:30046:30054:30090:30091,0,RBL:none,CacheIP:none,Bayesian:0.5,0.5,0.5,Netcheck:none,DomainCache:0,MSF:not bulk,SPF:,MSBL:0,DNSBL:none,Custom_rules:0:0:0,LFtime:31,LUA_SUMMARY:none X-HE-Tag: chalk73_464831b5b692b X-Filterd-Recvd-Size: 3614 Date: Thu, 27 Jul 2017 21:47:59 -0400 From: Steven Rostedt To: Borislav Petkov Cc: linux-edac , Tony Luck , Yazen Ghannam , X86 ML , LKML Subject: Re: [RFC PATCH 7/8] EDAC, mce_amd: Add a simple tracepoint dumping a decoded string Message-ID: <20170727214759.4ccc1574@vmware.local.home> In-Reply-To: <20170725154601.27427-8-bp@alien8.de> References: <20170725154601.27427-1-bp@alien8.de> <20170725154601.27427-8-bp@alien8.de> X-Mailer: Claws Mail 3.15.0-dirty (GTK+ 2.24.31; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 25 Jul 2017 17:46:00 +0200 Borislav Petkov wrote: > From: Borislav Petkov > > 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 > Cc: Steven Rostedt Acked-by: Steven Rostedt (VMware) -- Steve > --- > 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 > #include > #include > +#include > +#include > > #include > > @@ -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 */