diff options
author | Chen, Gong <gong.chen@linux.intel.com> | 2014-06-11 16:57:27 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2014-06-23 13:12:29 -0400 |
commit | 0a2409aad38e97b1db55e6515b990be7b17060f6 (patch) | |
tree | 1536e63eff76d6c074547d00423b33fa6fdcc5fc /include/ras | |
parent | 76ac8275f296b49c58f684825543bf4eb85d43d0 (diff) |
trace, AER: Move trace into unified interface
AER uses a separate trace interface by now. To make it
consistent, move it into unified RAS trace interface.
Signed-off-by: Chen, Gong <gong.chen@linux.intel.com>
Acked-by: Borislav Petkov <bp@suse.de>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'include/ras')
-rw-r--r-- | include/ras/ras_event.h | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/include/ras/ras_event.h b/include/ras/ras_event.h index 21cdb0b7b0fb..acbcbb88eaaa 100644 --- a/include/ras/ras_event.h +++ b/include/ras/ras_event.h | |||
@@ -8,6 +8,7 @@ | |||
8 | #include <linux/tracepoint.h> | 8 | #include <linux/tracepoint.h> |
9 | #include <linux/edac.h> | 9 | #include <linux/edac.h> |
10 | #include <linux/ktime.h> | 10 | #include <linux/ktime.h> |
11 | #include <linux/aer.h> | ||
11 | 12 | ||
12 | /* | 13 | /* |
13 | * Hardware Events Report | 14 | * Hardware Events Report |
@@ -94,6 +95,69 @@ TRACE_EVENT(mc_event, | |||
94 | __get_str(driver_detail)) | 95 | __get_str(driver_detail)) |
95 | ); | 96 | ); |
96 | 97 | ||
98 | /* | ||
99 | * PCIe AER Trace event | ||
100 | * | ||
101 | * These events are generated when hardware detects a corrected or | ||
102 | * uncorrected event on a PCIe device. The event report has | ||
103 | * the following structure: | ||
104 | * | ||
105 | * char * dev_name - The name of the slot where the device resides | ||
106 | * ([domain:]bus:device.function). | ||
107 | * u32 status - Either the correctable or uncorrectable register | ||
108 | * indicating what error or errors have been seen | ||
109 | * u8 severity - error severity 0:NONFATAL 1:FATAL 2:CORRECTED | ||
110 | */ | ||
111 | |||
112 | #define aer_correctable_errors \ | ||
113 | {BIT(0), "Receiver Error"}, \ | ||
114 | {BIT(6), "Bad TLP"}, \ | ||
115 | {BIT(7), "Bad DLLP"}, \ | ||
116 | {BIT(8), "RELAY_NUM Rollover"}, \ | ||
117 | {BIT(12), "Replay Timer Timeout"}, \ | ||
118 | {BIT(13), "Advisory Non-Fatal"} | ||
119 | |||
120 | #define aer_uncorrectable_errors \ | ||
121 | {BIT(4), "Data Link Protocol"}, \ | ||
122 | {BIT(12), "Poisoned TLP"}, \ | ||
123 | {BIT(13), "Flow Control Protocol"}, \ | ||
124 | {BIT(14), "Completion Timeout"}, \ | ||
125 | {BIT(15), "Completer Abort"}, \ | ||
126 | {BIT(16), "Unexpected Completion"}, \ | ||
127 | {BIT(17), "Receiver Overflow"}, \ | ||
128 | {BIT(18), "Malformed TLP"}, \ | ||
129 | {BIT(19), "ECRC"}, \ | ||
130 | {BIT(20), "Unsupported Request"} | ||
131 | |||
132 | TRACE_EVENT(aer_event, | ||
133 | TP_PROTO(const char *dev_name, | ||
134 | const u32 status, | ||
135 | const u8 severity), | ||
136 | |||
137 | TP_ARGS(dev_name, status, severity), | ||
138 | |||
139 | TP_STRUCT__entry( | ||
140 | __string( dev_name, dev_name ) | ||
141 | __field( u32, status ) | ||
142 | __field( u8, severity ) | ||
143 | ), | ||
144 | |||
145 | TP_fast_assign( | ||
146 | __assign_str(dev_name, dev_name); | ||
147 | __entry->status = status; | ||
148 | __entry->severity = severity; | ||
149 | ), | ||
150 | |||
151 | TP_printk("%s PCIe Bus Error: severity=%s, %s\n", | ||
152 | __get_str(dev_name), | ||
153 | __entry->severity == AER_CORRECTABLE ? "Corrected" : | ||
154 | __entry->severity == AER_FATAL ? | ||
155 | "Fatal" : "Uncorrected, non-fatal", | ||
156 | __entry->severity == AER_CORRECTABLE ? | ||
157 | __print_flags(__entry->status, "|", aer_correctable_errors) : | ||
158 | __print_flags(__entry->status, "|", aer_uncorrectable_errors)) | ||
159 | ); | ||
160 | |||
97 | #endif /* _TRACE_HW_EVENT_MC_H */ | 161 | #endif /* _TRACE_HW_EVENT_MC_H */ |
98 | 162 | ||
99 | /* This part must be outside protection */ | 163 | /* This part must be outside protection */ |