xref: /openbmc/linux/include/trace/events/libata.h (revision 4f2c0a4acffbec01079c28f839422e64ddeff004)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
2255c03d1SHannes Reinecke #undef TRACE_SYSTEM
3255c03d1SHannes Reinecke #define TRACE_SYSTEM libata
4255c03d1SHannes Reinecke 
5255c03d1SHannes Reinecke #if !defined(_TRACE_LIBATA_H) || defined(TRACE_HEADER_MULTI_READ)
6255c03d1SHannes Reinecke #define _TRACE_LIBATA_H
7255c03d1SHannes Reinecke 
8255c03d1SHannes Reinecke #include <linux/ata.h>
9255c03d1SHannes Reinecke #include <linux/libata.h>
10255c03d1SHannes Reinecke #include <linux/tracepoint.h>
11255c03d1SHannes Reinecke #include <linux/trace_seq.h>
12255c03d1SHannes Reinecke 
13255c03d1SHannes Reinecke #define ata_opcode_name(opcode)	{ opcode, #opcode }
14255c03d1SHannes Reinecke #define show_opcode_name(val)					\
15255c03d1SHannes Reinecke 	__print_symbolic(val,					\
16255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_DEV_RESET),		\
17255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_CHK_POWER),		\
18255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_STANDBY),		\
19255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_IDLE),			\
20255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_EDD),			\
21255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_DOWNLOAD_MICRO),	\
22255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_DOWNLOAD_MICRO_DMA),	\
23255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_NOP),			\
24255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_FLUSH),		\
25255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_FLUSH_EXT),		\
26255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_ID_ATA),		\
27255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_ID_ATAPI),		\
28255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SERVICE),		\
29255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_READ),			\
30255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_READ_EXT),		\
31255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_READ_QUEUED),		\
32255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_READ_STREAM_EXT),	\
33255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_READ_STREAM_DMA_EXT),	\
34255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE),		\
35255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_EXT),		\
36255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_QUEUED),		\
37255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_STREAM_EXT),	\
38255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_STREAM_DMA_EXT), \
39255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_FUA_EXT),	\
40255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_QUEUED_FUA_EXT), \
41255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_FPDMA_READ),		\
42255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_FPDMA_WRITE),		\
43661ce1f0SHannes Reinecke 		 ata_opcode_name(ATA_CMD_NCQ_NON_DATA),		\
44255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_FPDMA_SEND),		\
45255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_FPDMA_RECV),		\
46255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_PIO_READ),		\
47255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_PIO_READ_EXT),		\
48255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_PIO_WRITE),		\
49255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_PIO_WRITE_EXT),	\
50255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_READ_MULTI),		\
51255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_READ_MULTI_EXT),	\
52255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_MULTI),		\
53255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_MULTI_EXT),	\
54255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_MULTI_FUA_EXT),	\
55255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SET_FEATURES),		\
56255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SET_MULTI),		\
57255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_PACKET),		\
58255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_VERIFY),		\
59255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_VERIFY_EXT),		\
60255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_UNCORR_EXT),	\
61255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_STANDBYNOW1),		\
62255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_IDLEIMMEDIATE),	\
63255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SLEEP),		\
64255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_INIT_DEV_PARAMS),	\
65255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_READ_NATIVE_MAX),	\
66255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_READ_NATIVE_MAX_EXT),	\
67255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SET_MAX),		\
68255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SET_MAX_EXT),		\
69255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_READ_LOG_EXT),		\
70255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_LOG_EXT),	\
71255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_READ_LOG_DMA_EXT),	\
72255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_LOG_DMA_EXT),	\
73255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_TRUSTED_NONDATA),	\
74255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_TRUSTED_RCV),		\
75255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_TRUSTED_RCV_DMA),	\
76255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_TRUSTED_SND),		\
77255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_TRUSTED_SND_DMA),	\
78255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_PMP_READ),		\
79255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_PMP_READ_DMA),		\
80255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_PMP_WRITE),		\
81255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_PMP_WRITE_DMA),	\
82255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_CONF_OVERLAY),		\
83255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SEC_SET_PASS),		\
84255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SEC_UNLOCK),		\
85255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SEC_ERASE_PREP),	\
86255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SEC_ERASE_UNIT),	\
87255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SEC_FREEZE_LOCK),	\
88255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SEC_DISABLE_PASS),	\
89255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_CONFIG_STREAM),	\
90255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SMART),		\
91255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_MEDIA_LOCK),		\
92255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_MEDIA_UNLOCK),		\
93255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_DSM),			\
94255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_CHK_MED_CRD_TYP),	\
95255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_CFA_REQ_EXT_ERR),	\
96255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_CFA_WRITE_NE),		\
97255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_CFA_TRANS_SECT),	\
98255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_CFA_ERASE),		\
99255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_CFA_WRITE_MULT_NE),	\
100255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_REQ_SENSE_DATA),	\
101255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_SANITIZE_DEVICE),	\
10228a3fc22SHannes Reinecke 		 ata_opcode_name(ATA_CMD_ZAC_MGMT_IN),		\
10327708a95SHannes Reinecke 		 ata_opcode_name(ATA_CMD_ZAC_MGMT_OUT),		\
104255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_RESTORE),		\
105255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_READ_LONG),		\
106255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_READ_LONG_ONCE),	\
107255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_LONG),		\
108255c03d1SHannes Reinecke 		 ata_opcode_name(ATA_CMD_WRITE_LONG_ONCE))
109255c03d1SHannes Reinecke 
110255c03d1SHannes Reinecke #define ata_error_name(result)	{ result, #result }
111255c03d1SHannes Reinecke #define show_error_name(val)				\
112255c03d1SHannes Reinecke 	__print_symbolic(val,				\
113255c03d1SHannes Reinecke 		ata_error_name(ATA_ICRC),		\
114255c03d1SHannes Reinecke 		ata_error_name(ATA_UNC),		\
115255c03d1SHannes Reinecke 		ata_error_name(ATA_MC),			\
116255c03d1SHannes Reinecke 		ata_error_name(ATA_IDNF),		\
117255c03d1SHannes Reinecke 		ata_error_name(ATA_MCR),		\
118255c03d1SHannes Reinecke 		ata_error_name(ATA_ABORTED),		\
119255c03d1SHannes Reinecke 		ata_error_name(ATA_TRK0NF),		\
120255c03d1SHannes Reinecke 		ata_error_name(ATA_AMNF))
121255c03d1SHannes Reinecke 
122255c03d1SHannes Reinecke #define ata_protocol_name(proto)	{ proto, #proto }
123255c03d1SHannes Reinecke #define show_protocol_name(val)				\
124255c03d1SHannes Reinecke 	__print_symbolic(val,				\
125255c03d1SHannes Reinecke 		ata_protocol_name(ATA_PROT_UNKNOWN),	\
126255c03d1SHannes Reinecke 		ata_protocol_name(ATA_PROT_NODATA),	\
127255c03d1SHannes Reinecke 		ata_protocol_name(ATA_PROT_PIO),	\
128255c03d1SHannes Reinecke 		ata_protocol_name(ATA_PROT_DMA),	\
129255c03d1SHannes Reinecke 		ata_protocol_name(ATA_PROT_NCQ),	\
1305b844b63SHannes Reinecke 		ata_protocol_name(ATA_PROT_NCQ_NODATA),	\
131255c03d1SHannes Reinecke 		ata_protocol_name(ATAPI_PROT_NODATA),	\
132255c03d1SHannes Reinecke 		ata_protocol_name(ATAPI_PROT_PIO),	\
133255c03d1SHannes Reinecke 		ata_protocol_name(ATAPI_PROT_DMA))
134255c03d1SHannes Reinecke 
135f8ec26d0SHannes Reinecke #define ata_class_name(class)	{ class, #class }
136f8ec26d0SHannes Reinecke #define show_class_name(val)				\
137f8ec26d0SHannes Reinecke 	__print_symbolic(val,				\
138f8ec26d0SHannes Reinecke 		ata_class_name(ATA_DEV_UNKNOWN),	\
139f8ec26d0SHannes Reinecke 		ata_class_name(ATA_DEV_ATA),		\
140f8ec26d0SHannes Reinecke 		ata_class_name(ATA_DEV_ATA_UNSUP),	\
141f8ec26d0SHannes Reinecke 		ata_class_name(ATA_DEV_ATAPI),		\
142f8ec26d0SHannes Reinecke 		ata_class_name(ATA_DEV_ATAPI_UNSUP),	\
143f8ec26d0SHannes Reinecke 		ata_class_name(ATA_DEV_PMP),		\
144f8ec26d0SHannes Reinecke 		ata_class_name(ATA_DEV_PMP_UNSUP),	\
145f8ec26d0SHannes Reinecke 		ata_class_name(ATA_DEV_SEMB),		\
146f8ec26d0SHannes Reinecke 		ata_class_name(ATA_DEV_SEMB_UNSUP),	\
147f8ec26d0SHannes Reinecke 		ata_class_name(ATA_DEV_ZAC),		\
148f8ec26d0SHannes Reinecke 		ata_class_name(ATA_DEV_ZAC_UNSUP),	\
149f8ec26d0SHannes Reinecke 		ata_class_name(ATA_DEV_NONE))
150f8ec26d0SHannes Reinecke 
1517fad6ad6SHannes Reinecke #define ata_sff_hsm_state_name(state)	{ state, #state }
1527fad6ad6SHannes Reinecke #define show_sff_hsm_state_name(val)				\
1537fad6ad6SHannes Reinecke     __print_symbolic(val,				\
1547fad6ad6SHannes Reinecke 		ata_sff_hsm_state_name(HSM_ST_IDLE),	\
1557fad6ad6SHannes Reinecke 		ata_sff_hsm_state_name(HSM_ST_FIRST),	\
1567fad6ad6SHannes Reinecke 		ata_sff_hsm_state_name(HSM_ST),		\
1577fad6ad6SHannes Reinecke 		ata_sff_hsm_state_name(HSM_ST_LAST),	\
1587fad6ad6SHannes Reinecke 		ata_sff_hsm_state_name(HSM_ST_ERR))
1597fad6ad6SHannes Reinecke 
160255c03d1SHannes Reinecke const char *libata_trace_parse_status(struct trace_seq*, unsigned char);
161255c03d1SHannes Reinecke #define __parse_status(s) libata_trace_parse_status(p, s)
162255c03d1SHannes Reinecke 
163c206a389SHannes Reinecke const char *libata_trace_parse_host_stat(struct trace_seq *, unsigned char);
164c206a389SHannes Reinecke #define __parse_host_stat(s) libata_trace_parse_host_stat(p, s)
165c206a389SHannes Reinecke 
166255c03d1SHannes Reinecke const char *libata_trace_parse_eh_action(struct trace_seq *, unsigned int);
167255c03d1SHannes Reinecke #define __parse_eh_action(a) libata_trace_parse_eh_action(p, a)
168255c03d1SHannes Reinecke 
169255c03d1SHannes Reinecke const char *libata_trace_parse_eh_err_mask(struct trace_seq *, unsigned int);
170255c03d1SHannes Reinecke #define __parse_eh_err_mask(m) libata_trace_parse_eh_err_mask(p, m)
171255c03d1SHannes Reinecke 
172255c03d1SHannes Reinecke const char *libata_trace_parse_qc_flags(struct trace_seq *, unsigned int);
173255c03d1SHannes Reinecke #define __parse_qc_flags(f) libata_trace_parse_qc_flags(p, f)
174255c03d1SHannes Reinecke 
1757fad6ad6SHannes Reinecke const char *libata_trace_parse_tf_flags(struct trace_seq *, unsigned int);
1767fad6ad6SHannes Reinecke #define __parse_tf_flags(f) libata_trace_parse_tf_flags(p, f)
1777fad6ad6SHannes Reinecke 
178a5703849SHannes Reinecke const char *libata_trace_parse_subcmd(struct trace_seq *, unsigned char,
179a5703849SHannes Reinecke 				      unsigned char, unsigned char);
180a5703849SHannes Reinecke #define __parse_subcmd(c,f,h) libata_trace_parse_subcmd(p, c, f, h)
181a5703849SHannes Reinecke 
182fc914faaSHannes Reinecke DECLARE_EVENT_CLASS(ata_qc_issue_template,
183255c03d1SHannes Reinecke 
184255c03d1SHannes Reinecke 	TP_PROTO(struct ata_queued_cmd *qc),
185255c03d1SHannes Reinecke 
186255c03d1SHannes Reinecke 	TP_ARGS(qc),
187255c03d1SHannes Reinecke 
188255c03d1SHannes Reinecke 	TP_STRUCT__entry(
189255c03d1SHannes Reinecke 		__field( unsigned int,	ata_port )
190255c03d1SHannes Reinecke 		__field( unsigned int,	ata_dev	)
191255c03d1SHannes Reinecke 		__field( unsigned int,	tag	)
192255c03d1SHannes Reinecke 		__field( unsigned char,	cmd	)
193255c03d1SHannes Reinecke 		__field( unsigned char,	dev	)
194255c03d1SHannes Reinecke 		__field( unsigned char,	lbal	)
195255c03d1SHannes Reinecke 		__field( unsigned char,	lbam	)
196255c03d1SHannes Reinecke 		__field( unsigned char,	lbah	)
197255c03d1SHannes Reinecke 		__field( unsigned char,	nsect	)
198255c03d1SHannes Reinecke 		__field( unsigned char,	feature	)
199255c03d1SHannes Reinecke 		__field( unsigned char,	hob_lbal )
200255c03d1SHannes Reinecke 		__field( unsigned char,	hob_lbam )
201255c03d1SHannes Reinecke 		__field( unsigned char,	hob_lbah )
202255c03d1SHannes Reinecke 		__field( unsigned char,	hob_nsect )
203255c03d1SHannes Reinecke 		__field( unsigned char,	hob_feature )
204255c03d1SHannes Reinecke 		__field( unsigned char,	ctl )
205255c03d1SHannes Reinecke 		__field( unsigned char,	proto )
206255c03d1SHannes Reinecke 		__field( unsigned long,	flags )
207255c03d1SHannes Reinecke 	),
208255c03d1SHannes Reinecke 
209255c03d1SHannes Reinecke 	TP_fast_assign(
210255c03d1SHannes Reinecke 		__entry->ata_port	= qc->ap->print_id;
211255c03d1SHannes Reinecke 		__entry->ata_dev	= qc->dev->link->pmp + qc->dev->devno;
212255c03d1SHannes Reinecke 		__entry->tag		= qc->tag;
213255c03d1SHannes Reinecke 		__entry->proto		= qc->tf.protocol;
214255c03d1SHannes Reinecke 		__entry->cmd		= qc->tf.command;
215255c03d1SHannes Reinecke 		__entry->dev		= qc->tf.device;
216255c03d1SHannes Reinecke 		__entry->lbal		= qc->tf.lbal;
217255c03d1SHannes Reinecke 		__entry->lbam		= qc->tf.lbam;
218255c03d1SHannes Reinecke 		__entry->lbah		= qc->tf.lbah;
219255c03d1SHannes Reinecke 		__entry->hob_lbal	= qc->tf.hob_lbal;
220255c03d1SHannes Reinecke 		__entry->hob_lbam	= qc->tf.hob_lbam;
221255c03d1SHannes Reinecke 		__entry->hob_lbah	= qc->tf.hob_lbah;
222255c03d1SHannes Reinecke 		__entry->feature	= qc->tf.feature;
223255c03d1SHannes Reinecke 		__entry->hob_feature	= qc->tf.hob_feature;
224255c03d1SHannes Reinecke 		__entry->nsect		= qc->tf.nsect;
225255c03d1SHannes Reinecke 		__entry->hob_nsect	= qc->tf.hob_nsect;
226255c03d1SHannes Reinecke 	),
227255c03d1SHannes Reinecke 
228a5703849SHannes Reinecke 	TP_printk("ata_port=%u ata_dev=%u tag=%d proto=%s cmd=%s%s " \
229255c03d1SHannes Reinecke 		  " tf=(%02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x)",
230255c03d1SHannes Reinecke 		  __entry->ata_port, __entry->ata_dev, __entry->tag,
231255c03d1SHannes Reinecke 		  show_protocol_name(__entry->proto),
232255c03d1SHannes Reinecke 		  show_opcode_name(__entry->cmd),
233a5703849SHannes Reinecke 		  __parse_subcmd(__entry->cmd, __entry->feature, __entry->hob_nsect),
234255c03d1SHannes Reinecke 		  __entry->cmd, __entry->feature, __entry->nsect,
235255c03d1SHannes Reinecke 		  __entry->lbal, __entry->lbam, __entry->lbah,
236255c03d1SHannes Reinecke 		  __entry->hob_feature, __entry->hob_nsect,
237255c03d1SHannes Reinecke 		  __entry->hob_lbal, __entry->hob_lbam, __entry->hob_lbah,
238255c03d1SHannes Reinecke 		  __entry->dev)
239255c03d1SHannes Reinecke );
240255c03d1SHannes Reinecke 
241fc914faaSHannes Reinecke DEFINE_EVENT(ata_qc_issue_template, ata_qc_prep,
242fc914faaSHannes Reinecke 	     TP_PROTO(struct ata_queued_cmd *qc),
243fc914faaSHannes Reinecke 	     TP_ARGS(qc));
244fc914faaSHannes Reinecke 
245fc914faaSHannes Reinecke DEFINE_EVENT(ata_qc_issue_template, ata_qc_issue,
246fc914faaSHannes Reinecke 	     TP_PROTO(struct ata_queued_cmd *qc),
247fc914faaSHannes Reinecke 	     TP_ARGS(qc));
248fc914faaSHannes Reinecke 
249255c03d1SHannes Reinecke DECLARE_EVENT_CLASS(ata_qc_complete_template,
250255c03d1SHannes Reinecke 
251255c03d1SHannes Reinecke 	TP_PROTO(struct ata_queued_cmd *qc),
252255c03d1SHannes Reinecke 
253255c03d1SHannes Reinecke 	TP_ARGS(qc),
254255c03d1SHannes Reinecke 
255255c03d1SHannes Reinecke 	TP_STRUCT__entry(
256255c03d1SHannes Reinecke 		__field( unsigned int,	ata_port )
257255c03d1SHannes Reinecke 		__field( unsigned int,	ata_dev	)
258255c03d1SHannes Reinecke 		__field( unsigned int,	tag	)
259255c03d1SHannes Reinecke 		__field( unsigned char,	status	)
260255c03d1SHannes Reinecke 		__field( unsigned char,	dev	)
261255c03d1SHannes Reinecke 		__field( unsigned char,	lbal	)
262255c03d1SHannes Reinecke 		__field( unsigned char,	lbam	)
263255c03d1SHannes Reinecke 		__field( unsigned char,	lbah	)
264255c03d1SHannes Reinecke 		__field( unsigned char,	nsect	)
265255c03d1SHannes Reinecke 		__field( unsigned char,	error	)
266255c03d1SHannes Reinecke 		__field( unsigned char,	hob_lbal )
267255c03d1SHannes Reinecke 		__field( unsigned char,	hob_lbam )
268255c03d1SHannes Reinecke 		__field( unsigned char,	hob_lbah )
269255c03d1SHannes Reinecke 		__field( unsigned char,	hob_nsect )
270255c03d1SHannes Reinecke 		__field( unsigned char,	hob_feature )
271255c03d1SHannes Reinecke 		__field( unsigned char,	ctl )
272255c03d1SHannes Reinecke 		__field( unsigned long,	flags )
273255c03d1SHannes Reinecke 	),
274255c03d1SHannes Reinecke 
275255c03d1SHannes Reinecke 	TP_fast_assign(
276255c03d1SHannes Reinecke 		__entry->ata_port	= qc->ap->print_id;
277255c03d1SHannes Reinecke 		__entry->ata_dev	= qc->dev->link->pmp + qc->dev->devno;
278255c03d1SHannes Reinecke 		__entry->tag		= qc->tag;
279255c03d1SHannes Reinecke 		__entry->status		= qc->result_tf.command;
280255c03d1SHannes Reinecke 		__entry->dev		= qc->result_tf.device;
281255c03d1SHannes Reinecke 		__entry->lbal		= qc->result_tf.lbal;
282255c03d1SHannes Reinecke 		__entry->lbam		= qc->result_tf.lbam;
283255c03d1SHannes Reinecke 		__entry->lbah		= qc->result_tf.lbah;
284255c03d1SHannes Reinecke 		__entry->hob_lbal	= qc->result_tf.hob_lbal;
285255c03d1SHannes Reinecke 		__entry->hob_lbam	= qc->result_tf.hob_lbam;
286255c03d1SHannes Reinecke 		__entry->hob_lbah	= qc->result_tf.hob_lbah;
287255c03d1SHannes Reinecke 		__entry->error		= qc->result_tf.feature;
288255c03d1SHannes Reinecke 		__entry->hob_feature	= qc->result_tf.hob_feature;
289255c03d1SHannes Reinecke 		__entry->nsect		= qc->result_tf.nsect;
290255c03d1SHannes Reinecke 		__entry->hob_nsect	= qc->result_tf.hob_nsect;
291*540a92bfSEdward Wu 		__entry->flags		= qc->flags;
292255c03d1SHannes Reinecke 	),
293255c03d1SHannes Reinecke 
294255c03d1SHannes Reinecke 	TP_printk("ata_port=%u ata_dev=%u tag=%d flags=%s status=%s " \
295255c03d1SHannes Reinecke 		  " res=(%02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x)",
296255c03d1SHannes Reinecke 		  __entry->ata_port, __entry->ata_dev, __entry->tag,
297255c03d1SHannes Reinecke 		  __parse_qc_flags(__entry->flags),
298255c03d1SHannes Reinecke 		  __parse_status(__entry->status),
299255c03d1SHannes Reinecke 		  __entry->status, __entry->error, __entry->nsect,
300255c03d1SHannes Reinecke 		  __entry->lbal, __entry->lbam, __entry->lbah,
301255c03d1SHannes Reinecke 		  __entry->hob_feature, __entry->hob_nsect,
302255c03d1SHannes Reinecke 		  __entry->hob_lbal, __entry->hob_lbam, __entry->hob_lbah,
303255c03d1SHannes Reinecke 		  __entry->dev)
304255c03d1SHannes Reinecke );
305255c03d1SHannes Reinecke 
306255c03d1SHannes Reinecke DEFINE_EVENT(ata_qc_complete_template, ata_qc_complete_internal,
307255c03d1SHannes Reinecke 	     TP_PROTO(struct ata_queued_cmd *qc),
308255c03d1SHannes Reinecke 	     TP_ARGS(qc));
309255c03d1SHannes Reinecke 
310255c03d1SHannes Reinecke DEFINE_EVENT(ata_qc_complete_template, ata_qc_complete_failed,
311255c03d1SHannes Reinecke 	     TP_PROTO(struct ata_queued_cmd *qc),
312255c03d1SHannes Reinecke 	     TP_ARGS(qc));
313255c03d1SHannes Reinecke 
314255c03d1SHannes Reinecke DEFINE_EVENT(ata_qc_complete_template, ata_qc_complete_done,
315255c03d1SHannes Reinecke 	     TP_PROTO(struct ata_queued_cmd *qc),
316255c03d1SHannes Reinecke 	     TP_ARGS(qc));
317255c03d1SHannes Reinecke 
318c206a389SHannes Reinecke TRACE_EVENT(ata_tf_load,
319c206a389SHannes Reinecke 
320c206a389SHannes Reinecke 	TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf),
321c206a389SHannes Reinecke 
322c206a389SHannes Reinecke 	TP_ARGS(ap, tf),
323c206a389SHannes Reinecke 
324c206a389SHannes Reinecke 	TP_STRUCT__entry(
325c206a389SHannes Reinecke 		__field( unsigned int,	ata_port )
326c206a389SHannes Reinecke 		__field( unsigned char,	cmd	)
327c206a389SHannes Reinecke 		__field( unsigned char,	dev	)
328c206a389SHannes Reinecke 		__field( unsigned char,	lbal	)
329c206a389SHannes Reinecke 		__field( unsigned char,	lbam	)
330c206a389SHannes Reinecke 		__field( unsigned char,	lbah	)
331c206a389SHannes Reinecke 		__field( unsigned char,	nsect	)
332c206a389SHannes Reinecke 		__field( unsigned char,	feature	)
333c206a389SHannes Reinecke 		__field( unsigned char,	hob_lbal )
334c206a389SHannes Reinecke 		__field( unsigned char,	hob_lbam )
335c206a389SHannes Reinecke 		__field( unsigned char,	hob_lbah )
336c206a389SHannes Reinecke 		__field( unsigned char,	hob_nsect )
337c206a389SHannes Reinecke 		__field( unsigned char,	hob_feature )
338c206a389SHannes Reinecke 		__field( unsigned char,	proto	)
339c206a389SHannes Reinecke 	),
340c206a389SHannes Reinecke 
341c206a389SHannes Reinecke 	TP_fast_assign(
342c206a389SHannes Reinecke 		__entry->ata_port	= ap->print_id;
343c206a389SHannes Reinecke 		__entry->proto		= tf->protocol;
344c206a389SHannes Reinecke 		__entry->cmd		= tf->command;
345c206a389SHannes Reinecke 		__entry->dev		= tf->device;
346c206a389SHannes Reinecke 		__entry->lbal		= tf->lbal;
347c206a389SHannes Reinecke 		__entry->lbam		= tf->lbam;
348c206a389SHannes Reinecke 		__entry->lbah		= tf->lbah;
349c206a389SHannes Reinecke 		__entry->hob_lbal	= tf->hob_lbal;
350c206a389SHannes Reinecke 		__entry->hob_lbam	= tf->hob_lbam;
351c206a389SHannes Reinecke 		__entry->hob_lbah	= tf->hob_lbah;
352c206a389SHannes Reinecke 		__entry->feature	= tf->feature;
353c206a389SHannes Reinecke 		__entry->hob_feature	= tf->hob_feature;
354c206a389SHannes Reinecke 		__entry->nsect		= tf->nsect;
355c206a389SHannes Reinecke 		__entry->hob_nsect	= tf->hob_nsect;
356c206a389SHannes Reinecke 	),
357c206a389SHannes Reinecke 
358c206a389SHannes Reinecke 	TP_printk("ata_port=%u proto=%s cmd=%s%s " \
359c206a389SHannes Reinecke 		  " tf=(%02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x)",
360c206a389SHannes Reinecke 		  __entry->ata_port,
361c206a389SHannes Reinecke 		  show_protocol_name(__entry->proto),
362c206a389SHannes Reinecke 		  show_opcode_name(__entry->cmd),
363c206a389SHannes Reinecke 		  __parse_subcmd(__entry->cmd, __entry->feature, __entry->hob_nsect),
364c206a389SHannes Reinecke 		  __entry->cmd, __entry->feature, __entry->nsect,
365c206a389SHannes Reinecke 		  __entry->lbal, __entry->lbam, __entry->lbah,
366c206a389SHannes Reinecke 		  __entry->hob_feature, __entry->hob_nsect,
367c206a389SHannes Reinecke 		  __entry->hob_lbal, __entry->hob_lbam, __entry->hob_lbah,
368c206a389SHannes Reinecke 		  __entry->dev)
369c206a389SHannes Reinecke );
370c206a389SHannes Reinecke 
371c206a389SHannes Reinecke DECLARE_EVENT_CLASS(ata_exec_command_template,
372c206a389SHannes Reinecke 
373c206a389SHannes Reinecke 	TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
374c206a389SHannes Reinecke 
375c206a389SHannes Reinecke 	TP_ARGS(ap, tf, tag),
376c206a389SHannes Reinecke 
377c206a389SHannes Reinecke 	TP_STRUCT__entry(
378c206a389SHannes Reinecke 		__field( unsigned int,	ata_port )
379c206a389SHannes Reinecke 		__field( unsigned int,	tag	)
380c206a389SHannes Reinecke 		__field( unsigned char,	cmd	)
381c206a389SHannes Reinecke 		__field( unsigned char,	feature	)
382c206a389SHannes Reinecke 		__field( unsigned char,	hob_nsect )
383c206a389SHannes Reinecke 		__field( unsigned char,	proto	)
384c206a389SHannes Reinecke 	),
385c206a389SHannes Reinecke 
386c206a389SHannes Reinecke 	TP_fast_assign(
387c206a389SHannes Reinecke 		__entry->ata_port	= ap->print_id;
388c206a389SHannes Reinecke 		__entry->tag		= tag;
389c206a389SHannes Reinecke 		__entry->proto		= tf->protocol;
390c206a389SHannes Reinecke 		__entry->cmd		= tf->command;
391c206a389SHannes Reinecke 		__entry->feature	= tf->feature;
392c206a389SHannes Reinecke 		__entry->hob_nsect	= tf->hob_nsect;
393c206a389SHannes Reinecke 	),
394c206a389SHannes Reinecke 
395c206a389SHannes Reinecke 	TP_printk("ata_port=%u tag=%d proto=%s cmd=%s%s",
396c206a389SHannes Reinecke 		  __entry->ata_port, __entry->tag,
397c206a389SHannes Reinecke 		  show_protocol_name(__entry->proto),
398c206a389SHannes Reinecke 		  show_opcode_name(__entry->cmd),
399c206a389SHannes Reinecke 		  __parse_subcmd(__entry->cmd, __entry->feature, __entry->hob_nsect))
400c206a389SHannes Reinecke );
401c206a389SHannes Reinecke 
402c206a389SHannes Reinecke DEFINE_EVENT(ata_exec_command_template, ata_exec_command,
403c206a389SHannes Reinecke 	     TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
404c206a389SHannes Reinecke 	     TP_ARGS(ap, tf, tag));
405c206a389SHannes Reinecke 
406c206a389SHannes Reinecke DEFINE_EVENT(ata_exec_command_template, ata_bmdma_setup,
407c206a389SHannes Reinecke 	     TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
408c206a389SHannes Reinecke 	     TP_ARGS(ap, tf, tag));
409c206a389SHannes Reinecke 
410c206a389SHannes Reinecke DEFINE_EVENT(ata_exec_command_template, ata_bmdma_start,
411c206a389SHannes Reinecke 	     TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
412c206a389SHannes Reinecke 	     TP_ARGS(ap, tf, tag));
413c206a389SHannes Reinecke 
414c206a389SHannes Reinecke DEFINE_EVENT(ata_exec_command_template, ata_bmdma_stop,
415c206a389SHannes Reinecke 	     TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
416c206a389SHannes Reinecke 	     TP_ARGS(ap, tf, tag));
417c206a389SHannes Reinecke 
418c206a389SHannes Reinecke TRACE_EVENT(ata_bmdma_status,
419c206a389SHannes Reinecke 
420c206a389SHannes Reinecke 	TP_PROTO(struct ata_port *ap, unsigned int host_stat),
421c206a389SHannes Reinecke 
422c206a389SHannes Reinecke 	TP_ARGS(ap, host_stat),
423c206a389SHannes Reinecke 
424c206a389SHannes Reinecke 	TP_STRUCT__entry(
425c206a389SHannes Reinecke 		__field( unsigned int,	ata_port )
426c206a389SHannes Reinecke 		__field( unsigned int,	tag	)
427c206a389SHannes Reinecke 		__field( unsigned char,	host_stat )
428c206a389SHannes Reinecke 	),
429c206a389SHannes Reinecke 
430c206a389SHannes Reinecke 	TP_fast_assign(
431c206a389SHannes Reinecke 		__entry->ata_port	= ap->print_id;
432c206a389SHannes Reinecke 		__entry->host_stat	= host_stat;
433c206a389SHannes Reinecke 	),
434c206a389SHannes Reinecke 
435c206a389SHannes Reinecke 	TP_printk("ata_port=%u host_stat=%s",
436c206a389SHannes Reinecke 		  __entry->ata_port,
437c206a389SHannes Reinecke 		  __parse_host_stat(__entry->host_stat))
438c206a389SHannes Reinecke );
439c206a389SHannes Reinecke 
440255c03d1SHannes Reinecke TRACE_EVENT(ata_eh_link_autopsy,
441255c03d1SHannes Reinecke 
442255c03d1SHannes Reinecke 	TP_PROTO(struct ata_device *dev, unsigned int eh_action, unsigned int eh_err_mask),
443255c03d1SHannes Reinecke 
444255c03d1SHannes Reinecke 	TP_ARGS(dev, eh_action, eh_err_mask),
445255c03d1SHannes Reinecke 
446255c03d1SHannes Reinecke 	TP_STRUCT__entry(
447255c03d1SHannes Reinecke 		__field( unsigned int,	ata_port )
448255c03d1SHannes Reinecke 		__field( unsigned int,	ata_dev	)
449255c03d1SHannes Reinecke 		__field( unsigned int,	eh_action )
450255c03d1SHannes Reinecke 		__field( unsigned int,	eh_err_mask)
451255c03d1SHannes Reinecke 	),
452255c03d1SHannes Reinecke 
453255c03d1SHannes Reinecke 	TP_fast_assign(
454255c03d1SHannes Reinecke 		__entry->ata_port	= dev->link->ap->print_id;
455255c03d1SHannes Reinecke 		__entry->ata_dev	= dev->link->pmp + dev->devno;
456255c03d1SHannes Reinecke 		__entry->eh_action	= eh_action;
457255c03d1SHannes Reinecke 		__entry->eh_err_mask	= eh_err_mask;
458255c03d1SHannes Reinecke 	),
459255c03d1SHannes Reinecke 
460255c03d1SHannes Reinecke 	TP_printk("ata_port=%u ata_dev=%u eh_action=%s err_mask=%s",
461255c03d1SHannes Reinecke 		  __entry->ata_port, __entry->ata_dev,
462255c03d1SHannes Reinecke 		  __parse_eh_action(__entry->eh_action),
463255c03d1SHannes Reinecke 		  __parse_eh_err_mask(__entry->eh_err_mask))
464255c03d1SHannes Reinecke );
465255c03d1SHannes Reinecke 
466255c03d1SHannes Reinecke TRACE_EVENT(ata_eh_link_autopsy_qc,
467255c03d1SHannes Reinecke 
468255c03d1SHannes Reinecke 	TP_PROTO(struct ata_queued_cmd *qc),
469255c03d1SHannes Reinecke 
470255c03d1SHannes Reinecke 	TP_ARGS(qc),
471255c03d1SHannes Reinecke 
472255c03d1SHannes Reinecke 	TP_STRUCT__entry(
473255c03d1SHannes Reinecke 		__field( unsigned int,	ata_port )
474255c03d1SHannes Reinecke 		__field( unsigned int,	ata_dev	)
475255c03d1SHannes Reinecke 		__field( unsigned int,	tag	)
476255c03d1SHannes Reinecke 		__field( unsigned int,	qc_flags )
477255c03d1SHannes Reinecke 		__field( unsigned int,	eh_err_mask)
478255c03d1SHannes Reinecke 	),
479255c03d1SHannes Reinecke 
480255c03d1SHannes Reinecke 	TP_fast_assign(
481255c03d1SHannes Reinecke 		__entry->ata_port	= qc->ap->print_id;
482255c03d1SHannes Reinecke 		__entry->ata_dev	= qc->dev->link->pmp + qc->dev->devno;
483255c03d1SHannes Reinecke 		__entry->tag		= qc->tag;
484255c03d1SHannes Reinecke 		__entry->qc_flags	= qc->flags;
485255c03d1SHannes Reinecke 		__entry->eh_err_mask	= qc->err_mask;
486255c03d1SHannes Reinecke 	),
487255c03d1SHannes Reinecke 
488255c03d1SHannes Reinecke 	TP_printk("ata_port=%u ata_dev=%u tag=%d flags=%s err_mask=%s",
489255c03d1SHannes Reinecke 		  __entry->ata_port, __entry->ata_dev, __entry->tag,
490255c03d1SHannes Reinecke 		  __parse_qc_flags(__entry->qc_flags),
491255c03d1SHannes Reinecke 		  __parse_eh_err_mask(__entry->eh_err_mask))
492255c03d1SHannes Reinecke );
493255c03d1SHannes Reinecke 
494c318458cSHannes Reinecke DECLARE_EVENT_CLASS(ata_eh_action_template,
495c318458cSHannes Reinecke 
496c318458cSHannes Reinecke 	TP_PROTO(struct ata_link *link, unsigned int devno, unsigned int eh_action),
497c318458cSHannes Reinecke 
498c318458cSHannes Reinecke 	TP_ARGS(link, devno, eh_action),
499c318458cSHannes Reinecke 
500c318458cSHannes Reinecke 	TP_STRUCT__entry(
501c318458cSHannes Reinecke 		__field( unsigned int,	ata_port )
502c318458cSHannes Reinecke 		__field( unsigned int,	ata_dev	)
503c318458cSHannes Reinecke 		__field( unsigned int,	eh_action )
504c318458cSHannes Reinecke 	),
505c318458cSHannes Reinecke 
506c318458cSHannes Reinecke 	TP_fast_assign(
507c318458cSHannes Reinecke 		__entry->ata_port	= link->ap->print_id;
508c318458cSHannes Reinecke 		__entry->ata_dev	= link->pmp + devno;
509c318458cSHannes Reinecke 		__entry->eh_action	= eh_action;
510c318458cSHannes Reinecke 	),
511c318458cSHannes Reinecke 
512c318458cSHannes Reinecke 	TP_printk("ata_port=%u ata_dev=%u eh_action=%s",
513c318458cSHannes Reinecke 		  __entry->ata_port, __entry->ata_dev,
514c318458cSHannes Reinecke 		  __parse_eh_action(__entry->eh_action))
515c318458cSHannes Reinecke );
516c318458cSHannes Reinecke 
517c318458cSHannes Reinecke DEFINE_EVENT(ata_eh_action_template, ata_eh_about_to_do,
518c318458cSHannes Reinecke 	     TP_PROTO(struct ata_link *link, unsigned int devno, unsigned int eh_action),
519c318458cSHannes Reinecke 	     TP_ARGS(link, devno, eh_action));
520c318458cSHannes Reinecke 
521c318458cSHannes Reinecke DEFINE_EVENT(ata_eh_action_template, ata_eh_done,
522c318458cSHannes Reinecke 	     TP_PROTO(struct ata_link *link, unsigned int devno, unsigned int eh_action),
523c318458cSHannes Reinecke 	     TP_ARGS(link, devno, eh_action));
524c318458cSHannes Reinecke 
525f8ec26d0SHannes Reinecke DECLARE_EVENT_CLASS(ata_link_reset_begin_template,
526f8ec26d0SHannes Reinecke 
527f8ec26d0SHannes Reinecke 	TP_PROTO(struct ata_link *link, unsigned int *class, unsigned long deadline),
528f8ec26d0SHannes Reinecke 
529f8ec26d0SHannes Reinecke 	TP_ARGS(link, class, deadline),
530f8ec26d0SHannes Reinecke 
531f8ec26d0SHannes Reinecke 	TP_STRUCT__entry(
532f8ec26d0SHannes Reinecke 		__field( unsigned int,	ata_port )
533f8ec26d0SHannes Reinecke 		__array( unsigned int,	class, 2 )
534f8ec26d0SHannes Reinecke 		__field( unsigned long,	deadline )
535f8ec26d0SHannes Reinecke 	),
536f8ec26d0SHannes Reinecke 
537f8ec26d0SHannes Reinecke 	TP_fast_assign(
538f8ec26d0SHannes Reinecke 		__entry->ata_port	= link->ap->print_id;
539f8ec26d0SHannes Reinecke 		memcpy(__entry->class, class, 2);
540f8ec26d0SHannes Reinecke 		__entry->deadline	= deadline;
541f8ec26d0SHannes Reinecke 	),
542f8ec26d0SHannes Reinecke 
543f8ec26d0SHannes Reinecke 	TP_printk("ata_port=%u deadline=%lu classes=[%s,%s]",
544f8ec26d0SHannes Reinecke 		  __entry->ata_port, __entry->deadline,
545f8ec26d0SHannes Reinecke 		  show_class_name(__entry->class[0]),
546f8ec26d0SHannes Reinecke 		  show_class_name(__entry->class[1]))
547f8ec26d0SHannes Reinecke );
548f8ec26d0SHannes Reinecke 
549f8ec26d0SHannes Reinecke DEFINE_EVENT(ata_link_reset_begin_template, ata_link_hardreset_begin,
550f8ec26d0SHannes Reinecke 	     TP_PROTO(struct ata_link *link, unsigned int *class, unsigned long deadline),
551f8ec26d0SHannes Reinecke 	     TP_ARGS(link, class, deadline));
552f8ec26d0SHannes Reinecke 
553f8ec26d0SHannes Reinecke DEFINE_EVENT(ata_link_reset_begin_template, ata_slave_hardreset_begin,
554f8ec26d0SHannes Reinecke 	     TP_PROTO(struct ata_link *link, unsigned int *class, unsigned long deadline),
555f8ec26d0SHannes Reinecke 	     TP_ARGS(link, class, deadline));
556f8ec26d0SHannes Reinecke 
557f8ec26d0SHannes Reinecke DEFINE_EVENT(ata_link_reset_begin_template, ata_link_softreset_begin,
558f8ec26d0SHannes Reinecke 	     TP_PROTO(struct ata_link *link, unsigned int *class, unsigned long deadline),
559f8ec26d0SHannes Reinecke 	     TP_ARGS(link, class, deadline));
560f8ec26d0SHannes Reinecke 
561f8ec26d0SHannes Reinecke DECLARE_EVENT_CLASS(ata_link_reset_end_template,
562f8ec26d0SHannes Reinecke 
563f8ec26d0SHannes Reinecke 	TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
564f8ec26d0SHannes Reinecke 
565f8ec26d0SHannes Reinecke 	TP_ARGS(link, class, rc),
566f8ec26d0SHannes Reinecke 
567f8ec26d0SHannes Reinecke 	TP_STRUCT__entry(
568f8ec26d0SHannes Reinecke 		__field( unsigned int,	ata_port )
569f8ec26d0SHannes Reinecke 		__array( unsigned int,	class, 2 )
570f8ec26d0SHannes Reinecke 		__field( int,		rc	)
571f8ec26d0SHannes Reinecke 	),
572f8ec26d0SHannes Reinecke 
573f8ec26d0SHannes Reinecke 	TP_fast_assign(
574f8ec26d0SHannes Reinecke 		__entry->ata_port	= link->ap->print_id;
575f8ec26d0SHannes Reinecke 		memcpy(__entry->class, class, 2);
576f8ec26d0SHannes Reinecke 		__entry->rc		= rc;
577f8ec26d0SHannes Reinecke 	),
578f8ec26d0SHannes Reinecke 
579f8ec26d0SHannes Reinecke 	TP_printk("ata_port=%u rc=%d class=[%s,%s]",
580f8ec26d0SHannes Reinecke 		  __entry->ata_port, __entry->rc,
581f8ec26d0SHannes Reinecke 		  show_class_name(__entry->class[0]),
582f8ec26d0SHannes Reinecke 		  show_class_name(__entry->class[1]))
583f8ec26d0SHannes Reinecke );
584f8ec26d0SHannes Reinecke 
585f8ec26d0SHannes Reinecke DEFINE_EVENT(ata_link_reset_end_template, ata_link_hardreset_end,
586f8ec26d0SHannes Reinecke 	     TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
587f8ec26d0SHannes Reinecke 	     TP_ARGS(link, class, rc));
588f8ec26d0SHannes Reinecke 
589f8ec26d0SHannes Reinecke DEFINE_EVENT(ata_link_reset_end_template, ata_slave_hardreset_end,
590f8ec26d0SHannes Reinecke 	     TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
591f8ec26d0SHannes Reinecke 	     TP_ARGS(link, class, rc));
592f8ec26d0SHannes Reinecke 
593f8ec26d0SHannes Reinecke DEFINE_EVENT(ata_link_reset_end_template, ata_link_softreset_end,
594f8ec26d0SHannes Reinecke 	     TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
595f8ec26d0SHannes Reinecke 	     TP_ARGS(link, class, rc));
596f8ec26d0SHannes Reinecke 
597f8ec26d0SHannes Reinecke DEFINE_EVENT(ata_link_reset_end_template, ata_link_postreset,
598f8ec26d0SHannes Reinecke 	     TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
599f8ec26d0SHannes Reinecke 	     TP_ARGS(link, class, rc));
600f8ec26d0SHannes Reinecke 
601f8ec26d0SHannes Reinecke DEFINE_EVENT(ata_link_reset_end_template, ata_slave_postreset,
602f8ec26d0SHannes Reinecke 	     TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
603f8ec26d0SHannes Reinecke 	     TP_ARGS(link, class, rc));
604f8ec26d0SHannes Reinecke 
605c318458cSHannes Reinecke DECLARE_EVENT_CLASS(ata_port_eh_begin_template,
606c318458cSHannes Reinecke 
607c318458cSHannes Reinecke 	TP_PROTO(struct ata_port *ap),
608c318458cSHannes Reinecke 
609c318458cSHannes Reinecke 	TP_ARGS(ap),
610c318458cSHannes Reinecke 
611c318458cSHannes Reinecke 	TP_STRUCT__entry(
612c318458cSHannes Reinecke 		__field( unsigned int,	ata_port )
613c318458cSHannes Reinecke 	),
614c318458cSHannes Reinecke 
615c318458cSHannes Reinecke 	TP_fast_assign(
616c318458cSHannes Reinecke 		__entry->ata_port	= ap->print_id;
617c318458cSHannes Reinecke 	),
618c318458cSHannes Reinecke 
619c318458cSHannes Reinecke 	TP_printk("ata_port=%u", __entry->ata_port)
620c318458cSHannes Reinecke );
621c318458cSHannes Reinecke 
622c318458cSHannes Reinecke DEFINE_EVENT(ata_port_eh_begin_template, ata_std_sched_eh,
623c318458cSHannes Reinecke 	     TP_PROTO(struct ata_port *ap),
624c318458cSHannes Reinecke 	     TP_ARGS(ap));
625c318458cSHannes Reinecke 
626c318458cSHannes Reinecke DEFINE_EVENT(ata_port_eh_begin_template, ata_port_freeze,
627c318458cSHannes Reinecke 	     TP_PROTO(struct ata_port *ap),
628c318458cSHannes Reinecke 	     TP_ARGS(ap));
629c318458cSHannes Reinecke 
630c318458cSHannes Reinecke DEFINE_EVENT(ata_port_eh_begin_template, ata_port_thaw,
631c318458cSHannes Reinecke 	     TP_PROTO(struct ata_port *ap),
632c318458cSHannes Reinecke 	     TP_ARGS(ap));
633c318458cSHannes Reinecke 
6347fad6ad6SHannes Reinecke DECLARE_EVENT_CLASS(ata_sff_hsm_template,
6357fad6ad6SHannes Reinecke 
6367fad6ad6SHannes Reinecke 	TP_PROTO(struct ata_queued_cmd *qc, unsigned char status),
6377fad6ad6SHannes Reinecke 
6387fad6ad6SHannes Reinecke 	TP_ARGS(qc, status),
6397fad6ad6SHannes Reinecke 
6407fad6ad6SHannes Reinecke 	TP_STRUCT__entry(
6417fad6ad6SHannes Reinecke 		__field( unsigned int,	ata_port )
6427fad6ad6SHannes Reinecke 		__field( unsigned int,	ata_dev	)
6437fad6ad6SHannes Reinecke 		__field( unsigned int,	tag	)
6447fad6ad6SHannes Reinecke 		__field( unsigned int,	qc_flags )
6457fad6ad6SHannes Reinecke 		__field( unsigned int,	protocol )
6467fad6ad6SHannes Reinecke 		__field( unsigned int,	hsm_state )
6477fad6ad6SHannes Reinecke 		__field( unsigned char,	dev_state )
6487fad6ad6SHannes Reinecke 	),
6497fad6ad6SHannes Reinecke 
6507fad6ad6SHannes Reinecke 	TP_fast_assign(
6517fad6ad6SHannes Reinecke 		__entry->ata_port	= qc->ap->print_id;
6527fad6ad6SHannes Reinecke 		__entry->ata_dev	= qc->dev->link->pmp + qc->dev->devno;
6537fad6ad6SHannes Reinecke 		__entry->tag		= qc->tag;
6547fad6ad6SHannes Reinecke 		__entry->qc_flags	= qc->flags;
6557fad6ad6SHannes Reinecke 		__entry->protocol	= qc->tf.protocol;
6567fad6ad6SHannes Reinecke 		__entry->hsm_state	= qc->ap->hsm_task_state;
6577fad6ad6SHannes Reinecke 		__entry->dev_state	= status;
6587fad6ad6SHannes Reinecke 	),
6597fad6ad6SHannes Reinecke 
6607fad6ad6SHannes Reinecke 	TP_printk("ata_port=%u ata_dev=%u tag=%d proto=%s flags=%s task_state=%s dev_stat=0x%X",
6617fad6ad6SHannes Reinecke 		  __entry->ata_port, __entry->ata_dev, __entry->tag,
6627fad6ad6SHannes Reinecke 		  show_protocol_name(__entry->protocol),
6637fad6ad6SHannes Reinecke 		  __parse_qc_flags(__entry->qc_flags),
6647fad6ad6SHannes Reinecke 		  show_sff_hsm_state_name(__entry->hsm_state),
6657fad6ad6SHannes Reinecke 		  __entry->dev_state)
6667fad6ad6SHannes Reinecke );
6677fad6ad6SHannes Reinecke 
6687fad6ad6SHannes Reinecke DEFINE_EVENT(ata_sff_hsm_template, ata_sff_hsm_state,
6697fad6ad6SHannes Reinecke 	TP_PROTO(struct ata_queued_cmd *qc, unsigned char state),
6707fad6ad6SHannes Reinecke 	TP_ARGS(qc, state));
6717fad6ad6SHannes Reinecke 
6727fad6ad6SHannes Reinecke DEFINE_EVENT(ata_sff_hsm_template, ata_sff_hsm_command_complete,
6737fad6ad6SHannes Reinecke 	TP_PROTO(struct ata_queued_cmd *qc, unsigned char state),
6747fad6ad6SHannes Reinecke 	TP_ARGS(qc, state));
6757fad6ad6SHannes Reinecke 
6767fad6ad6SHannes Reinecke DEFINE_EVENT(ata_sff_hsm_template, ata_sff_port_intr,
6777fad6ad6SHannes Reinecke 	TP_PROTO(struct ata_queued_cmd *qc, unsigned char state),
6787fad6ad6SHannes Reinecke 	TP_ARGS(qc, state));
6797fad6ad6SHannes Reinecke 
6807fad6ad6SHannes Reinecke DECLARE_EVENT_CLASS(ata_transfer_data_template,
6817fad6ad6SHannes Reinecke 
6827fad6ad6SHannes Reinecke 	TP_PROTO(struct ata_queued_cmd *qc, unsigned int offset, unsigned int count),
6837fad6ad6SHannes Reinecke 
6847fad6ad6SHannes Reinecke 	TP_ARGS(qc, offset, count),
6857fad6ad6SHannes Reinecke 
6867fad6ad6SHannes Reinecke 	TP_STRUCT__entry(
6877fad6ad6SHannes Reinecke 		__field( unsigned int,	ata_port )
6887fad6ad6SHannes Reinecke 		__field( unsigned int,	ata_dev	)
6897fad6ad6SHannes Reinecke 		__field( unsigned int,	tag	)
6907fad6ad6SHannes Reinecke 		__field( unsigned int,	flags	)
6917fad6ad6SHannes Reinecke 		__field( unsigned int,	offset	)
6927fad6ad6SHannes Reinecke 		__field( unsigned int,	bytes	)
6937fad6ad6SHannes Reinecke 	),
6947fad6ad6SHannes Reinecke 
6957fad6ad6SHannes Reinecke 	TP_fast_assign(
6967fad6ad6SHannes Reinecke 		__entry->ata_port	= qc->ap->print_id;
6977fad6ad6SHannes Reinecke 		__entry->ata_dev	= qc->dev->link->pmp + qc->dev->devno;
6987fad6ad6SHannes Reinecke 		__entry->tag		= qc->tag;
6997fad6ad6SHannes Reinecke 		__entry->flags		= qc->tf.flags;
7007fad6ad6SHannes Reinecke 		__entry->offset		= offset;
7017fad6ad6SHannes Reinecke 		__entry->bytes		= count;
7027fad6ad6SHannes Reinecke 	),
7037fad6ad6SHannes Reinecke 
7047fad6ad6SHannes Reinecke 	TP_printk("ata_port=%u ata_dev=%u tag=%d flags=%s offset=%u bytes=%u",
7057fad6ad6SHannes Reinecke 		  __entry->ata_port, __entry->ata_dev, __entry->tag,
7067fad6ad6SHannes Reinecke 		  __parse_tf_flags(__entry->flags),
7077fad6ad6SHannes Reinecke 		  __entry->offset, __entry->bytes)
7087fad6ad6SHannes Reinecke );
7097fad6ad6SHannes Reinecke 
7107fad6ad6SHannes Reinecke DEFINE_EVENT(ata_transfer_data_template, ata_sff_pio_transfer_data,
7117fad6ad6SHannes Reinecke 	     TP_PROTO(struct ata_queued_cmd *qc, unsigned int offset, unsigned int count),
7127fad6ad6SHannes Reinecke 	     TP_ARGS(qc, offset, count));
7137fad6ad6SHannes Reinecke 
7147fad6ad6SHannes Reinecke DEFINE_EVENT(ata_transfer_data_template, atapi_pio_transfer_data,
7157fad6ad6SHannes Reinecke 	     TP_PROTO(struct ata_queued_cmd *qc, unsigned int offset, unsigned int count),
7167fad6ad6SHannes Reinecke 	     TP_ARGS(qc, offset, count));
7177fad6ad6SHannes Reinecke 
7187fad6ad6SHannes Reinecke DEFINE_EVENT(ata_transfer_data_template, atapi_send_cdb,
7197fad6ad6SHannes Reinecke 	     TP_PROTO(struct ata_queued_cmd *qc, unsigned int offset, unsigned int count),
7207fad6ad6SHannes Reinecke 	     TP_ARGS(qc, offset, count));
7217fad6ad6SHannes Reinecke 
7227fad6ad6SHannes Reinecke DECLARE_EVENT_CLASS(ata_sff_template,
7237fad6ad6SHannes Reinecke 
7247fad6ad6SHannes Reinecke 	TP_PROTO(struct ata_port *ap),
7257fad6ad6SHannes Reinecke 
7267fad6ad6SHannes Reinecke 	TP_ARGS(ap),
7277fad6ad6SHannes Reinecke 
7287fad6ad6SHannes Reinecke 	TP_STRUCT__entry(
7297fad6ad6SHannes Reinecke 		__field( unsigned int,	ata_port )
7307fad6ad6SHannes Reinecke 		__field( unsigned char,	hsm_state )
7317fad6ad6SHannes Reinecke 	),
7327fad6ad6SHannes Reinecke 
7337fad6ad6SHannes Reinecke 	TP_fast_assign(
7347fad6ad6SHannes Reinecke 		__entry->ata_port	= ap->print_id;
7357fad6ad6SHannes Reinecke 		__entry->hsm_state	= ap->hsm_task_state;
7367fad6ad6SHannes Reinecke 	),
7377fad6ad6SHannes Reinecke 
7387fad6ad6SHannes Reinecke 	TP_printk("ata_port=%u task_state=%s",
7397fad6ad6SHannes Reinecke 		  __entry->ata_port,
7407fad6ad6SHannes Reinecke 		  show_sff_hsm_state_name(__entry->hsm_state))
7417fad6ad6SHannes Reinecke );
7427fad6ad6SHannes Reinecke 
7437fad6ad6SHannes Reinecke DEFINE_EVENT(ata_sff_template, ata_sff_flush_pio_task,
7447fad6ad6SHannes Reinecke 	     TP_PROTO(struct ata_port *ap),
7457fad6ad6SHannes Reinecke 	     TP_ARGS(ap));
7467fad6ad6SHannes Reinecke 
747255c03d1SHannes Reinecke #endif /*  _TRACE_LIBATA_H */
748255c03d1SHannes Reinecke 
749255c03d1SHannes Reinecke /* This part must be outside protection */
750255c03d1SHannes Reinecke #include <trace/define_trace.h>
751