1 /* SPDX-License-Identifier: GPL-2.0 */
3 #define TRACE_SYSTEM mmc
5 #if !defined(_TRACE_MMC_H) || defined(TRACE_HEADER_MULTI_READ)
8 #include <linux/blkdev.h>
9 #include <linux/mmc/core.h>
10 #include <linux/mmc/host.h>
11 #include <linux/tracepoint.h>
13 TRACE_EVENT(mmc_request_start
,
15 TP_PROTO(struct mmc_host
*host
, struct mmc_request
*mrq
),
20 __field(u32
, cmd_opcode
)
22 __field(unsigned int, cmd_flags
)
23 __field(unsigned int, cmd_retries
)
24 __field(u32
, stop_opcode
)
25 __field(u32
, stop_arg
)
26 __field(unsigned int, stop_flags
)
27 __field(unsigned int, stop_retries
)
28 __field(u32
, sbc_opcode
)
30 __field(unsigned int, sbc_flags
)
31 __field(unsigned int, sbc_retries
)
32 __field(unsigned int, blocks
)
33 __field(unsigned int, blk_addr
)
34 __field(unsigned int, blksz
)
35 __field(unsigned int, data_flags
)
37 __field(unsigned int, can_retune
)
38 __field(unsigned int, doing_retune
)
39 __field(unsigned int, retune_now
)
40 __field(int, need_retune
)
41 __field(int, hold_retune
)
42 __field(unsigned int, retune_period
)
43 __field(struct mmc_request
*, mrq
)
44 __string(name
, mmc_hostname(host
))
48 __entry
->cmd_opcode
= mrq
->cmd
? mrq
->cmd
->opcode
: 0;
49 __entry
->cmd_arg
= mrq
->cmd
? mrq
->cmd
->arg
: 0;
50 __entry
->cmd_flags
= mrq
->cmd
? mrq
->cmd
->flags
: 0;
51 __entry
->cmd_retries
= mrq
->cmd
? mrq
->cmd
->retries
: 0;
52 __entry
->stop_opcode
= mrq
->stop
? mrq
->stop
->opcode
: 0;
53 __entry
->stop_arg
= mrq
->stop
? mrq
->stop
->arg
: 0;
54 __entry
->stop_flags
= mrq
->stop
? mrq
->stop
->flags
: 0;
55 __entry
->stop_retries
= mrq
->stop
? mrq
->stop
->retries
: 0;
56 __entry
->sbc_opcode
= mrq
->sbc
? mrq
->sbc
->opcode
: 0;
57 __entry
->sbc_arg
= mrq
->sbc
? mrq
->sbc
->arg
: 0;
58 __entry
->sbc_flags
= mrq
->sbc
? mrq
->sbc
->flags
: 0;
59 __entry
->sbc_retries
= mrq
->sbc
? mrq
->sbc
->retries
: 0;
60 __entry
->blksz
= mrq
->data
? mrq
->data
->blksz
: 0;
61 __entry
->blocks
= mrq
->data
? mrq
->data
->blocks
: 0;
62 __entry
->blk_addr
= mrq
->data
? mrq
->data
->blk_addr
: 0;
63 __entry
->data_flags
= mrq
->data
? mrq
->data
->flags
: 0;
64 __entry
->tag
= mrq
->tag
;
65 __entry
->can_retune
= host
->can_retune
;
66 __entry
->doing_retune
= host
->doing_retune
;
67 __entry
->retune_now
= host
->retune_now
;
68 __entry
->need_retune
= host
->need_retune
;
69 __entry
->hold_retune
= host
->hold_retune
;
70 __entry
->retune_period
= host
->retune_period
;
71 __assign_str(name
, mmc_hostname(host
));
75 TP_printk("%s: start struct mmc_request[%p]: "
76 "cmd_opcode=%u cmd_arg=0x%x cmd_flags=0x%x cmd_retries=%u "
77 "stop_opcode=%u stop_arg=0x%x stop_flags=0x%x stop_retries=%u "
78 "sbc_opcode=%u sbc_arg=0x%x sbc_flags=0x%x sbc_retires=%u "
79 "blocks=%u block_size=%u blk_addr=%u data_flags=0x%x "
80 "tag=%d can_retune=%u doing_retune=%u retune_now=%u "
81 "need_retune=%d hold_retune=%d retune_period=%u",
82 __get_str(name
), __entry
->mrq
,
83 __entry
->cmd_opcode
, __entry
->cmd_arg
,
84 __entry
->cmd_flags
, __entry
->cmd_retries
,
85 __entry
->stop_opcode
, __entry
->stop_arg
,
86 __entry
->stop_flags
, __entry
->stop_retries
,
87 __entry
->sbc_opcode
, __entry
->sbc_arg
,
88 __entry
->sbc_flags
, __entry
->sbc_retries
,
89 __entry
->blocks
, __entry
->blksz
,
90 __entry
->blk_addr
, __entry
->data_flags
, __entry
->tag
,
91 __entry
->can_retune
, __entry
->doing_retune
,
92 __entry
->retune_now
, __entry
->need_retune
,
93 __entry
->hold_retune
, __entry
->retune_period
)
96 TRACE_EVENT(mmc_request_done
,
98 TP_PROTO(struct mmc_host
*host
, struct mmc_request
*mrq
),
103 __field(u32
, cmd_opcode
)
104 __field(int, cmd_err
)
105 __array(u32
, cmd_resp
, 4)
106 __field(unsigned int, cmd_retries
)
107 __field(u32
, stop_opcode
)
108 __field(int, stop_err
)
109 __array(u32
, stop_resp
, 4)
110 __field(unsigned int, stop_retries
)
111 __field(u32
, sbc_opcode
)
112 __field(int, sbc_err
)
113 __array(u32
, sbc_resp
, 4)
114 __field(unsigned int, sbc_retries
)
115 __field(unsigned int, bytes_xfered
)
116 __field(int, data_err
)
118 __field(unsigned int, can_retune
)
119 __field(unsigned int, doing_retune
)
120 __field(unsigned int, retune_now
)
121 __field(int, need_retune
)
122 __field(int, hold_retune
)
123 __field(unsigned int, retune_period
)
124 __field(struct mmc_request
*, mrq
)
125 __string(name
, mmc_hostname(host
))
129 __entry
->cmd_opcode
= mrq
->cmd
? mrq
->cmd
->opcode
: 0;
130 __entry
->cmd_err
= mrq
->cmd
? mrq
->cmd
->error
: 0;
131 __entry
->cmd_resp
[0] = mrq
->cmd
? mrq
->cmd
->resp
[0] : 0;
132 __entry
->cmd_resp
[1] = mrq
->cmd
? mrq
->cmd
->resp
[1] : 0;
133 __entry
->cmd_resp
[2] = mrq
->cmd
? mrq
->cmd
->resp
[2] : 0;
134 __entry
->cmd_resp
[3] = mrq
->cmd
? mrq
->cmd
->resp
[3] : 0;
135 __entry
->cmd_retries
= mrq
->cmd
? mrq
->cmd
->retries
: 0;
136 __entry
->stop_opcode
= mrq
->stop
? mrq
->stop
->opcode
: 0;
137 __entry
->stop_err
= mrq
->stop
? mrq
->stop
->error
: 0;
138 __entry
->stop_resp
[0] = mrq
->stop
? mrq
->stop
->resp
[0] : 0;
139 __entry
->stop_resp
[1] = mrq
->stop
? mrq
->stop
->resp
[1] : 0;
140 __entry
->stop_resp
[2] = mrq
->stop
? mrq
->stop
->resp
[2] : 0;
141 __entry
->stop_resp
[3] = mrq
->stop
? mrq
->stop
->resp
[3] : 0;
142 __entry
->stop_retries
= mrq
->stop
? mrq
->stop
->retries
: 0;
143 __entry
->sbc_opcode
= mrq
->sbc
? mrq
->sbc
->opcode
: 0;
144 __entry
->sbc_err
= mrq
->sbc
? mrq
->sbc
->error
: 0;
145 __entry
->sbc_resp
[0] = mrq
->sbc
? mrq
->sbc
->resp
[0] : 0;
146 __entry
->sbc_resp
[1] = mrq
->sbc
? mrq
->sbc
->resp
[1] : 0;
147 __entry
->sbc_resp
[2] = mrq
->sbc
? mrq
->sbc
->resp
[2] : 0;
148 __entry
->sbc_resp
[3] = mrq
->sbc
? mrq
->sbc
->resp
[3] : 0;
149 __entry
->sbc_retries
= mrq
->sbc
? mrq
->sbc
->retries
: 0;
150 __entry
->bytes_xfered
= mrq
->data
? mrq
->data
->bytes_xfered
: 0;
151 __entry
->data_err
= mrq
->data
? mrq
->data
->error
: 0;
152 __entry
->tag
= mrq
->tag
;
153 __entry
->can_retune
= host
->can_retune
;
154 __entry
->doing_retune
= host
->doing_retune
;
155 __entry
->retune_now
= host
->retune_now
;
156 __entry
->need_retune
= host
->need_retune
;
157 __entry
->hold_retune
= host
->hold_retune
;
158 __entry
->retune_period
= host
->retune_period
;
159 __assign_str(name
, mmc_hostname(host
));
163 TP_printk("%s: end struct mmc_request[%p]: "
164 "cmd_opcode=%u cmd_err=%d cmd_resp=0x%x 0x%x 0x%x 0x%x "
165 "cmd_retries=%u stop_opcode=%u stop_err=%d "
166 "stop_resp=0x%x 0x%x 0x%x 0x%x stop_retries=%u "
167 "sbc_opcode=%u sbc_err=%d sbc_resp=0x%x 0x%x 0x%x 0x%x "
168 "sbc_retries=%u bytes_xfered=%u data_err=%d tag=%d "
169 "can_retune=%u doing_retune=%u retune_now=%u need_retune=%d "
170 "hold_retune=%d retune_period=%u",
171 __get_str(name
), __entry
->mrq
,
172 __entry
->cmd_opcode
, __entry
->cmd_err
,
173 __entry
->cmd_resp
[0], __entry
->cmd_resp
[1],
174 __entry
->cmd_resp
[2], __entry
->cmd_resp
[3],
175 __entry
->cmd_retries
,
176 __entry
->stop_opcode
, __entry
->stop_err
,
177 __entry
->stop_resp
[0], __entry
->stop_resp
[1],
178 __entry
->stop_resp
[2], __entry
->stop_resp
[3],
179 __entry
->stop_retries
,
180 __entry
->sbc_opcode
, __entry
->sbc_err
,
181 __entry
->sbc_resp
[0], __entry
->sbc_resp
[1],
182 __entry
->sbc_resp
[2], __entry
->sbc_resp
[3],
183 __entry
->sbc_retries
,
184 __entry
->bytes_xfered
, __entry
->data_err
, __entry
->tag
,
185 __entry
->can_retune
, __entry
->doing_retune
,
186 __entry
->retune_now
, __entry
->need_retune
,
187 __entry
->hold_retune
, __entry
->retune_period
)
190 #endif /* _TRACE_MMC_H */
192 /* This part must be outside protection */
193 #include <trace/define_trace.h>