Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 545104dd authored by Rui Wang's avatar Rui Wang Committed by Borislav Petkov
Browse files

PCI, AER: Fix severity usage in aer trace event



There's inconsistency between dmesg and the trace event output.
When dmesg says "severity=Corrected", the trace event says
"severity=Fatal". What happens is that HW_EVENT_ERR_CORRECTED is
defined in edac.h:

enum hw_event_mc_err_type {
        HW_EVENT_ERR_CORRECTED,
        HW_EVENT_ERR_UNCORRECTED,
        HW_EVENT_ERR_FATAL,
        HW_EVENT_ERR_INFO,
};

while aer_print_error() uses aer_error_severity_string[] defined as:

static const char *aer_error_severity_string[] = {
        "Uncorrected (Non-Fatal)",
        "Uncorrected (Fatal)",
        "Corrected"
};

In this case dmesg is correct because info->severity is assigned in
aer_isr_one_error() using the definitions in include/linux/ras.h:

Signed-off-by: default avatarRui Wang <rui.y.wang@intel.com>
Acked-by: default avatarEthan Zhao <ethan.kernel@gmail.com>
Link: http://lkml.kernel.org/r/CANVTcTaP18CiGOSEcX5Ch_wPw9mEhkgokfp+d+ZOMFD+Ce4juA@mail.gmail.com


Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
parent 853d9b18
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@
#define _TRACE_AER_H

#include <linux/tracepoint.h>
#include <linux/edac.h>
#include <linux/aer.h>


/*
@@ -63,10 +63,10 @@ TRACE_EVENT(aer_event,

	TP_printk("%s PCIe Bus Error: severity=%s, %s\n",
		__get_str(dev_name),
		__entry->severity == HW_EVENT_ERR_CORRECTED ? "Corrected" :
			__entry->severity == HW_EVENT_ERR_FATAL ?
			"Fatal" : "Uncorrected",
		__entry->severity == HW_EVENT_ERR_CORRECTED ?
		__entry->severity == AER_CORRECTABLE ? "Corrected" :
			__entry->severity == AER_FATAL ?
			"Fatal" : "Uncorrected, non-fatal",
		__entry->severity == AER_CORRECTABLE ?
		__print_flags(__entry->status, "|", aer_correctable_errors) :
		__print_flags(__entry->status, "|", aer_uncorrectable_errors))
);