Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.1.
  1/* SPDX-License-Identifier: GPL-2.0 */
  2#undef TRACE_SYSTEM
  3#define TRACE_SYSTEM cxl
  4
  5#if !defined(_CXL_EVENTS_H) || defined(TRACE_HEADER_MULTI_READ)
  6#define _CXL_EVENTS_H
  7
  8#include <linux/tracepoint.h>
  9
 10#define CXL_HEADERLOG_SIZE		SZ_512
 11#define CXL_HEADERLOG_SIZE_U32		SZ_512 / sizeof(u32)
 12
 13#define CXL_RAS_UC_CACHE_DATA_PARITY	BIT(0)
 14#define CXL_RAS_UC_CACHE_ADDR_PARITY	BIT(1)
 15#define CXL_RAS_UC_CACHE_BE_PARITY	BIT(2)
 16#define CXL_RAS_UC_CACHE_DATA_ECC	BIT(3)
 17#define CXL_RAS_UC_MEM_DATA_PARITY	BIT(4)
 18#define CXL_RAS_UC_MEM_ADDR_PARITY	BIT(5)
 19#define CXL_RAS_UC_MEM_BE_PARITY	BIT(6)
 20#define CXL_RAS_UC_MEM_DATA_ECC		BIT(7)
 21#define CXL_RAS_UC_REINIT_THRESH	BIT(8)
 22#define CXL_RAS_UC_RSVD_ENCODE		BIT(9)
 23#define CXL_RAS_UC_POISON		BIT(10)
 24#define CXL_RAS_UC_RECV_OVERFLOW	BIT(11)
 25#define CXL_RAS_UC_INTERNAL_ERR		BIT(14)
 26#define CXL_RAS_UC_IDE_TX_ERR		BIT(15)
 27#define CXL_RAS_UC_IDE_RX_ERR		BIT(16)
 28
 29#define show_uc_errs(status)	__print_flags(status, " | ",		  \
 30	{ CXL_RAS_UC_CACHE_DATA_PARITY, "Cache Data Parity Error" },	  \
 31	{ CXL_RAS_UC_CACHE_ADDR_PARITY, "Cache Address Parity Error" },	  \
 32	{ CXL_RAS_UC_CACHE_BE_PARITY, "Cache Byte Enable Parity Error" }, \
 33	{ CXL_RAS_UC_CACHE_DATA_ECC, "Cache Data ECC Error" },		  \
 34	{ CXL_RAS_UC_MEM_DATA_PARITY, "Memory Data Parity Error" },	  \
 35	{ CXL_RAS_UC_MEM_ADDR_PARITY, "Memory Address Parity Error" },	  \
 36	{ CXL_RAS_UC_MEM_BE_PARITY, "Memory Byte Enable Parity Error" },  \
 37	{ CXL_RAS_UC_MEM_DATA_ECC, "Memory Data ECC Error" },		  \
 38	{ CXL_RAS_UC_REINIT_THRESH, "REINIT Threshold Hit" },		  \
 39	{ CXL_RAS_UC_RSVD_ENCODE, "Received Unrecognized Encoding" },	  \
 40	{ CXL_RAS_UC_POISON, "Received Poison From Peer" },		  \
 41	{ CXL_RAS_UC_RECV_OVERFLOW, "Receiver Overflow" },		  \
 42	{ CXL_RAS_UC_INTERNAL_ERR, "Component Specific Error" },	  \
 43	{ CXL_RAS_UC_IDE_TX_ERR, "IDE Tx Error" },			  \
 44	{ CXL_RAS_UC_IDE_RX_ERR, "IDE Rx Error" }			  \
 45)
 46
 47TRACE_EVENT(cxl_aer_uncorrectable_error,
 48	TP_PROTO(const struct device *dev, u32 status, u32 fe, u32 *hl),
 49	TP_ARGS(dev, status, fe, hl),
 50	TP_STRUCT__entry(
 51		__string(dev_name, dev_name(dev))
 52		__field(u32, status)
 53		__field(u32, first_error)
 54		__array(u32, header_log, CXL_HEADERLOG_SIZE_U32)
 55	),
 56	TP_fast_assign(
 57		__assign_str(dev_name, dev_name(dev));
 58		__entry->status = status;
 59		__entry->first_error = fe;
 60		/*
 61		 * Embed the 512B headerlog data for user app retrieval and
 62		 * parsing, but no need to print this in the trace buffer.
 63		 */
 64		memcpy(__entry->header_log, hl, CXL_HEADERLOG_SIZE);
 65	),
 66	TP_printk("%s: status: '%s' first_error: '%s'",
 67		  __get_str(dev_name),
 68		  show_uc_errs(__entry->status),
 69		  show_uc_errs(__entry->first_error)
 70	)
 71);
 72
 73#define CXL_RAS_CE_CACHE_DATA_ECC	BIT(0)
 74#define CXL_RAS_CE_MEM_DATA_ECC		BIT(1)
 75#define CXL_RAS_CE_CRC_THRESH		BIT(2)
 76#define CLX_RAS_CE_RETRY_THRESH		BIT(3)
 77#define CXL_RAS_CE_CACHE_POISON		BIT(4)
 78#define CXL_RAS_CE_MEM_POISON		BIT(5)
 79#define CXL_RAS_CE_PHYS_LAYER_ERR	BIT(6)
 80
 81#define show_ce_errs(status)	__print_flags(status, " | ",			\
 82	{ CXL_RAS_CE_CACHE_DATA_ECC, "Cache Data ECC Error" },			\
 83	{ CXL_RAS_CE_MEM_DATA_ECC, "Memory Data ECC Error" },			\
 84	{ CXL_RAS_CE_CRC_THRESH, "CRC Threshold Hit" },				\
 85	{ CLX_RAS_CE_RETRY_THRESH, "Retry Threshold" },				\
 86	{ CXL_RAS_CE_CACHE_POISON, "Received Cache Poison From Peer" },		\
 87	{ CXL_RAS_CE_MEM_POISON, "Received Memory Poison From Peer" },		\
 88	{ CXL_RAS_CE_PHYS_LAYER_ERR, "Received Error From Physical Layer" }	\
 89)
 90
 91TRACE_EVENT(cxl_aer_correctable_error,
 92	TP_PROTO(const struct device *dev, u32 status),
 93	TP_ARGS(dev, status),
 94	TP_STRUCT__entry(
 95		__string(dev_name, dev_name(dev))
 96		__field(u32, status)
 97	),
 98	TP_fast_assign(
 99		__assign_str(dev_name, dev_name(dev));
100		__entry->status = status;
101	),
102	TP_printk("%s: status: '%s'",
103		  __get_str(dev_name), show_ce_errs(__entry->status)
104	)
105);
106
107#endif /* _CXL_EVENTS_H */
108
109/* This part must be outside protection */
110#undef TRACE_INCLUDE_FILE
111#define TRACE_INCLUDE_FILE cxl
112#include <trace/define_trace.h>