mirror of
https://github.com/torvalds/linux.git
synced 2024-11-01 17:51:43 +00:00
x86, MCE: Use notifier chain only for MCE decoding
Drop the edac_mce custom hook in favor of the generic notifier mechanism. Also, do not log the error to mcelog if the notified agent was able to decode it. Signed-off-by: Borislav Petkov <borislav.petkov@amd.com> Acked-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
5034086b72
commit
f0cb545243
@ -144,23 +144,20 @@ static struct mce_log mcelog = {
|
||||
void mce_log(struct mce *mce)
|
||||
{
|
||||
unsigned next, entry;
|
||||
int ret = 0;
|
||||
|
||||
/* Emit the trace record: */
|
||||
trace_mce_record(mce);
|
||||
|
||||
ret = atomic_notifier_call_chain(&x86_mce_decoder_chain, 0, mce);
|
||||
if (ret == NOTIFY_STOP)
|
||||
return;
|
||||
|
||||
mce->finished = 0;
|
||||
wmb();
|
||||
for (;;) {
|
||||
entry = rcu_dereference_check_mce(mcelog.next);
|
||||
for (;;) {
|
||||
/*
|
||||
* If edac_mce is enabled, it will check the error type
|
||||
* and will process it, if it is a known error.
|
||||
* Otherwise, the error will be sent through mcelog
|
||||
* interface
|
||||
*/
|
||||
if (edac_mce_parse(mce))
|
||||
return;
|
||||
|
||||
/*
|
||||
* When the buffer fills up discard new entries.
|
||||
@ -551,10 +548,8 @@ void machine_check_poll(enum mcp_flags flags, mce_banks_t *b)
|
||||
* Don't get the IP here because it's unlikely to
|
||||
* have anything to do with the actual error location.
|
||||
*/
|
||||
if (!(flags & MCP_DONTLOG) && !mce_dont_log_ce) {
|
||||
if (!(flags & MCP_DONTLOG) && !mce_dont_log_ce)
|
||||
mce_log(&m);
|
||||
atomic_notifier_call_chain(&x86_mce_decoder_chain, 0, &m);
|
||||
}
|
||||
|
||||
/*
|
||||
* Clear state for this bank.
|
||||
|
Loading…
Reference in New Issue
Block a user