cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

libata.h (24289B)


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