linux/include/trace/events/ras.h
<<
>>
Prefs
   1#undef TRACE_SYSTEM
   2#define TRACE_SYSTEM ras
   3
   4#if !defined(_TRACE_AER_H) || defined(TRACE_HEADER_MULTI_READ)
   5#define _TRACE_AER_H
   6
   7#include <linux/tracepoint.h>
   8#include <linux/edac.h>
   9
  10
  11/*
  12 * PCIe AER Trace event
  13 *
  14 * These events are generated when hardware detects a corrected or
  15 * uncorrected event on a PCIe device. The event report has
  16 * the following structure:
  17 *
  18 * char * dev_name -    The name of the slot where the device resides
  19 *                      ([domain:]bus:device.function).
  20 * u32 status -         Either the correctable or uncorrectable register
  21 *                      indicating what error or errors have been seen
  22 * u8 severity -        error severity 0:NONFATAL 1:FATAL 2:CORRECTED
  23 */
  24
  25#define aer_correctable_errors          \
  26        {BIT(0),        "Receiver Error"},              \
  27        {BIT(6),        "Bad TLP"},                     \
  28        {BIT(7),        "Bad DLLP"},                    \
  29        {BIT(8),        "RELAY_NUM Rollover"},          \
  30        {BIT(12),       "Replay Timer Timeout"},        \
  31        {BIT(13),       "Advisory Non-Fatal"}
  32
  33#define aer_uncorrectable_errors                \
  34        {BIT(4),        "Data Link Protocol"},          \
  35        {BIT(12),       "Poisoned TLP"},                \
  36        {BIT(13),       "Flow Control Protocol"},       \
  37        {BIT(14),       "Completion Timeout"},          \
  38        {BIT(15),       "Completer Abort"},             \
  39        {BIT(16),       "Unexpected Completion"},       \
  40        {BIT(17),       "Receiver Overflow"},           \
  41        {BIT(18),       "Malformed TLP"},               \
  42        {BIT(19),       "ECRC"},                        \
  43        {BIT(20),       "Unsupported Request"}
  44
  45TRACE_EVENT(aer_event,
  46        TP_PROTO(const char *dev_name,
  47                 const u32 status,
  48                 const u8 severity),
  49
  50        TP_ARGS(dev_name, status, severity),
  51
  52        TP_STRUCT__entry(
  53                __string(       dev_name,       dev_name        )
  54                __field(        u32,            status          )
  55                __field(        u8,             severity        )
  56        ),
  57
  58        TP_fast_assign(
  59                __assign_str(dev_name, dev_name);
  60                __entry->status         = status;
  61                __entry->severity       = severity;
  62        ),
  63
  64        TP_printk("%s PCIe Bus Error: severity=%s, %s\n",
  65                __get_str(dev_name),
  66                __entry->severity == HW_EVENT_ERR_CORRECTED ? "Corrected" :
  67                        __entry->severity == HW_EVENT_ERR_FATAL ?
  68                        "Fatal" : "Uncorrected",
  69                __entry->severity == HW_EVENT_ERR_CORRECTED ?
  70                __print_flags(__entry->status, "|", aer_correctable_errors) :
  71                __print_flags(__entry->status, "|", aer_uncorrectable_errors))
  72);
  73
  74#endif /* _TRACE_AER_H */
  75
  76/* This part must be outside protection */
  77#include <trace/define_trace.h>
  78