Message ID | 20131018212741.GA26049@pd.tnic (mailing list archive) |
---|---|
State | Not Applicable, archived |
Headers | show |
@@ -154,6 +154,10 @@ void mce_log(struct mce *mce) /* Emit the trace record: */ trace_mce_record(mce); + if (mce_ext_err_print) + if (mce_ext_err_print(NULL, m.extcpu, i)) + return; + ret = atomic_notifier_call_chain(&x86_mce_decoder_chain, 0, mce); if (ret == NOTIFY_STOP) return; If we move mce_ext_err_print() this far ... then it's only one line further down to have it be part of the x86_mce_decoder_chain as suggested by Naveen. -Tony
On Fri, Oct 18, 2013 at 10:22:26PM +0000, Luck, Tony wrote: > @@ -154,6 +154,10 @@ void mce_log(struct mce *mce) > /* Emit the trace record: */ > trace_mce_record(mce); > > + if (mce_ext_err_print) > + if (mce_ext_err_print(NULL, m.extcpu, i)) > + return; > + > ret = atomic_notifier_call_chain(&x86_mce_decoder_chain, 0, mce); > if (ret == NOTIFY_STOP) > return; > > If we move mce_ext_err_print() this far ... then it's only one line further down > to have it be part of the x86_mce_decoder_chain as suggested by Naveen. Right, if you want mce_ext_err_print() to be the first and the only one called on the chain, then you'd have to play with the priority. But yes, this is possible and it would make it all even cleaner and simpler by simply not needing the reg/dereg interfaces for mce_ext_err_print but adding it to the chain.
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c index b1b04123f3d9..382c78eaf474 100644 --- a/arch/x86/kernel/cpu/mcheck/mce.c +++ b/arch/x86/kernel/cpu/mcheck/mce.c @@ -154,6 +154,10 @@ void mce_log(struct mce *mce) /* Emit the trace record: */ trace_mce_record(mce); + if (mce_ext_err_print) + if (mce_ext_err_print(NULL, m.extcpu, i)) + return; + ret = atomic_notifier_call_chain(&x86_mce_decoder_chain, 0, mce); if (ret == NOTIFY_STOP) return;