brintos

brintos / linux-shallow public Read only

0
0
Text · 23.7 KiB · 6025dd8 Raw
751 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#undef TRACE_SYSTEM3#define TRACE_SYSTEM libata4 5#if !defined(_TRACE_LIBATA_H) || defined(TRACE_HEADER_MULTI_READ)6#define _TRACE_LIBATA_H7 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>751