0001
0002 #undef TRACE_SYSTEM
0003 #define TRACE_SYSTEM libata
0004
0005 #if !defined(_TRACE_LIBATA_H) || defined(TRACE_HEADER_MULTI_READ)
0006 #define _TRACE_LIBATA_H
0007
0008 #include <linux/ata.h>
0009 #include <linux/libata.h>
0010 #include <linux/tracepoint.h>
0011 #include <linux/trace_seq.h>
0012
0013 #define ata_opcode_name(opcode) { opcode, #opcode }
0014 #define show_opcode_name(val) \
0015 __print_symbolic(val, \
0016 ata_opcode_name(ATA_CMD_DEV_RESET), \
0017 ata_opcode_name(ATA_CMD_CHK_POWER), \
0018 ata_opcode_name(ATA_CMD_STANDBY), \
0019 ata_opcode_name(ATA_CMD_IDLE), \
0020 ata_opcode_name(ATA_CMD_EDD), \
0021 ata_opcode_name(ATA_CMD_DOWNLOAD_MICRO), \
0022 ata_opcode_name(ATA_CMD_DOWNLOAD_MICRO_DMA), \
0023 ata_opcode_name(ATA_CMD_NOP), \
0024 ata_opcode_name(ATA_CMD_FLUSH), \
0025 ata_opcode_name(ATA_CMD_FLUSH_EXT), \
0026 ata_opcode_name(ATA_CMD_ID_ATA), \
0027 ata_opcode_name(ATA_CMD_ID_ATAPI), \
0028 ata_opcode_name(ATA_CMD_SERVICE), \
0029 ata_opcode_name(ATA_CMD_READ), \
0030 ata_opcode_name(ATA_CMD_READ_EXT), \
0031 ata_opcode_name(ATA_CMD_READ_QUEUED), \
0032 ata_opcode_name(ATA_CMD_READ_STREAM_EXT), \
0033 ata_opcode_name(ATA_CMD_READ_STREAM_DMA_EXT), \
0034 ata_opcode_name(ATA_CMD_WRITE), \
0035 ata_opcode_name(ATA_CMD_WRITE_EXT), \
0036 ata_opcode_name(ATA_CMD_WRITE_QUEUED), \
0037 ata_opcode_name(ATA_CMD_WRITE_STREAM_EXT), \
0038 ata_opcode_name(ATA_CMD_WRITE_STREAM_DMA_EXT), \
0039 ata_opcode_name(ATA_CMD_WRITE_FUA_EXT), \
0040 ata_opcode_name(ATA_CMD_WRITE_QUEUED_FUA_EXT), \
0041 ata_opcode_name(ATA_CMD_FPDMA_READ), \
0042 ata_opcode_name(ATA_CMD_FPDMA_WRITE), \
0043 ata_opcode_name(ATA_CMD_NCQ_NON_DATA), \
0044 ata_opcode_name(ATA_CMD_FPDMA_SEND), \
0045 ata_opcode_name(ATA_CMD_FPDMA_RECV), \
0046 ata_opcode_name(ATA_CMD_PIO_READ), \
0047 ata_opcode_name(ATA_CMD_PIO_READ_EXT), \
0048 ata_opcode_name(ATA_CMD_PIO_WRITE), \
0049 ata_opcode_name(ATA_CMD_PIO_WRITE_EXT), \
0050 ata_opcode_name(ATA_CMD_READ_MULTI), \
0051 ata_opcode_name(ATA_CMD_READ_MULTI_EXT), \
0052 ata_opcode_name(ATA_CMD_WRITE_MULTI), \
0053 ata_opcode_name(ATA_CMD_WRITE_MULTI_EXT), \
0054 ata_opcode_name(ATA_CMD_WRITE_MULTI_FUA_EXT), \
0055 ata_opcode_name(ATA_CMD_SET_FEATURES), \
0056 ata_opcode_name(ATA_CMD_SET_MULTI), \
0057 ata_opcode_name(ATA_CMD_PACKET), \
0058 ata_opcode_name(ATA_CMD_VERIFY), \
0059 ata_opcode_name(ATA_CMD_VERIFY_EXT), \
0060 ata_opcode_name(ATA_CMD_WRITE_UNCORR_EXT), \
0061 ata_opcode_name(ATA_CMD_STANDBYNOW1), \
0062 ata_opcode_name(ATA_CMD_IDLEIMMEDIATE), \
0063 ata_opcode_name(ATA_CMD_SLEEP), \
0064 ata_opcode_name(ATA_CMD_INIT_DEV_PARAMS), \
0065 ata_opcode_name(ATA_CMD_READ_NATIVE_MAX), \
0066 ata_opcode_name(ATA_CMD_READ_NATIVE_MAX_EXT), \
0067 ata_opcode_name(ATA_CMD_SET_MAX), \
0068 ata_opcode_name(ATA_CMD_SET_MAX_EXT), \
0069 ata_opcode_name(ATA_CMD_READ_LOG_EXT), \
0070 ata_opcode_name(ATA_CMD_WRITE_LOG_EXT), \
0071 ata_opcode_name(ATA_CMD_READ_LOG_DMA_EXT), \
0072 ata_opcode_name(ATA_CMD_WRITE_LOG_DMA_EXT), \
0073 ata_opcode_name(ATA_CMD_TRUSTED_NONDATA), \
0074 ata_opcode_name(ATA_CMD_TRUSTED_RCV), \
0075 ata_opcode_name(ATA_CMD_TRUSTED_RCV_DMA), \
0076 ata_opcode_name(ATA_CMD_TRUSTED_SND), \
0077 ata_opcode_name(ATA_CMD_TRUSTED_SND_DMA), \
0078 ata_opcode_name(ATA_CMD_PMP_READ), \
0079 ata_opcode_name(ATA_CMD_PMP_READ_DMA), \
0080 ata_opcode_name(ATA_CMD_PMP_WRITE), \
0081 ata_opcode_name(ATA_CMD_PMP_WRITE_DMA), \
0082 ata_opcode_name(ATA_CMD_CONF_OVERLAY), \
0083 ata_opcode_name(ATA_CMD_SEC_SET_PASS), \
0084 ata_opcode_name(ATA_CMD_SEC_UNLOCK), \
0085 ata_opcode_name(ATA_CMD_SEC_ERASE_PREP), \
0086 ata_opcode_name(ATA_CMD_SEC_ERASE_UNIT), \
0087 ata_opcode_name(ATA_CMD_SEC_FREEZE_LOCK), \
0088 ata_opcode_name(ATA_CMD_SEC_DISABLE_PASS), \
0089 ata_opcode_name(ATA_CMD_CONFIG_STREAM), \
0090 ata_opcode_name(ATA_CMD_SMART), \
0091 ata_opcode_name(ATA_CMD_MEDIA_LOCK), \
0092 ata_opcode_name(ATA_CMD_MEDIA_UNLOCK), \
0093 ata_opcode_name(ATA_CMD_DSM), \
0094 ata_opcode_name(ATA_CMD_CHK_MED_CRD_TYP), \
0095 ata_opcode_name(ATA_CMD_CFA_REQ_EXT_ERR), \
0096 ata_opcode_name(ATA_CMD_CFA_WRITE_NE), \
0097 ata_opcode_name(ATA_CMD_CFA_TRANS_SECT), \
0098 ata_opcode_name(ATA_CMD_CFA_ERASE), \
0099 ata_opcode_name(ATA_CMD_CFA_WRITE_MULT_NE), \
0100 ata_opcode_name(ATA_CMD_REQ_SENSE_DATA), \
0101 ata_opcode_name(ATA_CMD_SANITIZE_DEVICE), \
0102 ata_opcode_name(ATA_CMD_ZAC_MGMT_IN), \
0103 ata_opcode_name(ATA_CMD_ZAC_MGMT_OUT), \
0104 ata_opcode_name(ATA_CMD_RESTORE), \
0105 ata_opcode_name(ATA_CMD_READ_LONG), \
0106 ata_opcode_name(ATA_CMD_READ_LONG_ONCE), \
0107 ata_opcode_name(ATA_CMD_WRITE_LONG), \
0108 ata_opcode_name(ATA_CMD_WRITE_LONG_ONCE))
0109
0110 #define ata_error_name(result) { result, #result }
0111 #define show_error_name(val) \
0112 __print_symbolic(val, \
0113 ata_error_name(ATA_ICRC), \
0114 ata_error_name(ATA_UNC), \
0115 ata_error_name(ATA_MC), \
0116 ata_error_name(ATA_IDNF), \
0117 ata_error_name(ATA_MCR), \
0118 ata_error_name(ATA_ABORTED), \
0119 ata_error_name(ATA_TRK0NF), \
0120 ata_error_name(ATA_AMNF))
0121
0122 #define ata_protocol_name(proto) { proto, #proto }
0123 #define show_protocol_name(val) \
0124 __print_symbolic(val, \
0125 ata_protocol_name(ATA_PROT_UNKNOWN), \
0126 ata_protocol_name(ATA_PROT_NODATA), \
0127 ata_protocol_name(ATA_PROT_PIO), \
0128 ata_protocol_name(ATA_PROT_DMA), \
0129 ata_protocol_name(ATA_PROT_NCQ), \
0130 ata_protocol_name(ATA_PROT_NCQ_NODATA), \
0131 ata_protocol_name(ATAPI_PROT_NODATA), \
0132 ata_protocol_name(ATAPI_PROT_PIO), \
0133 ata_protocol_name(ATAPI_PROT_DMA))
0134
0135 #define ata_class_name(class) { class, #class }
0136 #define show_class_name(val) \
0137 __print_symbolic(val, \
0138 ata_class_name(ATA_DEV_UNKNOWN), \
0139 ata_class_name(ATA_DEV_ATA), \
0140 ata_class_name(ATA_DEV_ATA_UNSUP), \
0141 ata_class_name(ATA_DEV_ATAPI), \
0142 ata_class_name(ATA_DEV_ATAPI_UNSUP), \
0143 ata_class_name(ATA_DEV_PMP), \
0144 ata_class_name(ATA_DEV_PMP_UNSUP), \
0145 ata_class_name(ATA_DEV_SEMB), \
0146 ata_class_name(ATA_DEV_SEMB_UNSUP), \
0147 ata_class_name(ATA_DEV_ZAC), \
0148 ata_class_name(ATA_DEV_ZAC_UNSUP), \
0149 ata_class_name(ATA_DEV_NONE))
0150
0151 #define ata_sff_hsm_state_name(state) { state, #state }
0152 #define show_sff_hsm_state_name(val) \
0153 __print_symbolic(val, \
0154 ata_sff_hsm_state_name(HSM_ST_IDLE), \
0155 ata_sff_hsm_state_name(HSM_ST_FIRST), \
0156 ata_sff_hsm_state_name(HSM_ST), \
0157 ata_sff_hsm_state_name(HSM_ST_LAST), \
0158 ata_sff_hsm_state_name(HSM_ST_ERR))
0159
0160 const char *libata_trace_parse_status(struct trace_seq*, unsigned char);
0161 #define __parse_status(s) libata_trace_parse_status(p, s)
0162
0163 const char *libata_trace_parse_host_stat(struct trace_seq *, unsigned char);
0164 #define __parse_host_stat(s) libata_trace_parse_host_stat(p, s)
0165
0166 const char *libata_trace_parse_eh_action(struct trace_seq *, unsigned int);
0167 #define __parse_eh_action(a) libata_trace_parse_eh_action(p, a)
0168
0169 const char *libata_trace_parse_eh_err_mask(struct trace_seq *, unsigned int);
0170 #define __parse_eh_err_mask(m) libata_trace_parse_eh_err_mask(p, m)
0171
0172 const char *libata_trace_parse_qc_flags(struct trace_seq *, unsigned int);
0173 #define __parse_qc_flags(f) libata_trace_parse_qc_flags(p, f)
0174
0175 const char *libata_trace_parse_tf_flags(struct trace_seq *, unsigned int);
0176 #define __parse_tf_flags(f) libata_trace_parse_tf_flags(p, f)
0177
0178 const char *libata_trace_parse_subcmd(struct trace_seq *, unsigned char,
0179 unsigned char, unsigned char);
0180 #define __parse_subcmd(c,f,h) libata_trace_parse_subcmd(p, c, f, h)
0181
0182 DECLARE_EVENT_CLASS(ata_qc_issue_template,
0183
0184 TP_PROTO(struct ata_queued_cmd *qc),
0185
0186 TP_ARGS(qc),
0187
0188 TP_STRUCT__entry(
0189 __field( unsigned int, ata_port )
0190 __field( unsigned int, ata_dev )
0191 __field( unsigned int, tag )
0192 __field( unsigned char, cmd )
0193 __field( unsigned char, dev )
0194 __field( unsigned char, lbal )
0195 __field( unsigned char, lbam )
0196 __field( unsigned char, lbah )
0197 __field( unsigned char, nsect )
0198 __field( unsigned char, feature )
0199 __field( unsigned char, hob_lbal )
0200 __field( unsigned char, hob_lbam )
0201 __field( unsigned char, hob_lbah )
0202 __field( unsigned char, hob_nsect )
0203 __field( unsigned char, hob_feature )
0204 __field( unsigned char, ctl )
0205 __field( unsigned char, proto )
0206 __field( unsigned long, flags )
0207 ),
0208
0209 TP_fast_assign(
0210 __entry->ata_port = qc->ap->print_id;
0211 __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
0212 __entry->tag = qc->tag;
0213 __entry->proto = qc->tf.protocol;
0214 __entry->cmd = qc->tf.command;
0215 __entry->dev = qc->tf.device;
0216 __entry->lbal = qc->tf.lbal;
0217 __entry->lbam = qc->tf.lbam;
0218 __entry->lbah = qc->tf.lbah;
0219 __entry->hob_lbal = qc->tf.hob_lbal;
0220 __entry->hob_lbam = qc->tf.hob_lbam;
0221 __entry->hob_lbah = qc->tf.hob_lbah;
0222 __entry->feature = qc->tf.feature;
0223 __entry->hob_feature = qc->tf.hob_feature;
0224 __entry->nsect = qc->tf.nsect;
0225 __entry->hob_nsect = qc->tf.hob_nsect;
0226 ),
0227
0228 TP_printk("ata_port=%u ata_dev=%u tag=%d proto=%s cmd=%s%s " \
0229 " tf=(%02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x)",
0230 __entry->ata_port, __entry->ata_dev, __entry->tag,
0231 show_protocol_name(__entry->proto),
0232 show_opcode_name(__entry->cmd),
0233 __parse_subcmd(__entry->cmd, __entry->feature, __entry->hob_nsect),
0234 __entry->cmd, __entry->feature, __entry->nsect,
0235 __entry->lbal, __entry->lbam, __entry->lbah,
0236 __entry->hob_feature, __entry->hob_nsect,
0237 __entry->hob_lbal, __entry->hob_lbam, __entry->hob_lbah,
0238 __entry->dev)
0239 );
0240
0241 DEFINE_EVENT(ata_qc_issue_template, ata_qc_prep,
0242 TP_PROTO(struct ata_queued_cmd *qc),
0243 TP_ARGS(qc));
0244
0245 DEFINE_EVENT(ata_qc_issue_template, ata_qc_issue,
0246 TP_PROTO(struct ata_queued_cmd *qc),
0247 TP_ARGS(qc));
0248
0249 DECLARE_EVENT_CLASS(ata_qc_complete_template,
0250
0251 TP_PROTO(struct ata_queued_cmd *qc),
0252
0253 TP_ARGS(qc),
0254
0255 TP_STRUCT__entry(
0256 __field( unsigned int, ata_port )
0257 __field( unsigned int, ata_dev )
0258 __field( unsigned int, tag )
0259 __field( unsigned char, status )
0260 __field( unsigned char, dev )
0261 __field( unsigned char, lbal )
0262 __field( unsigned char, lbam )
0263 __field( unsigned char, lbah )
0264 __field( unsigned char, nsect )
0265 __field( unsigned char, error )
0266 __field( unsigned char, hob_lbal )
0267 __field( unsigned char, hob_lbam )
0268 __field( unsigned char, hob_lbah )
0269 __field( unsigned char, hob_nsect )
0270 __field( unsigned char, hob_feature )
0271 __field( unsigned char, ctl )
0272 __field( unsigned long, flags )
0273 ),
0274
0275 TP_fast_assign(
0276 __entry->ata_port = qc->ap->print_id;
0277 __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
0278 __entry->tag = qc->tag;
0279 __entry->status = qc->result_tf.command;
0280 __entry->dev = qc->result_tf.device;
0281 __entry->lbal = qc->result_tf.lbal;
0282 __entry->lbam = qc->result_tf.lbam;
0283 __entry->lbah = qc->result_tf.lbah;
0284 __entry->hob_lbal = qc->result_tf.hob_lbal;
0285 __entry->hob_lbam = qc->result_tf.hob_lbam;
0286 __entry->hob_lbah = qc->result_tf.hob_lbah;
0287 __entry->error = qc->result_tf.feature;
0288 __entry->hob_feature = qc->result_tf.hob_feature;
0289 __entry->nsect = qc->result_tf.nsect;
0290 __entry->hob_nsect = qc->result_tf.hob_nsect;
0291 __entry->flags = qc->flags;
0292 ),
0293
0294 TP_printk("ata_port=%u ata_dev=%u tag=%d flags=%s status=%s " \
0295 " res=(%02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x)",
0296 __entry->ata_port, __entry->ata_dev, __entry->tag,
0297 __parse_qc_flags(__entry->flags),
0298 __parse_status(__entry->status),
0299 __entry->status, __entry->error, __entry->nsect,
0300 __entry->lbal, __entry->lbam, __entry->lbah,
0301 __entry->hob_feature, __entry->hob_nsect,
0302 __entry->hob_lbal, __entry->hob_lbam, __entry->hob_lbah,
0303 __entry->dev)
0304 );
0305
0306 DEFINE_EVENT(ata_qc_complete_template, ata_qc_complete_internal,
0307 TP_PROTO(struct ata_queued_cmd *qc),
0308 TP_ARGS(qc));
0309
0310 DEFINE_EVENT(ata_qc_complete_template, ata_qc_complete_failed,
0311 TP_PROTO(struct ata_queued_cmd *qc),
0312 TP_ARGS(qc));
0313
0314 DEFINE_EVENT(ata_qc_complete_template, ata_qc_complete_done,
0315 TP_PROTO(struct ata_queued_cmd *qc),
0316 TP_ARGS(qc));
0317
0318 TRACE_EVENT(ata_tf_load,
0319
0320 TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf),
0321
0322 TP_ARGS(ap, tf),
0323
0324 TP_STRUCT__entry(
0325 __field( unsigned int, ata_port )
0326 __field( unsigned char, cmd )
0327 __field( unsigned char, dev )
0328 __field( unsigned char, lbal )
0329 __field( unsigned char, lbam )
0330 __field( unsigned char, lbah )
0331 __field( unsigned char, nsect )
0332 __field( unsigned char, feature )
0333 __field( unsigned char, hob_lbal )
0334 __field( unsigned char, hob_lbam )
0335 __field( unsigned char, hob_lbah )
0336 __field( unsigned char, hob_nsect )
0337 __field( unsigned char, hob_feature )
0338 __field( unsigned char, proto )
0339 ),
0340
0341 TP_fast_assign(
0342 __entry->ata_port = ap->print_id;
0343 __entry->proto = tf->protocol;
0344 __entry->cmd = tf->command;
0345 __entry->dev = tf->device;
0346 __entry->lbal = tf->lbal;
0347 __entry->lbam = tf->lbam;
0348 __entry->lbah = tf->lbah;
0349 __entry->hob_lbal = tf->hob_lbal;
0350 __entry->hob_lbam = tf->hob_lbam;
0351 __entry->hob_lbah = tf->hob_lbah;
0352 __entry->feature = tf->feature;
0353 __entry->hob_feature = tf->hob_feature;
0354 __entry->nsect = tf->nsect;
0355 __entry->hob_nsect = tf->hob_nsect;
0356 ),
0357
0358 TP_printk("ata_port=%u proto=%s cmd=%s%s " \
0359 " tf=(%02x/%02x:%02x:%02x:%02x:%02x/%02x:%02x:%02x:%02x:%02x/%02x)",
0360 __entry->ata_port,
0361 show_protocol_name(__entry->proto),
0362 show_opcode_name(__entry->cmd),
0363 __parse_subcmd(__entry->cmd, __entry->feature, __entry->hob_nsect),
0364 __entry->cmd, __entry->feature, __entry->nsect,
0365 __entry->lbal, __entry->lbam, __entry->lbah,
0366 __entry->hob_feature, __entry->hob_nsect,
0367 __entry->hob_lbal, __entry->hob_lbam, __entry->hob_lbah,
0368 __entry->dev)
0369 );
0370
0371 DECLARE_EVENT_CLASS(ata_exec_command_template,
0372
0373 TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
0374
0375 TP_ARGS(ap, tf, tag),
0376
0377 TP_STRUCT__entry(
0378 __field( unsigned int, ata_port )
0379 __field( unsigned int, tag )
0380 __field( unsigned char, cmd )
0381 __field( unsigned char, feature )
0382 __field( unsigned char, hob_nsect )
0383 __field( unsigned char, proto )
0384 ),
0385
0386 TP_fast_assign(
0387 __entry->ata_port = ap->print_id;
0388 __entry->tag = tag;
0389 __entry->proto = tf->protocol;
0390 __entry->cmd = tf->command;
0391 __entry->feature = tf->feature;
0392 __entry->hob_nsect = tf->hob_nsect;
0393 ),
0394
0395 TP_printk("ata_port=%u tag=%d proto=%s cmd=%s%s",
0396 __entry->ata_port, __entry->tag,
0397 show_protocol_name(__entry->proto),
0398 show_opcode_name(__entry->cmd),
0399 __parse_subcmd(__entry->cmd, __entry->feature, __entry->hob_nsect))
0400 );
0401
0402 DEFINE_EVENT(ata_exec_command_template, ata_exec_command,
0403 TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
0404 TP_ARGS(ap, tf, tag));
0405
0406 DEFINE_EVENT(ata_exec_command_template, ata_bmdma_setup,
0407 TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
0408 TP_ARGS(ap, tf, tag));
0409
0410 DEFINE_EVENT(ata_exec_command_template, ata_bmdma_start,
0411 TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
0412 TP_ARGS(ap, tf, tag));
0413
0414 DEFINE_EVENT(ata_exec_command_template, ata_bmdma_stop,
0415 TP_PROTO(struct ata_port *ap, const struct ata_taskfile *tf, unsigned int tag),
0416 TP_ARGS(ap, tf, tag));
0417
0418 TRACE_EVENT(ata_bmdma_status,
0419
0420 TP_PROTO(struct ata_port *ap, unsigned int host_stat),
0421
0422 TP_ARGS(ap, host_stat),
0423
0424 TP_STRUCT__entry(
0425 __field( unsigned int, ata_port )
0426 __field( unsigned int, tag )
0427 __field( unsigned char, host_stat )
0428 ),
0429
0430 TP_fast_assign(
0431 __entry->ata_port = ap->print_id;
0432 __entry->host_stat = host_stat;
0433 ),
0434
0435 TP_printk("ata_port=%u host_stat=%s",
0436 __entry->ata_port,
0437 __parse_host_stat(__entry->host_stat))
0438 );
0439
0440 TRACE_EVENT(ata_eh_link_autopsy,
0441
0442 TP_PROTO(struct ata_device *dev, unsigned int eh_action, unsigned int eh_err_mask),
0443
0444 TP_ARGS(dev, eh_action, eh_err_mask),
0445
0446 TP_STRUCT__entry(
0447 __field( unsigned int, ata_port )
0448 __field( unsigned int, ata_dev )
0449 __field( unsigned int, eh_action )
0450 __field( unsigned int, eh_err_mask)
0451 ),
0452
0453 TP_fast_assign(
0454 __entry->ata_port = dev->link->ap->print_id;
0455 __entry->ata_dev = dev->link->pmp + dev->devno;
0456 __entry->eh_action = eh_action;
0457 __entry->eh_err_mask = eh_err_mask;
0458 ),
0459
0460 TP_printk("ata_port=%u ata_dev=%u eh_action=%s err_mask=%s",
0461 __entry->ata_port, __entry->ata_dev,
0462 __parse_eh_action(__entry->eh_action),
0463 __parse_eh_err_mask(__entry->eh_err_mask))
0464 );
0465
0466 TRACE_EVENT(ata_eh_link_autopsy_qc,
0467
0468 TP_PROTO(struct ata_queued_cmd *qc),
0469
0470 TP_ARGS(qc),
0471
0472 TP_STRUCT__entry(
0473 __field( unsigned int, ata_port )
0474 __field( unsigned int, ata_dev )
0475 __field( unsigned int, tag )
0476 __field( unsigned int, qc_flags )
0477 __field( unsigned int, eh_err_mask)
0478 ),
0479
0480 TP_fast_assign(
0481 __entry->ata_port = qc->ap->print_id;
0482 __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
0483 __entry->tag = qc->tag;
0484 __entry->qc_flags = qc->flags;
0485 __entry->eh_err_mask = qc->err_mask;
0486 ),
0487
0488 TP_printk("ata_port=%u ata_dev=%u tag=%d flags=%s err_mask=%s",
0489 __entry->ata_port, __entry->ata_dev, __entry->tag,
0490 __parse_qc_flags(__entry->qc_flags),
0491 __parse_eh_err_mask(__entry->eh_err_mask))
0492 );
0493
0494 DECLARE_EVENT_CLASS(ata_eh_action_template,
0495
0496 TP_PROTO(struct ata_link *link, unsigned int devno, unsigned int eh_action),
0497
0498 TP_ARGS(link, devno, eh_action),
0499
0500 TP_STRUCT__entry(
0501 __field( unsigned int, ata_port )
0502 __field( unsigned int, ata_dev )
0503 __field( unsigned int, eh_action )
0504 ),
0505
0506 TP_fast_assign(
0507 __entry->ata_port = link->ap->print_id;
0508 __entry->ata_dev = link->pmp + devno;
0509 __entry->eh_action = eh_action;
0510 ),
0511
0512 TP_printk("ata_port=%u ata_dev=%u eh_action=%s",
0513 __entry->ata_port, __entry->ata_dev,
0514 __parse_eh_action(__entry->eh_action))
0515 );
0516
0517 DEFINE_EVENT(ata_eh_action_template, ata_eh_about_to_do,
0518 TP_PROTO(struct ata_link *link, unsigned int devno, unsigned int eh_action),
0519 TP_ARGS(link, devno, eh_action));
0520
0521 DEFINE_EVENT(ata_eh_action_template, ata_eh_done,
0522 TP_PROTO(struct ata_link *link, unsigned int devno, unsigned int eh_action),
0523 TP_ARGS(link, devno, eh_action));
0524
0525 DECLARE_EVENT_CLASS(ata_link_reset_begin_template,
0526
0527 TP_PROTO(struct ata_link *link, unsigned int *class, unsigned long deadline),
0528
0529 TP_ARGS(link, class, deadline),
0530
0531 TP_STRUCT__entry(
0532 __field( unsigned int, ata_port )
0533 __array( unsigned int, class, 2 )
0534 __field( unsigned long, deadline )
0535 ),
0536
0537 TP_fast_assign(
0538 __entry->ata_port = link->ap->print_id;
0539 memcpy(__entry->class, class, 2);
0540 __entry->deadline = deadline;
0541 ),
0542
0543 TP_printk("ata_port=%u deadline=%lu classes=[%s,%s]",
0544 __entry->ata_port, __entry->deadline,
0545 show_class_name(__entry->class[0]),
0546 show_class_name(__entry->class[1]))
0547 );
0548
0549 DEFINE_EVENT(ata_link_reset_begin_template, ata_link_hardreset_begin,
0550 TP_PROTO(struct ata_link *link, unsigned int *class, unsigned long deadline),
0551 TP_ARGS(link, class, deadline));
0552
0553 DEFINE_EVENT(ata_link_reset_begin_template, ata_slave_hardreset_begin,
0554 TP_PROTO(struct ata_link *link, unsigned int *class, unsigned long deadline),
0555 TP_ARGS(link, class, deadline));
0556
0557 DEFINE_EVENT(ata_link_reset_begin_template, ata_link_softreset_begin,
0558 TP_PROTO(struct ata_link *link, unsigned int *class, unsigned long deadline),
0559 TP_ARGS(link, class, deadline));
0560
0561 DECLARE_EVENT_CLASS(ata_link_reset_end_template,
0562
0563 TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
0564
0565 TP_ARGS(link, class, rc),
0566
0567 TP_STRUCT__entry(
0568 __field( unsigned int, ata_port )
0569 __array( unsigned int, class, 2 )
0570 __field( int, rc )
0571 ),
0572
0573 TP_fast_assign(
0574 __entry->ata_port = link->ap->print_id;
0575 memcpy(__entry->class, class, 2);
0576 __entry->rc = rc;
0577 ),
0578
0579 TP_printk("ata_port=%u rc=%d class=[%s,%s]",
0580 __entry->ata_port, __entry->rc,
0581 show_class_name(__entry->class[0]),
0582 show_class_name(__entry->class[1]))
0583 );
0584
0585 DEFINE_EVENT(ata_link_reset_end_template, ata_link_hardreset_end,
0586 TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
0587 TP_ARGS(link, class, rc));
0588
0589 DEFINE_EVENT(ata_link_reset_end_template, ata_slave_hardreset_end,
0590 TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
0591 TP_ARGS(link, class, rc));
0592
0593 DEFINE_EVENT(ata_link_reset_end_template, ata_link_softreset_end,
0594 TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
0595 TP_ARGS(link, class, rc));
0596
0597 DEFINE_EVENT(ata_link_reset_end_template, ata_link_postreset,
0598 TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
0599 TP_ARGS(link, class, rc));
0600
0601 DEFINE_EVENT(ata_link_reset_end_template, ata_slave_postreset,
0602 TP_PROTO(struct ata_link *link, unsigned int *class, int rc),
0603 TP_ARGS(link, class, rc));
0604
0605 DECLARE_EVENT_CLASS(ata_port_eh_begin_template,
0606
0607 TP_PROTO(struct ata_port *ap),
0608
0609 TP_ARGS(ap),
0610
0611 TP_STRUCT__entry(
0612 __field( unsigned int, ata_port )
0613 ),
0614
0615 TP_fast_assign(
0616 __entry->ata_port = ap->print_id;
0617 ),
0618
0619 TP_printk("ata_port=%u", __entry->ata_port)
0620 );
0621
0622 DEFINE_EVENT(ata_port_eh_begin_template, ata_std_sched_eh,
0623 TP_PROTO(struct ata_port *ap),
0624 TP_ARGS(ap));
0625
0626 DEFINE_EVENT(ata_port_eh_begin_template, ata_port_freeze,
0627 TP_PROTO(struct ata_port *ap),
0628 TP_ARGS(ap));
0629
0630 DEFINE_EVENT(ata_port_eh_begin_template, ata_port_thaw,
0631 TP_PROTO(struct ata_port *ap),
0632 TP_ARGS(ap));
0633
0634 DECLARE_EVENT_CLASS(ata_sff_hsm_template,
0635
0636 TP_PROTO(struct ata_queued_cmd *qc, unsigned char status),
0637
0638 TP_ARGS(qc, status),
0639
0640 TP_STRUCT__entry(
0641 __field( unsigned int, ata_port )
0642 __field( unsigned int, ata_dev )
0643 __field( unsigned int, tag )
0644 __field( unsigned int, qc_flags )
0645 __field( unsigned int, protocol )
0646 __field( unsigned int, hsm_state )
0647 __field( unsigned char, dev_state )
0648 ),
0649
0650 TP_fast_assign(
0651 __entry->ata_port = qc->ap->print_id;
0652 __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
0653 __entry->tag = qc->tag;
0654 __entry->qc_flags = qc->flags;
0655 __entry->protocol = qc->tf.protocol;
0656 __entry->hsm_state = qc->ap->hsm_task_state;
0657 __entry->dev_state = status;
0658 ),
0659
0660 TP_printk("ata_port=%u ata_dev=%u tag=%d proto=%s flags=%s task_state=%s dev_stat=0x%X",
0661 __entry->ata_port, __entry->ata_dev, __entry->tag,
0662 show_protocol_name(__entry->protocol),
0663 __parse_qc_flags(__entry->qc_flags),
0664 show_sff_hsm_state_name(__entry->hsm_state),
0665 __entry->dev_state)
0666 );
0667
0668 DEFINE_EVENT(ata_sff_hsm_template, ata_sff_hsm_state,
0669 TP_PROTO(struct ata_queued_cmd *qc, unsigned char state),
0670 TP_ARGS(qc, state));
0671
0672 DEFINE_EVENT(ata_sff_hsm_template, ata_sff_hsm_command_complete,
0673 TP_PROTO(struct ata_queued_cmd *qc, unsigned char state),
0674 TP_ARGS(qc, state));
0675
0676 DEFINE_EVENT(ata_sff_hsm_template, ata_sff_port_intr,
0677 TP_PROTO(struct ata_queued_cmd *qc, unsigned char state),
0678 TP_ARGS(qc, state));
0679
0680 DECLARE_EVENT_CLASS(ata_transfer_data_template,
0681
0682 TP_PROTO(struct ata_queued_cmd *qc, unsigned int offset, unsigned int count),
0683
0684 TP_ARGS(qc, offset, count),
0685
0686 TP_STRUCT__entry(
0687 __field( unsigned int, ata_port )
0688 __field( unsigned int, ata_dev )
0689 __field( unsigned int, tag )
0690 __field( unsigned int, flags )
0691 __field( unsigned int, offset )
0692 __field( unsigned int, bytes )
0693 ),
0694
0695 TP_fast_assign(
0696 __entry->ata_port = qc->ap->print_id;
0697 __entry->ata_dev = qc->dev->link->pmp + qc->dev->devno;
0698 __entry->tag = qc->tag;
0699 __entry->flags = qc->tf.flags;
0700 __entry->offset = offset;
0701 __entry->bytes = count;
0702 ),
0703
0704 TP_printk("ata_port=%u ata_dev=%u tag=%d flags=%s offset=%u bytes=%u",
0705 __entry->ata_port, __entry->ata_dev, __entry->tag,
0706 __parse_tf_flags(__entry->flags),
0707 __entry->offset, __entry->bytes)
0708 );
0709
0710 DEFINE_EVENT(ata_transfer_data_template, ata_sff_pio_transfer_data,
0711 TP_PROTO(struct ata_queued_cmd *qc, unsigned int offset, unsigned int count),
0712 TP_ARGS(qc, offset, count));
0713
0714 DEFINE_EVENT(ata_transfer_data_template, atapi_pio_transfer_data,
0715 TP_PROTO(struct ata_queued_cmd *qc, unsigned int offset, unsigned int count),
0716 TP_ARGS(qc, offset, count));
0717
0718 DEFINE_EVENT(ata_transfer_data_template, atapi_send_cdb,
0719 TP_PROTO(struct ata_queued_cmd *qc, unsigned int offset, unsigned int count),
0720 TP_ARGS(qc, offset, count));
0721
0722 DECLARE_EVENT_CLASS(ata_sff_template,
0723
0724 TP_PROTO(struct ata_port *ap),
0725
0726 TP_ARGS(ap),
0727
0728 TP_STRUCT__entry(
0729 __field( unsigned int, ata_port )
0730 __field( unsigned char, hsm_state )
0731 ),
0732
0733 TP_fast_assign(
0734 __entry->ata_port = ap->print_id;
0735 __entry->hsm_state = ap->hsm_task_state;
0736 ),
0737
0738 TP_printk("ata_port=%u task_state=%s",
0739 __entry->ata_port,
0740 show_sff_hsm_state_name(__entry->hsm_state))
0741 );
0742
0743 DEFINE_EVENT(ata_sff_template, ata_sff_flush_pio_task,
0744 TP_PROTO(struct ata_port *ap),
0745 TP_ARGS(ap));
0746
0747 #endif
0748
0749
0750 #include <trace/define_trace.h>