Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 #undef TRACE_SYSTEM
0003 #define TRACE_SYSTEM mmc
0004 
0005 #if !defined(_TRACE_MMC_H) || defined(TRACE_HEADER_MULTI_READ)
0006 #define _TRACE_MMC_H
0007 
0008 #include <linux/blkdev.h>
0009 #include <linux/mmc/core.h>
0010 #include <linux/mmc/host.h>
0011 #include <linux/tracepoint.h>
0012 
0013 TRACE_EVENT(mmc_request_start,
0014 
0015     TP_PROTO(struct mmc_host *host, struct mmc_request *mrq),
0016 
0017     TP_ARGS(host, mrq),
0018 
0019     TP_STRUCT__entry(
0020         __field(u32,            cmd_opcode)
0021         __field(u32,            cmd_arg)
0022         __field(unsigned int,       cmd_flags)
0023         __field(unsigned int,       cmd_retries)
0024         __field(u32,            stop_opcode)
0025         __field(u32,            stop_arg)
0026         __field(unsigned int,       stop_flags)
0027         __field(unsigned int,       stop_retries)
0028         __field(u32,            sbc_opcode)
0029         __field(u32,            sbc_arg)
0030         __field(unsigned int,       sbc_flags)
0031         __field(unsigned int,       sbc_retries)
0032         __field(unsigned int,       blocks)
0033         __field(unsigned int,       blk_addr)
0034         __field(unsigned int,       blksz)
0035         __field(unsigned int,       data_flags)
0036         __field(int,            tag)
0037         __field(unsigned int,       can_retune)
0038         __field(unsigned int,       doing_retune)
0039         __field(unsigned int,       retune_now)
0040         __field(int,            need_retune)
0041         __field(int,            hold_retune)
0042         __field(unsigned int,       retune_period)
0043         __field(struct mmc_request *,   mrq)
0044         __string(name,          mmc_hostname(host))
0045     ),
0046 
0047     TP_fast_assign(
0048         __entry->cmd_opcode = mrq->cmd ? mrq->cmd->opcode : 0;
0049         __entry->cmd_arg = mrq->cmd ? mrq->cmd->arg : 0;
0050         __entry->cmd_flags = mrq->cmd ? mrq->cmd->flags : 0;
0051         __entry->cmd_retries = mrq->cmd ? mrq->cmd->retries : 0;
0052         __entry->stop_opcode = mrq->stop ? mrq->stop->opcode : 0;
0053         __entry->stop_arg = mrq->stop ? mrq->stop->arg : 0;
0054         __entry->stop_flags = mrq->stop ? mrq->stop->flags : 0;
0055         __entry->stop_retries = mrq->stop ? mrq->stop->retries : 0;
0056         __entry->sbc_opcode = mrq->sbc ? mrq->sbc->opcode : 0;
0057         __entry->sbc_arg = mrq->sbc ? mrq->sbc->arg : 0;
0058         __entry->sbc_flags = mrq->sbc ? mrq->sbc->flags : 0;
0059         __entry->sbc_retries = mrq->sbc ? mrq->sbc->retries : 0;
0060         __entry->blksz = mrq->data ? mrq->data->blksz : 0;
0061         __entry->blocks = mrq->data ? mrq->data->blocks : 0;
0062         __entry->blk_addr = mrq->data ? mrq->data->blk_addr : 0;
0063         __entry->data_flags = mrq->data ? mrq->data->flags : 0;
0064         __entry->tag = mrq->tag;
0065         __entry->can_retune = host->can_retune;
0066         __entry->doing_retune = host->doing_retune;
0067         __entry->retune_now = host->retune_now;
0068         __entry->need_retune = host->need_retune;
0069         __entry->hold_retune = host->hold_retune;
0070         __entry->retune_period = host->retune_period;
0071         __assign_str(name, mmc_hostname(host));
0072         __entry->mrq = mrq;
0073     ),
0074 
0075     TP_printk("%s: start struct mmc_request[%p]: "
0076           "cmd_opcode=%u cmd_arg=0x%x cmd_flags=0x%x cmd_retries=%u "
0077           "stop_opcode=%u stop_arg=0x%x stop_flags=0x%x stop_retries=%u "
0078           "sbc_opcode=%u sbc_arg=0x%x sbc_flags=0x%x sbc_retires=%u "
0079           "blocks=%u block_size=%u blk_addr=%u data_flags=0x%x "
0080           "tag=%d can_retune=%u doing_retune=%u retune_now=%u "
0081           "need_retune=%d hold_retune=%d retune_period=%u",
0082           __get_str(name), __entry->mrq,
0083           __entry->cmd_opcode, __entry->cmd_arg,
0084           __entry->cmd_flags, __entry->cmd_retries,
0085           __entry->stop_opcode, __entry->stop_arg,
0086           __entry->stop_flags, __entry->stop_retries,
0087           __entry->sbc_opcode, __entry->sbc_arg,
0088           __entry->sbc_flags, __entry->sbc_retries,
0089           __entry->blocks, __entry->blksz,
0090           __entry->blk_addr, __entry->data_flags, __entry->tag,
0091           __entry->can_retune, __entry->doing_retune,
0092           __entry->retune_now, __entry->need_retune,
0093           __entry->hold_retune, __entry->retune_period)
0094 );
0095 
0096 TRACE_EVENT(mmc_request_done,
0097 
0098     TP_PROTO(struct mmc_host *host, struct mmc_request *mrq),
0099 
0100     TP_ARGS(host, mrq),
0101 
0102     TP_STRUCT__entry(
0103         __field(u32,            cmd_opcode)
0104         __field(int,            cmd_err)
0105         __array(u32,            cmd_resp,   4)
0106         __field(unsigned int,       cmd_retries)
0107         __field(u32,            stop_opcode)
0108         __field(int,            stop_err)
0109         __array(u32,            stop_resp,  4)
0110         __field(unsigned int,       stop_retries)
0111         __field(u32,            sbc_opcode)
0112         __field(int,            sbc_err)
0113         __array(u32,            sbc_resp,   4)
0114         __field(unsigned int,       sbc_retries)
0115         __field(unsigned int,       bytes_xfered)
0116         __field(int,            data_err)
0117         __field(int,            tag)
0118         __field(unsigned int,       can_retune)
0119         __field(unsigned int,       doing_retune)
0120         __field(unsigned int,       retune_now)
0121         __field(int,            need_retune)
0122         __field(int,            hold_retune)
0123         __field(unsigned int,       retune_period)
0124         __field(struct mmc_request *,   mrq)
0125         __string(name,          mmc_hostname(host))
0126     ),
0127 
0128     TP_fast_assign(
0129         __entry->cmd_opcode = mrq->cmd ? mrq->cmd->opcode : 0;
0130         __entry->cmd_err = mrq->cmd ? mrq->cmd->error : 0;
0131         __entry->cmd_resp[0] = mrq->cmd ? mrq->cmd->resp[0] : 0;
0132         __entry->cmd_resp[1] = mrq->cmd ? mrq->cmd->resp[1] : 0;
0133         __entry->cmd_resp[2] = mrq->cmd ? mrq->cmd->resp[2] : 0;
0134         __entry->cmd_resp[3] = mrq->cmd ? mrq->cmd->resp[3] : 0;
0135         __entry->cmd_retries = mrq->cmd ? mrq->cmd->retries : 0;
0136         __entry->stop_opcode = mrq->stop ? mrq->stop->opcode : 0;
0137         __entry->stop_err = mrq->stop ? mrq->stop->error : 0;
0138         __entry->stop_resp[0] = mrq->stop ? mrq->stop->resp[0] : 0;
0139         __entry->stop_resp[1] = mrq->stop ? mrq->stop->resp[1] : 0;
0140         __entry->stop_resp[2] = mrq->stop ? mrq->stop->resp[2] : 0;
0141         __entry->stop_resp[3] = mrq->stop ? mrq->stop->resp[3] : 0;
0142         __entry->stop_retries = mrq->stop ? mrq->stop->retries : 0;
0143         __entry->sbc_opcode = mrq->sbc ? mrq->sbc->opcode : 0;
0144         __entry->sbc_err = mrq->sbc ? mrq->sbc->error : 0;
0145         __entry->sbc_resp[0] = mrq->sbc ? mrq->sbc->resp[0] : 0;
0146         __entry->sbc_resp[1] = mrq->sbc ? mrq->sbc->resp[1] : 0;
0147         __entry->sbc_resp[2] = mrq->sbc ? mrq->sbc->resp[2] : 0;
0148         __entry->sbc_resp[3] = mrq->sbc ? mrq->sbc->resp[3] : 0;
0149         __entry->sbc_retries = mrq->sbc ? mrq->sbc->retries : 0;
0150         __entry->bytes_xfered = mrq->data ? mrq->data->bytes_xfered : 0;
0151         __entry->data_err = mrq->data ? mrq->data->error : 0;
0152         __entry->tag = mrq->tag;
0153         __entry->can_retune = host->can_retune;
0154         __entry->doing_retune = host->doing_retune;
0155         __entry->retune_now = host->retune_now;
0156         __entry->need_retune = host->need_retune;
0157         __entry->hold_retune = host->hold_retune;
0158         __entry->retune_period = host->retune_period;
0159         __assign_str(name, mmc_hostname(host));
0160         __entry->mrq = mrq;
0161     ),
0162 
0163     TP_printk("%s: end struct mmc_request[%p]: "
0164           "cmd_opcode=%u cmd_err=%d cmd_resp=0x%x 0x%x 0x%x 0x%x "
0165           "cmd_retries=%u stop_opcode=%u stop_err=%d "
0166           "stop_resp=0x%x 0x%x 0x%x 0x%x stop_retries=%u "
0167           "sbc_opcode=%u sbc_err=%d sbc_resp=0x%x 0x%x 0x%x 0x%x "
0168           "sbc_retries=%u bytes_xfered=%u data_err=%d tag=%d "
0169           "can_retune=%u doing_retune=%u retune_now=%u need_retune=%d "
0170           "hold_retune=%d retune_period=%u",
0171           __get_str(name), __entry->mrq,
0172           __entry->cmd_opcode, __entry->cmd_err,
0173           __entry->cmd_resp[0], __entry->cmd_resp[1],
0174           __entry->cmd_resp[2], __entry->cmd_resp[3],
0175           __entry->cmd_retries,
0176           __entry->stop_opcode, __entry->stop_err,
0177           __entry->stop_resp[0], __entry->stop_resp[1],
0178           __entry->stop_resp[2], __entry->stop_resp[3],
0179           __entry->stop_retries,
0180           __entry->sbc_opcode, __entry->sbc_err,
0181           __entry->sbc_resp[0], __entry->sbc_resp[1],
0182           __entry->sbc_resp[2], __entry->sbc_resp[3],
0183           __entry->sbc_retries,
0184           __entry->bytes_xfered, __entry->data_err, __entry->tag,
0185           __entry->can_retune, __entry->doing_retune,
0186           __entry->retune_now, __entry->need_retune,
0187           __entry->hold_retune, __entry->retune_period)
0188 );
0189 
0190 #endif /* _TRACE_MMC_H */
0191 
0192 /* This part must be outside protection */
0193 #include <trace/define_trace.h>