libata.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #undef TRACE_SYSTEM
  3. #define TRACE_SYSTEM libata
  4. #if !defined(_TRACE_LIBATA_H) || defined(TRACE_HEADER_MULTI_READ)
  5. #define _TRACE_LIBATA_H
  6. #include <linux/ata.h>
  7. #include <linux/libata.h>
  8. #include <linux/tracepoint.h>
  9. #include <linux/trace_seq.h>
  10. #define ata_opcode_name(opcode) { opcode, #opcode }
  11. #define show_opcode_name(val) \
  12. __print_symbolic(val, \
  13. ata_opcode_name(ATA_CMD_DEV_RESET), \
  14. ata_opcode_name(ATA_CMD_CHK_POWER), \
  15. ata_opcode_name(ATA_CMD_STANDBY), \
  16. ata_opcode_name(ATA_CMD_IDLE), \
  17. ata_opcode_name(ATA_CMD_EDD), \
  18. ata_opcode_name(ATA_CMD_DOWNLOAD_MICRO), \
  19. ata_opcode_name(ATA_CMD_DOWNLOAD_MICRO_DMA), \
  20. ata_opcode_name(ATA_CMD_NOP), \
  21. ata_opcode_name(ATA_CMD_FLUSH), \
  22. ata_opcode_name(ATA_CMD_FLUSH_EXT), \
  23. ata_opcode_name(ATA_CMD_ID_ATA), \
  24. ata_opcode_name(ATA_CMD_ID_ATAPI), \
  25. ata_opcode_name(ATA_CMD_SERVICE), \
  26. ata_opcode_name(ATA_CMD_READ), \
  27. ata_opcode_name(ATA_CMD_READ_EXT), \
  28. ata_opcode_name(ATA_CMD_READ_QUEUED), \
  29. ata_opcode_name(ATA_CMD_READ_STREAM_EXT), \
  30. ata_opcode_name(ATA_CMD_READ_STREAM_DMA_EXT), \
  31. ata_opcode_name(ATA_CMD_WRITE), \
  32. ata_opcode_name(ATA_CMD_WRITE_EXT), \
  33. ata_opcode_name(ATA_CMD_WRITE_QUEUED), \
  34. ata_opcode_name(ATA_CMD_WRITE_STREAM_EXT), \
  35. ata_opcode_name(ATA_CMD_WRITE_STREAM_DMA_EXT), \
  36. ata_opcode_name(ATA_CMD_WRITE_FUA_EXT), \
  37. ata_opcode_name(ATA_CMD_WRITE_QUEUED_FUA_EXT), \
  38. ata_opcode_name(ATA_CMD_FPDMA_READ), \
  39. ata_opcode_name(ATA_CMD_FPDMA_WRITE), \
  40. ata_opcode_name(ATA_CMD_NCQ_NON_DATA), \
  41. ata_opcode_name(ATA_CMD_FPDMA_SEND), \
  42. ata_opcode_name(ATA_CMD_FPDMA_RECV), \
  43. ata_opcode_name(ATA_CMD_PIO_READ), \
  44. ata_opcode_name(ATA_CMD_PIO_READ_EXT), \
  45. ata_opcode_name(ATA_CMD_PIO_WRITE), \
  46. ata_opcode_name(ATA_CMD_PIO_WRITE_EXT), \
  47. ata_opcode_name(ATA_CMD_READ_MULTI), \
  48. ata_opcode_name(ATA_CMD_READ_MULTI_EXT), \
  49. ata_opcode_name(ATA_CMD_WRITE_MULTI), \
  50. ata_opcode_name(ATA_CMD_WRITE_MULTI_EXT), \
  51. ata_opcode_name(ATA_CMD_WRITE_MULTI_FUA_EXT), \
  52. ata_opcode_name(ATA_CMD_SET_FEATURES), \
  53. ata_opcode_name(ATA_CMD_SET_MULTI), \
  54. ata_opcode_name(ATA_CMD_PACKET), \
  55. ata_opcode_name(ATA_CMD_VERIFY), \
  56. ata_opcode_name(ATA_CMD_VERIFY_EXT), \
  57. ata_opcode_name(ATA_CMD_WRITE_UNCORR_EXT), \
  58. ata_opcode_name(ATA_CMD_STANDBYNOW1), \
  59. ata_opcode_name(ATA_CMD_IDLEIMMEDIATE), \
  60. ata_opcode_name(ATA_CMD_SLEEP), \
  61. ata_opcode_name(ATA_CMD_INIT_DEV_PARAMS), \
  62. ata_opcode_name(ATA_CMD_READ_NATIVE_MAX), \
  63. ata_opcode_name(ATA_CMD_READ_NATIVE_MAX_EXT), \
  64. ata_opcode_name(ATA_CMD_SET_MAX), \
  65. ata_opcode_name(ATA_CMD_SET_MAX_EXT), \
  66. ata_opcode_name(ATA_CMD_READ_LOG_EXT), \
  67. ata_opcode_name(ATA_CMD_WRITE_LOG_EXT), \
  68. ata_opcode_name(ATA_CMD_READ_LOG_DMA_EXT), \
  69. ata_opcode_name(ATA_CMD_WRITE_LOG_DMA_EXT), \
  70. ata_opcode_name(ATA_CMD_TRUSTED_NONDATA), \
  71. ata_opcode_name(ATA_CMD_TRUSTED_RCV), \
  72. ata_opcode_name(ATA_CMD_TRUSTED_RCV_DMA), \
  73. ata_opcode_name(ATA_CMD_TRUSTED_SND), \
  74. ata_opcode_name(ATA_CMD_TRUSTED_SND_DMA), \
  75. ata_opcode_name(ATA_CMD_PMP_READ), \
  76. ata_opcode_name(ATA_CMD_PMP_READ_DMA), \
  77. ata_opcode_name(ATA_CMD_PMP_WRITE), \
  78. ata_opcode_name(ATA_CMD_PMP_WRITE_DMA), \
  79. ata_opcode_name(ATA_CMD_CONF_OVERLAY), \
  80. ata_opcode_name(ATA_CMD_SEC_SET_PASS), \
  81. ata_opcode_name(ATA_CMD_SEC_UNLOCK), \
  82. ata_opcode_name(ATA_CMD_SEC_ERASE_PREP), \
  83. ata_opcode_name(ATA_CMD_SEC_ERASE_UNIT), \
  84. ata_opcode_name(ATA_CMD_SEC_FREEZE_LOCK), \
  85. ata_opcode_name(ATA_CMD_SEC_DISABLE_PASS), \
  86. ata_opcode_name(ATA_CMD_CONFIG_STREAM), \
  87. ata_opcode_name(ATA_CMD_SMART), \
  88. ata_opcode_name(ATA_CMD_MEDIA_LOCK), \
  89. ata_opcode_name(ATA_CMD_MEDIA_UNLOCK), \
  90. ata_opcode_name(ATA_CMD_DSM), \
  91. ata_opcode_name(ATA_CMD_CHK_MED_CRD_TYP), \
  92. ata_opcode_name(ATA_CMD_CFA_REQ_EXT_ERR), \
  93. ata_opcode_name(ATA_CMD_CFA_WRITE_NE), \
  94. ata_opcode_name(ATA_CMD_CFA_TRANS_SECT), \
  95. ata_opcode_name(ATA_CMD_CFA_ERASE), \
  96. ata_opcode_name(ATA_CMD_CFA_WRITE_MULT_NE), \
  97. ata_opcode_name(ATA_CMD_REQ_SENSE_DATA), \
  98. ata_opcode_name(ATA_CMD_SANITIZE_DEVICE), \
  99. ata_opcode_name(ATA_CMD_ZAC_MGMT_IN), \
  100. ata_opcode_name(ATA_CMD_ZAC_MGMT_OUT), \
  101. ata_opcode_name(ATA_CMD_RESTORE), \
  102. ata_opcode_name(ATA_CMD_READ_LONG), \
  103. ata_opcode_name(ATA_CMD_READ_LONG_ONCE), \
  104. ata_opcode_name(ATA_CMD_WRITE_LONG), \
  105. ata_opcode_name(ATA_CMD_WRITE_LONG_ONCE))
  106. #define ata_error_name(result) { result, #result }
  107. #define show_error_name(val) \
  108. __print_symbolic(val, \
  109. ata_error_name(ATA_ICRC), \
  110. ata_error_name(ATA_UNC), \
  111. ata_error_name(ATA_MC), \
  112. ata_error_name(ATA_IDNF), \
  113. ata_error_name(ATA_MCR), \
  114. ata_error_name(ATA_ABORTED), \
  115. ata_error_name(ATA_TRK0NF), \
  116. ata_error_name(ATA_AMNF))
  117. #define ata_protocol_name(proto) { proto, #proto }
  118. #define show_protocol_name(val) \
  119. __print_symbolic(val, \
  120. ata_protocol_name(ATA_PROT_UNKNOWN), \
  121. ata_protocol_name(ATA_PROT_NODATA), \
  122. ata_protocol_name(ATA_PROT_PIO), \
  123. ata_protocol_name(ATA_PROT_DMA), \
  124. ata_protocol_name(ATA_PROT_NCQ), \
  125. ata_protocol_name(ATA_PROT_NCQ_NODATA), \
  126. ata_protocol_name(ATAPI_PROT_NODATA), \
  127. ata_protocol_name(ATAPI_PROT_PIO), \
  128. ata_protocol_name(ATAPI_PROT_DMA))
  129. #define ata_class_name(class) { class, #class }
  130. #define show_class_name(val) \
  131. __print_symbolic(val, \
  132. ata_class_name(ATA_DEV_UNKNOWN), \
  133. ata_class_name(ATA_DEV_ATA), \
  134. ata_class_name(ATA_DEV_ATA_UNSUP), \
  135. ata_class_name(ATA_DEV_ATAPI), \
  136. ata_class_name(ATA_DEV_ATAPI_UNSUP), \
  137. ata_class_name(ATA_DEV_PMP), \
  138. ata_class_name(ATA_DEV_PMP_UNSUP), \
  139. ata_class_name(ATA_DEV_SEMB), \
  140. ata_class_name(ATA_DEV_SEMB_UNSUP), \
  141. ata_class_name(ATA_DEV_ZAC), \
  142. ata_class_name(ATA_DEV_ZAC_UNSUP), \
  143. ata_class_name(ATA_DEV_NONE))
  144. #define ata_sff_hsm_state_name(state) { state, #state }
  145. #define show_sff_hsm_state_name(val) \
  146. __print_symbolic(val, \
  147. ata_sff_hsm_state_name(HSM_ST_IDLE), \
  148. ata_sff_hsm_state_name(HSM_ST_FIRST), \
  149. ata_sff_hsm_state_name(HSM_ST), \
  150. ata_sff_hsm_state_name(HSM_ST_LAST), \
  151. ata_sff_hsm_state_name(HSM_ST_ERR))
  152. const char *libata_trace_parse_status(struct trace_seq*, unsigned char);
  153. #define __parse_status(s) libata_trace_parse_status(p, s)
  154. const char *libata_trace_parse_host_stat(struct trace_seq *, unsigned char);
  155. #define __parse_host_stat(s) libata_trace_parse_host_stat(p, s)
  156. const char *libata_trace_parse_eh_action(struct trace_seq *, unsigned int);
  157. #define __parse_eh_action(a) libata_trace_parse_eh_action(p, a)
  158. const char *libata_trace_parse_eh_err_mask(struct trace_seq *, unsigned int);
  159. #define __parse_eh_err_mask(m) libata_trace_parse_eh_err_mask(p, m)
  160. const char *libata_trace_parse_qc_flags(struct trace_seq *, unsigned int);
  161. #define __parse_qc_flags(f) libata_trace_parse_qc_flags(p, f)
  162. const char *libata_trace_parse_tf_flags(struct trace_seq *, unsigned int);
  163. #define __parse_tf_flags(f) libata_trace_parse_tf_flags(p, f)
  164. const char *libata_trace_parse_subcmd(struct trace_seq *, unsigned char,
  165. unsigned char, unsigned char);
  166. #define __parse_subcmd(c,f,h) libata_trace_parse_subcmd(p, c, f, h)
  167. DECLARE_EVENT_CLASS(ata_qc_issue_template,
  168. TP_PROTO(struct ata_queued_cmd *qc),
  169. TP_ARGS(qc),
  170. TP_STRUCT__entry(
  171. __field( unsigned int, ata_port )
  172. __field( unsigned int, ata_dev )
  173. __field( unsigned int, tag )
  174. __field( unsigned char, cmd )
  175. __field( unsigned char, dev )
  176. __field( unsigned char, lbal )
  177. __field( unsigned char, lbam )
  178. __field( unsigned char, lbah )
  179. __field( unsigned char, nsect )
  180. __field( unsigned char, feature )
  181. __field( unsigned char, hob_lbal )
  182. __field( unsigned char, hob_lbam )
  183. __field( unsigned char, hob_lbah )
  184. __field( unsigned char, hob_nsect )
  185. __field( unsigned char, hob_feature )
  186. __field( unsigned char, ctl )
  187. __field( unsigned char, proto )
  188. __field( unsigned long, flags )
  189. ),
  190. TP_fast_assign(
  191. __entry->ata_port = qc->ap->print_id;
  192. __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
  193. __entry->tag = qc->tag;
  194. __entry->proto = qc->tf.protocol;
  195. __entry->cmd = qc->tf.command;
  196. __entry->dev = qc->tf.device;
  197. __entry->lbal = qc->tf.lbal;
  198. __entry->lbam = qc->tf.lbam;
  199. __entry->lbah = qc->tf.lbah;
  200. __entry->hob_lbal = qc->tf.hob_lbal;
  201. __entry->hob_lbam = qc->tf.hob_lbam;
  202. __entry->hob_lbah = qc->tf.hob_lbah;
  203. __entry->feature = qc->tf.feature;
  204. __entry->hob_feature = qc->tf.hob_feature;
  205. __entry->nsect = qc->tf.nsect;
  206. __entry->hob_nsect = qc->tf.hob_nsect;
  207. ),
  208. TP_printk("ata_port=%u ata_dev=%u tag=%d proto=%s cmd=%s%s " \
  209. " tf=(%02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x)",
  210. __entry->ata_port, __entry->ata_dev, __entry->tag,
  211. show_protocol_name(__entry->proto),
  212. show_opcode_name(__entry->cmd),
  213. __parse_subcmd(__entry->cmd, __entry->feature, __entry->hob_nsect),
  214. __entry->cmd, __entry->feature, __entry->nsect,
  215. __entry->lbal, __entry->lbam, __entry->lbah,
  216. __entry->hob_feature, __entry->hob_nsect,
  217. __entry->hob_lbal, __entry->hob_lbam, __entry->hob_lbah,
  218. __entry->dev)
  219. );
  220. DEFINE_EVENT(ata_qc_issue_template, ata_qc_prep,
  221. TP_PROTO(struct ata_queued_cmd *qc),
  222. TP_ARGS(qc));
  223. DEFINE_EVENT(ata_qc_issue_template, ata_qc_issue,
  224. TP_PROTO(struct ata_queued_cmd *qc),
  225. TP_ARGS(qc));
  226. DECLARE_EVENT_CLASS(ata_qc_complete_template,
  227. TP_PROTO(struct ata_queued_cmd *qc),
  228. TP_ARGS(qc),
  229. TP_STRUCT__entry(
  230. __field( unsigned int, ata_port )
  231. __field( unsigned int, ata_dev )
  232. __field( unsigned int, tag )
  233. __field( unsigned char, status )
  234. __field( unsigned char, dev )
  235. __field( unsigned char, lbal )
  236. __field( unsigned char, lbam )
  237. __field( unsigned char, lbah )
  238. __field( unsigned char, nsect )
  239. __field( unsigned char, error )
  240. __field( unsigned char, hob_lbal )
  241. __field( unsigned char, hob_lbam )
  242. __field( unsigned char, hob_lbah )
  243. __field( unsigned char, hob_nsect )
  244. __field( unsigned char, hob_feature )
  245. __field( unsigned char, ctl )
  246. __field( unsigned long, flags )
  247. ),
  248. TP_fast_assign(
  249. __entry->ata_port = qc->ap->print_id;
  250. __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
  251. __entry->tag = qc->tag;
  252. __entry->status = qc->result_tf.command;
  253. __entry->dev = qc->result_tf.device;
  254. __entry->lbal = qc->result_tf.lbal;
  255. __entry->lbam = qc->result_tf.lbam;
  256. __entry->lbah = qc->result_tf.lbah;
  257. __entry->hob_lbal = qc->result_tf.hob_lbal;
  258. __entry->hob_lbam = qc->result_tf.hob_lbam;
  259. __entry->hob_lbah = qc->result_tf.hob_lbah;
  260. __entry->error = qc->result_tf.feature;
  261. __entry->hob_feature = qc->result_tf.hob_feature;
  262. __entry->nsect = qc->result_tf.nsect;
  263. __entry->hob_nsect = qc->result_tf.hob_nsect;
  264. __entry->flags = qc->flags;
  265. ),
  266. TP_printk("ata_port=%u ata_dev=%u tag=%d flags=%s status=%s " \
  267. " res=(%02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x)",
  268. __entry->ata_port, __entry->ata_dev, __entry->tag,
  269. __parse_qc_flags(__entry->flags),
  270. __parse_status(__entry->status),
  271. __entry->status, __entry->error, __entry->nsect,
  272. __entry->lbal, __entry->lbam, __entry->lbah,
  273. __entry->hob_feature, __entry->hob_nsect,
  274. __entry->hob_lbal, __entry->hob_lbam, __entry->hob_lbah,
  275. __entry->dev)
  276. );
  277. DEFINE_EVENT(ata_qc_complete_template, ata_qc_complete_internal,
  278. TP_PROTO(struct ata_queued_cmd *qc),
  279. TP_ARGS(qc));
  280. DEFINE_EVENT(ata_qc_complete_template, ata_qc_complete_failed,
  281. TP_PROTO(struct ata_queued_cmd *qc),
  282. TP_ARGS(qc));
  283. DEFINE_EVENT(ata_qc_complete_template, ata_qc_complete_done,
  284. TP_PROTO(struct ata_queued_cmd *qc),
  285. TP_ARGS(qc));
  286. TRACE_EVENT(ata_tf_load,
  287. TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf),
  288. TP_ARGS(ap, tf),
  289. TP_STRUCT__entry(
  290. __field( unsigned int, ata_port )
  291. __field( unsigned char, cmd )
  292. __field( unsigned char, dev )
  293. __field( unsigned char, lbal )
  294. __field( unsigned char, lbam )
  295. __field( unsigned char, lbah )
  296. __field( unsigned char, nsect )
  297. __field( unsigned char, feature )
  298. __field( unsigned char, hob_lbal )
  299. __field( unsigned char, hob_lbam )
  300. __field( unsigned char, hob_lbah )
  301. __field( unsigned char, hob_nsect )
  302. __field( unsigned char, hob_feature )
  303. __field( unsigned char, proto )
  304. ),
  305. TP_fast_assign(
  306. __entry->ata_port = ap->print_id;
  307. __entry->proto = tf->protocol;
  308. __entry->cmd = tf->command;
  309. __entry->dev = tf->device;
  310. __entry->lbal = tf->lbal;
  311. __entry->lbam = tf->lbam;
  312. __entry->lbah = tf->lbah;
  313. __entry->hob_lbal = tf->hob_lbal;
  314. __entry->hob_lbam = tf->hob_lbam;
  315. __entry->hob_lbah = tf->hob_lbah;
  316. __entry->feature = tf->feature;
  317. __entry->hob_feature = tf->hob_feature;
  318. __entry->nsect = tf->nsect;
  319. __entry->hob_nsect = tf->hob_nsect;
  320. ),
  321. TP_printk("ata_port=%u proto=%s cmd=%s%s " \
  322. " tf=(%02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x)",
  323. __entry->ata_port,
  324. show_protocol_name(__entry->proto),
  325. show_opcode_name(__entry->cmd),
  326. __parse_subcmd(__entry->cmd, __entry->feature, __entry->hob_nsect),
  327. __entry->cmd, __entry->feature, __entry->nsect,
  328. __entry->lbal, __entry->lbam, __entry->lbah,
  329. __entry->hob_feature, __entry->hob_nsect,
  330. __entry->hob_lbal, __entry->hob_lbam, __entry->hob_lbah,
  331. __entry->dev)
  332. );
  333. DECLARE_EVENT_CLASS(ata_exec_command_template,
  334. TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
  335. TP_ARGS(ap, tf, tag),
  336. TP_STRUCT__entry(
  337. __field( unsigned int, ata_port )
  338. __field( unsigned int, tag )
  339. __field( unsigned char, cmd )
  340. __field( unsigned char, feature )
  341. __field( unsigned char, hob_nsect )
  342. __field( unsigned char, proto )
  343. ),
  344. TP_fast_assign(
  345. __entry->ata_port = ap->print_id;
  346. __entry->tag = tag;
  347. __entry->proto = tf->protocol;
  348. __entry->cmd = tf->command;
  349. __entry->feature = tf->feature;
  350. __entry->hob_nsect = tf->hob_nsect;
  351. ),
  352. TP_printk("ata_port=%u tag=%d proto=%s cmd=%s%s",
  353. __entry->ata_port, __entry->tag,
  354. show_protocol_name(__entry->proto),
  355. show_opcode_name(__entry->cmd),
  356. __parse_subcmd(__entry->cmd, __entry->feature, __entry->hob_nsect))
  357. );
  358. DEFINE_EVENT(ata_exec_command_template, ata_exec_command,
  359. TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
  360. TP_ARGS(ap, tf, tag));
  361. DEFINE_EVENT(ata_exec_command_template, ata_bmdma_setup,
  362. TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
  363. TP_ARGS(ap, tf, tag));
  364. DEFINE_EVENT(ata_exec_command_template, ata_bmdma_start,
  365. TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
  366. TP_ARGS(ap, tf, tag));
  367. DEFINE_EVENT(ata_exec_command_template, ata_bmdma_stop,
  368. TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
  369. TP_ARGS(ap, tf, tag));
  370. TRACE_EVENT(ata_bmdma_status,
  371. TP_PROTO(struct ata_port *ap, unsigned int host_stat),
  372. TP_ARGS(ap, host_stat),
  373. TP_STRUCT__entry(
  374. __field( unsigned int, ata_port )
  375. __field( unsigned int, tag )
  376. __field( unsigned char, host_stat )
  377. ),
  378. TP_fast_assign(
  379. __entry->ata_port = ap->print_id;
  380. __entry->host_stat = host_stat;
  381. ),
  382. TP_printk("ata_port=%u host_stat=%s",
  383. __entry->ata_port,
  384. __parse_host_stat(__entry->host_stat))
  385. );
  386. TRACE_EVENT(ata_eh_link_autopsy,
  387. TP_PROTO(struct ata_device *dev, unsigned int eh_action, unsigned int eh_err_mask),
  388. TP_ARGS(dev, eh_action, eh_err_mask),
  389. TP_STRUCT__entry(
  390. __field( unsigned int, ata_port )
  391. __field( unsigned int, ata_dev )
  392. __field( unsigned int, eh_action )
  393. __field( unsigned int, eh_err_mask)
  394. ),
  395. TP_fast_assign(
  396. __entry->ata_port = dev->link->ap->print_id;
  397. __entry->ata_dev = dev->link->pmp + dev->devno;
  398. __entry->eh_action = eh_action;
  399. __entry->eh_err_mask = eh_err_mask;
  400. ),
  401. TP_printk("ata_port=%u ata_dev=%u eh_action=%s err_mask=%s",
  402. __entry->ata_port, __entry->ata_dev,
  403. __parse_eh_action(__entry->eh_action),
  404. __parse_eh_err_mask(__entry->eh_err_mask))
  405. );
  406. TRACE_EVENT(ata_eh_link_autopsy_qc,
  407. TP_PROTO(struct ata_queued_cmd *qc),
  408. TP_ARGS(qc),
  409. TP_STRUCT__entry(
  410. __field( unsigned int, ata_port )
  411. __field( unsigned int, ata_dev )
  412. __field( unsigned int, tag )
  413. __field( unsigned int, qc_flags )
  414. __field( unsigned int, eh_err_mask)
  415. ),
  416. TP_fast_assign(
  417. __entry->ata_port = qc->ap->print_id;
  418. __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
  419. __entry->tag = qc->tag;
  420. __entry->qc_flags = qc->flags;
  421. __entry->eh_err_mask = qc->err_mask;
  422. ),
  423. TP_printk("ata_port=%u ata_dev=%u tag=%d flags=%s err_mask=%s",
  424. __entry->ata_port, __entry->ata_dev, __entry->tag,
  425. __parse_qc_flags(__entry->qc_flags),
  426. __parse_eh_err_mask(__entry->eh_err_mask))
  427. );
  428. DECLARE_EVENT_CLASS(ata_eh_action_template,
  429. TP_PROTO(struct ata_link *link, unsigned int devno, unsigned int eh_action),
  430. TP_ARGS(link, devno, eh_action),
  431. TP_STRUCT__entry(
  432. __field( unsigned int, ata_port )
  433. __field( unsigned int, ata_dev )
  434. __field( unsigned int, eh_action )
  435. ),
  436. TP_fast_assign(
  437. __entry->ata_port = link->ap->print_id;
  438. __entry->ata_dev = link->pmp + devno;
  439. __entry->eh_action = eh_action;
  440. ),
  441. TP_printk("ata_port=%u ata_dev=%u eh_action=%s",
  442. __entry->ata_port, __entry->ata_dev,
  443. __parse_eh_action(__entry->eh_action))
  444. );
  445. DEFINE_EVENT(ata_eh_action_template, ata_eh_about_to_do,
  446. TP_PROTO(struct ata_link *link, unsigned int devno, unsigned int eh_action),
  447. TP_ARGS(link, devno, eh_action));
  448. DEFINE_EVENT(ata_eh_action_template, ata_eh_done,
  449. TP_PROTO(struct ata_link *link, unsigned int devno, unsigned int eh_action),
  450. TP_ARGS(link, devno, eh_action));
  451. DECLARE_EVENT_CLASS(ata_link_reset_begin_template,
  452. TP_PROTO(struct ata_link *link, unsigned int *class, unsigned long deadline),
  453. TP_ARGS(link, class, deadline),
  454. TP_STRUCT__entry(
  455. __field( unsigned int, ata_port )
  456. __array( unsigned int, class, 2 )
  457. __field( unsigned long, deadline )
  458. ),
  459. TP_fast_assign(
  460. __entry->ata_port = link->ap->print_id;
  461. memcpy(__entry->class, class, 2);
  462. __entry->deadline = deadline;
  463. ),
  464. TP_printk("ata_port=%u deadline=%lu classes=[%s,%s]",
  465. __entry->ata_port, __entry->deadline,
  466. show_class_name(__entry->class[0]),
  467. show_class_name(__entry->class[1]))
  468. );
  469. DEFINE_EVENT(ata_link_reset_begin_template, ata_link_hardreset_begin,
  470. TP_PROTO(struct ata_link *link, unsigned int *class, unsigned long deadline),
  471. TP_ARGS(link, class, deadline));
  472. DEFINE_EVENT(ata_link_reset_begin_template, ata_slave_hardreset_begin,
  473. TP_PROTO(struct ata_link *link, unsigned int *class, unsigned long deadline),
  474. TP_ARGS(link, class, deadline));
  475. DEFINE_EVENT(ata_link_reset_begin_template, ata_link_softreset_begin,
  476. TP_PROTO(struct ata_link *link, unsigned int *class, unsigned long deadline),
  477. TP_ARGS(link, class, deadline));
  478. DECLARE_EVENT_CLASS(ata_link_reset_end_template,
  479. TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
  480. TP_ARGS(link, class, rc),
  481. TP_STRUCT__entry(
  482. __field( unsigned int, ata_port )
  483. __array( unsigned int, class, 2 )
  484. __field( int, rc )
  485. ),
  486. TP_fast_assign(
  487. __entry->ata_port = link->ap->print_id;
  488. memcpy(__entry->class, class, 2);
  489. __entry->rc = rc;
  490. ),
  491. TP_printk("ata_port=%u rc=%d class=[%s,%s]",
  492. __entry->ata_port, __entry->rc,
  493. show_class_name(__entry->class[0]),
  494. show_class_name(__entry->class[1]))
  495. );
  496. DEFINE_EVENT(ata_link_reset_end_template, ata_link_hardreset_end,
  497. TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
  498. TP_ARGS(link, class, rc));
  499. DEFINE_EVENT(ata_link_reset_end_template, ata_slave_hardreset_end,
  500. TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
  501. TP_ARGS(link, class, rc));
  502. DEFINE_EVENT(ata_link_reset_end_template, ata_link_softreset_end,
  503. TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
  504. TP_ARGS(link, class, rc));
  505. DEFINE_EVENT(ata_link_reset_end_template, ata_link_postreset,
  506. TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
  507. TP_ARGS(link, class, rc));
  508. DEFINE_EVENT(ata_link_reset_end_template, ata_slave_postreset,
  509. TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
  510. TP_ARGS(link, class, rc));
  511. DECLARE_EVENT_CLASS(ata_port_eh_begin_template,
  512. TP_PROTO(struct ata_port *ap),
  513. TP_ARGS(ap),
  514. TP_STRUCT__entry(
  515. __field( unsigned int, ata_port )
  516. ),
  517. TP_fast_assign(
  518. __entry->ata_port = ap->print_id;
  519. ),
  520. TP_printk("ata_port=%u", __entry->ata_port)
  521. );
  522. DEFINE_EVENT(ata_port_eh_begin_template, ata_std_sched_eh,
  523. TP_PROTO(struct ata_port *ap),
  524. TP_ARGS(ap));
  525. DEFINE_EVENT(ata_port_eh_begin_template, ata_port_freeze,
  526. TP_PROTO(struct ata_port *ap),
  527. TP_ARGS(ap));
  528. DEFINE_EVENT(ata_port_eh_begin_template, ata_port_thaw,
  529. TP_PROTO(struct ata_port *ap),
  530. TP_ARGS(ap));
  531. DECLARE_EVENT_CLASS(ata_sff_hsm_template,
  532. TP_PROTO(struct ata_queued_cmd *qc, unsigned char status),
  533. TP_ARGS(qc, status),
  534. TP_STRUCT__entry(
  535. __field( unsigned int, ata_port )
  536. __field( unsigned int, ata_dev )
  537. __field( unsigned int, tag )
  538. __field( unsigned int, qc_flags )
  539. __field( unsigned int, protocol )
  540. __field( unsigned int, hsm_state )
  541. __field( unsigned char, dev_state )
  542. ),
  543. TP_fast_assign(
  544. __entry->ata_port = qc->ap->print_id;
  545. __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
  546. __entry->tag = qc->tag;
  547. __entry->qc_flags = qc->flags;
  548. __entry->protocol = qc->tf.protocol;
  549. __entry->hsm_state = qc->ap->hsm_task_state;
  550. __entry->dev_state = status;
  551. ),
  552. TP_printk("ata_port=%u ata_dev=%u tag=%d proto=%s flags=%s task_state=%s dev_stat=0x%X",
  553. __entry->ata_port, __entry->ata_dev, __entry->tag,
  554. show_protocol_name(__entry->protocol),
  555. __parse_qc_flags(__entry->qc_flags),
  556. show_sff_hsm_state_name(__entry->hsm_state),
  557. __entry->dev_state)
  558. );
  559. DEFINE_EVENT(ata_sff_hsm_template, ata_sff_hsm_state,
  560. TP_PROTO(struct ata_queued_cmd *qc, unsigned char state),
  561. TP_ARGS(qc, state));
  562. DEFINE_EVENT(ata_sff_hsm_template, ata_sff_hsm_command_complete,
  563. TP_PROTO(struct ata_queued_cmd *qc, unsigned char state),
  564. TP_ARGS(qc, state));
  565. DEFINE_EVENT(ata_sff_hsm_template, ata_sff_port_intr,
  566. TP_PROTO(struct ata_queued_cmd *qc, unsigned char state),
  567. TP_ARGS(qc, state));
  568. DECLARE_EVENT_CLASS(ata_transfer_data_template,
  569. TP_PROTO(struct ata_queued_cmd *qc, unsigned int offset, unsigned int count),
  570. TP_ARGS(qc, offset, count),
  571. TP_STRUCT__entry(
  572. __field( unsigned int, ata_port )
  573. __field( unsigned int, ata_dev )
  574. __field( unsigned int, tag )
  575. __field( unsigned int, flags )
  576. __field( unsigned int, offset )
  577. __field( unsigned int, bytes )
  578. ),
  579. TP_fast_assign(
  580. __entry->ata_port = qc->ap->print_id;
  581. __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
  582. __entry->tag = qc->tag;
  583. __entry->flags = qc->tf.flags;
  584. __entry->offset = offset;
  585. __entry->bytes = count;
  586. ),
  587. TP_printk("ata_port=%u ata_dev=%u tag=%d flags=%s offset=%u bytes=%u",
  588. __entry->ata_port, __entry->ata_dev, __entry->tag,
  589. __parse_tf_flags(__entry->flags),
  590. __entry->offset, __entry->bytes)
  591. );
  592. DEFINE_EVENT(ata_transfer_data_template, ata_sff_pio_transfer_data,
  593. TP_PROTO(struct ata_queued_cmd *qc, unsigned int offset, unsigned int count),
  594. TP_ARGS(qc, offset, count));
  595. DEFINE_EVENT(ata_transfer_data_template, atapi_pio_transfer_data,
  596. TP_PROTO(struct ata_queued_cmd *qc, unsigned int offset, unsigned int count),
  597. TP_ARGS(qc, offset, count));
  598. DEFINE_EVENT(ata_transfer_data_template, atapi_send_cdb,
  599. TP_PROTO(struct ata_queued_cmd *qc, unsigned int offset, unsigned int count),
  600. TP_ARGS(qc, offset, count));
  601. DECLARE_EVENT_CLASS(ata_sff_template,
  602. TP_PROTO(struct ata_port *ap),
  603. TP_ARGS(ap),
  604. TP_STRUCT__entry(
  605. __field( unsigned int, ata_port )
  606. __field( unsigned char, hsm_state )
  607. ),
  608. TP_fast_assign(
  609. __entry->ata_port = ap->print_id;
  610. __entry->hsm_state = ap->hsm_task_state;
  611. ),
  612. TP_printk("ata_port=%u task_state=%s",
  613. __entry->ata_port,
  614. show_sff_hsm_state_name(__entry->hsm_state))
  615. );
  616. DEFINE_EVENT(ata_sff_template, ata_sff_flush_pio_task,
  617. TP_PROTO(struct ata_port *ap),
  618. TP_ARGS(ap));
  619. #endif /* _TRACE_LIBATA_H */
  620. /* This part must be outside protection */
  621. #include <trace/define_trace.h>