1bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#undef TRACE_SYSTEM 2bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#define TRACE_SYSTEM scsi 3bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 4bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#if !defined(_TRACE_SCSI_H) || defined(TRACE_HEADER_MULTI_READ) 5bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#define _TRACE_SCSI_H 6bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 7bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#include <scsi/scsi_cmnd.h> 8bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#include <scsi/scsi_host.h> 9bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#include <linux/tracepoint.h> 10bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#include <linux/trace_seq.h> 11bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 12bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#define scsi_opcode_name(opcode) { opcode, #opcode } 13bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#define show_opcode_name(val) \ 14bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __print_symbolic(val, \ 15bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(TEST_UNIT_READY), \ 16bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(REZERO_UNIT), \ 17bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(REQUEST_SENSE), \ 18bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(FORMAT_UNIT), \ 19bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_BLOCK_LIMITS), \ 20bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(REASSIGN_BLOCKS), \ 21bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(INITIALIZE_ELEMENT_STATUS), \ 22bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_6), \ 23bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_6), \ 24bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SEEK_6), \ 25bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_REVERSE), \ 26bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_FILEMARKS), \ 27bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SPACE), \ 28bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(INQUIRY), \ 29bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(RECOVER_BUFFERED_DATA), \ 30bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(MODE_SELECT), \ 31bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(RESERVE), \ 32bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(RELEASE), \ 33bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(COPY), \ 34bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(ERASE), \ 35bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(MODE_SENSE), \ 36bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(START_STOP), \ 37bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(RECEIVE_DIAGNOSTIC), \ 38bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SEND_DIAGNOSTIC), \ 39bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(ALLOW_MEDIUM_REMOVAL), \ 40bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SET_WINDOW), \ 41bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_CAPACITY), \ 42bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_10), \ 43bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_10), \ 44bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SEEK_10), \ 45bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(POSITION_TO_ELEMENT), \ 46bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_VERIFY), \ 47bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(VERIFY), \ 48bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SEARCH_HIGH), \ 49bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SEARCH_EQUAL), \ 50bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SEARCH_LOW), \ 51bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SET_LIMITS), \ 52bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(PRE_FETCH), \ 53bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_POSITION), \ 54bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SYNCHRONIZE_CACHE), \ 55bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(LOCK_UNLOCK_CACHE), \ 56bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_DEFECT_DATA), \ 57bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(MEDIUM_SCAN), \ 58bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(COMPARE), \ 59bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(COPY_VERIFY), \ 60bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_BUFFER), \ 61bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_BUFFER), \ 62bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(UPDATE_BLOCK), \ 63bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_LONG), \ 64bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_LONG), \ 65bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(CHANGE_DEFINITION), \ 66bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_SAME), \ 67bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(UNMAP), \ 68bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_TOC), \ 69bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(LOG_SELECT), \ 70bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(LOG_SENSE), \ 71bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(XDWRITEREAD_10), \ 72bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(MODE_SELECT_10), \ 73bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(RESERVE_10), \ 74bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(RELEASE_10), \ 75bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(MODE_SENSE_10), \ 76bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(PERSISTENT_RESERVE_IN), \ 77bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(PERSISTENT_RESERVE_OUT), \ 78bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(VARIABLE_LENGTH_CMD), \ 79bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(REPORT_LUNS), \ 80bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(MAINTENANCE_IN), \ 81bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(MAINTENANCE_OUT), \ 82bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(MOVE_MEDIUM), \ 83bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(EXCHANGE_MEDIUM), \ 84bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_12), \ 85bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_12), \ 86bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_VERIFY_12), \ 87bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SEARCH_HIGH_12), \ 88bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SEARCH_EQUAL_12), \ 89bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SEARCH_LOW_12), \ 90bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_ELEMENT_STATUS), \ 91bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SEND_VOLUME_TAG), \ 92bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_LONG_2), \ 93bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_16), \ 94bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_16), \ 95bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(VERIFY_16), \ 96bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_SAME_16), \ 97bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SERVICE_ACTION_IN), \ 98bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SAI_READ_CAPACITY_16), \ 99bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(SAI_GET_LBA_STATUS), \ 100bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(MI_REPORT_TARGET_PGS), \ 101bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(MO_SET_TARGET_PGS), \ 102bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(READ_32), \ 103bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_32), \ 104bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(WRITE_SAME_32), \ 105bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(ATA_16), \ 106bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_opcode_name(ATA_12)) 107bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 108bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#define scsi_hostbyte_name(result) { result, #result } 109bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#define show_hostbyte_name(val) \ 110bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __print_symbolic(val, \ 111bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_OK), \ 112bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_NO_CONNECT), \ 113bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_BUS_BUSY), \ 114bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_TIME_OUT), \ 115bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_BAD_TARGET), \ 116bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_ABORT), \ 117bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_PARITY), \ 118bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_ERROR), \ 119bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_RESET), \ 120bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_BAD_INTR), \ 121bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_PASSTHROUGH), \ 122bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_SOFT_ERROR), \ 123bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_IMM_RETRY), \ 124bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_REQUEUE), \ 125bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_TRANSPORT_DISRUPTED), \ 126bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_hostbyte_name(DID_TRANSPORT_FAILFAST)) 127bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 128bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#define scsi_driverbyte_name(result) { result, #result } 129bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#define show_driverbyte_name(val) \ 130bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __print_symbolic(val, \ 131bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_driverbyte_name(DRIVER_OK), \ 132bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_driverbyte_name(DRIVER_BUSY), \ 133bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_driverbyte_name(DRIVER_SOFT), \ 134bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_driverbyte_name(DRIVER_MEDIA), \ 135bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_driverbyte_name(DRIVER_ERROR), \ 136bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_driverbyte_name(DRIVER_INVALID), \ 137bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_driverbyte_name(DRIVER_TIMEOUT), \ 138bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_driverbyte_name(DRIVER_HARD), \ 139bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_driverbyte_name(DRIVER_SENSE)) 140bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 141bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#define scsi_msgbyte_name(result) { result, #result } 142bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#define show_msgbyte_name(val) \ 143bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __print_symbolic(val, \ 144bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(COMMAND_COMPLETE), \ 145bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(EXTENDED_MESSAGE), \ 146bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(SAVE_POINTERS), \ 147bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(RESTORE_POINTERS), \ 148bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(DISCONNECT), \ 149bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(INITIATOR_ERROR), \ 150bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(ABORT_TASK_SET), \ 151bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(MESSAGE_REJECT), \ 152bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(NOP), \ 153bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(MSG_PARITY_ERROR), \ 154bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(LINKED_CMD_COMPLETE), \ 155bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(LINKED_FLG_CMD_COMPLETE), \ 156bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(TARGET_RESET), \ 157bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(ABORT_TASK), \ 158bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(CLEAR_TASK_SET), \ 159bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(INITIATE_RECOVERY), \ 160bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(RELEASE_RECOVERY), \ 161bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(CLEAR_ACA), \ 162bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(LOGICAL_UNIT_RESET), \ 163bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(SIMPLE_QUEUE_TAG), \ 164bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(HEAD_OF_QUEUE_TAG), \ 165bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(ORDERED_QUEUE_TAG), \ 166bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(IGNORE_WIDE_RESIDUE), \ 167bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(ACA), \ 168bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(QAS_REQUEST), \ 169bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(BUS_DEVICE_RESET), \ 170bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_msgbyte_name(ABORT)) 171bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 172bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#define scsi_statusbyte_name(result) { result, #result } 173bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#define show_statusbyte_name(val) \ 174bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __print_symbolic(val, \ 175bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_statusbyte_name(SAM_STAT_GOOD), \ 176bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_statusbyte_name(SAM_STAT_CHECK_CONDITION), \ 177bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_statusbyte_name(SAM_STAT_CONDITION_MET), \ 178bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_statusbyte_name(SAM_STAT_BUSY), \ 179bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_statusbyte_name(SAM_STAT_INTERMEDIATE), \ 180bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_statusbyte_name(SAM_STAT_INTERMEDIATE_CONDITION_MET), \ 181bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_statusbyte_name(SAM_STAT_RESERVATION_CONFLICT), \ 182bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_statusbyte_name(SAM_STAT_COMMAND_TERMINATED), \ 183bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_statusbyte_name(SAM_STAT_TASK_SET_FULL), \ 184bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_statusbyte_name(SAM_STAT_ACA_ACTIVE), \ 185bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga scsi_statusbyte_name(SAM_STAT_TASK_ABORTED)) 186bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 18772f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen#define scsi_prot_op_name(result) { result, #result } 18872f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen#define show_prot_op_name(val) \ 18972f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen __print_symbolic(val, \ 19072f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen scsi_prot_op_name(SCSI_PROT_NORMAL), \ 19172f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen scsi_prot_op_name(SCSI_PROT_READ_INSERT), \ 19272f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen scsi_prot_op_name(SCSI_PROT_WRITE_STRIP), \ 19372f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen scsi_prot_op_name(SCSI_PROT_READ_STRIP), \ 19472f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen scsi_prot_op_name(SCSI_PROT_WRITE_INSERT), \ 19572f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen scsi_prot_op_name(SCSI_PROT_READ_PASS), \ 19672f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen scsi_prot_op_name(SCSI_PROT_WRITE_PASS)) 19772f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen 198bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunagaconst char *scsi_trace_parse_cdb(struct trace_seq*, unsigned char*, int); 199bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#define __parse_cdb(cdb, len) scsi_trace_parse_cdb(p, cdb, len) 200bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 201bf81623542332bc2cedf3db49cbb2edb724780d2Kei TokunagaTRACE_EVENT(scsi_dispatch_cmd_start, 202bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 203bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_PROTO(struct scsi_cmnd *cmd), 204bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 205bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_ARGS(cmd), 206bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 207bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_STRUCT__entry( 208bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, host_no ) 209bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, channel ) 210bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, id ) 211bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, lun ) 212bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, opcode ) 213bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, cmd_len ) 214c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __field( unsigned int, data_sglen ) 215c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __field( unsigned int, prot_sglen ) 21672f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen __field( unsigned char, prot_op ) 217bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __dynamic_array(unsigned char, cmnd, cmd->cmd_len) 218bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga ), 219bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 220bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_fast_assign( 221bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->host_no = cmd->device->host->host_no; 222bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->channel = cmd->device->channel; 223bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->id = cmd->device->id; 224bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->lun = cmd->device->lun; 225bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->opcode = cmd->cmnd[0]; 226bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->cmd_len = cmd->cmd_len; 227c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __entry->data_sglen = scsi_sg_count(cmd); 228c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __entry->prot_sglen = scsi_prot_sg_count(cmd); 22972f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen __entry->prot_op = scsi_get_prot_op(cmd); 230bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga memcpy(__get_dynamic_array(cmnd), cmd->cmnd, cmd->cmd_len); 231bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga ), 232bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 233c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen TP_printk("host_no=%u channel=%u id=%u lun=%u data_sgl=%u prot_sgl=%u" \ 23472f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen " prot_op=%s cmnd=(%s %s raw=%s)", 235bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->host_no, __entry->channel, __entry->id, 236c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __entry->lun, __entry->data_sglen, __entry->prot_sglen, 23772f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen show_prot_op_name(__entry->prot_op), 238c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen show_opcode_name(__entry->opcode), 239bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __parse_cdb(__get_dynamic_array(cmnd), __entry->cmd_len), 240bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __print_hex(__get_dynamic_array(cmnd), __entry->cmd_len)) 241bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga); 242bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 243bf81623542332bc2cedf3db49cbb2edb724780d2Kei TokunagaTRACE_EVENT(scsi_dispatch_cmd_error, 244bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 245bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_PROTO(struct scsi_cmnd *cmd, int rtn), 246bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 247bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_ARGS(cmd, rtn), 248bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 249bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_STRUCT__entry( 250bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, host_no ) 251bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, channel ) 252bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, id ) 253bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, lun ) 254bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( int, rtn ) 255bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, opcode ) 256bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, cmd_len ) 257c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __field( unsigned int, data_sglen ) 258c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __field( unsigned int, prot_sglen ) 25972f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen __field( unsigned char, prot_op ) 260bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __dynamic_array(unsigned char, cmnd, cmd->cmd_len) 261bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga ), 262bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 263bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_fast_assign( 264bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->host_no = cmd->device->host->host_no; 265bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->channel = cmd->device->channel; 266bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->id = cmd->device->id; 267bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->lun = cmd->device->lun; 268bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->rtn = rtn; 269bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->opcode = cmd->cmnd[0]; 270bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->cmd_len = cmd->cmd_len; 271c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __entry->data_sglen = scsi_sg_count(cmd); 272c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __entry->prot_sglen = scsi_prot_sg_count(cmd); 27372f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen __entry->prot_op = scsi_get_prot_op(cmd); 274bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga memcpy(__get_dynamic_array(cmnd), cmd->cmnd, cmd->cmd_len); 275bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga ), 276bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 277c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen TP_printk("host_no=%u channel=%u id=%u lun=%u data_sgl=%u prot_sgl=%u" \ 27872f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen " prot_op=%s cmnd=(%s %s raw=%s) rtn=%d", 279bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->host_no, __entry->channel, __entry->id, 280c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __entry->lun, __entry->data_sglen, __entry->prot_sglen, 28172f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen show_prot_op_name(__entry->prot_op), 282c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen show_opcode_name(__entry->opcode), 283bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __parse_cdb(__get_dynamic_array(cmnd), __entry->cmd_len), 284bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __print_hex(__get_dynamic_array(cmnd), __entry->cmd_len), 285bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->rtn) 286bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga); 287bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 288bf81623542332bc2cedf3db49cbb2edb724780d2Kei TokunagaDECLARE_EVENT_CLASS(scsi_cmd_done_timeout_template, 289bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 290bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_PROTO(struct scsi_cmnd *cmd), 291bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 292bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_ARGS(cmd), 293bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 294bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_STRUCT__entry( 295bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, host_no ) 296bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, channel ) 297bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, id ) 298bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, lun ) 299bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( int, result ) 300bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, opcode ) 301bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, cmd_len ) 302c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __field( unsigned int, data_sglen ) 303c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __field( unsigned int, prot_sglen ) 30472f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen __field( unsigned char, prot_op ) 305bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __dynamic_array(unsigned char, cmnd, cmd->cmd_len) 306bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga ), 307bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 308bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_fast_assign( 309bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->host_no = cmd->device->host->host_no; 310bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->channel = cmd->device->channel; 311bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->id = cmd->device->id; 312bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->lun = cmd->device->lun; 313bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->result = cmd->result; 314bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->opcode = cmd->cmnd[0]; 315bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->cmd_len = cmd->cmd_len; 316c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __entry->data_sglen = scsi_sg_count(cmd); 317c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __entry->prot_sglen = scsi_prot_sg_count(cmd); 31872f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen __entry->prot_op = scsi_get_prot_op(cmd); 319bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga memcpy(__get_dynamic_array(cmnd), cmd->cmnd, cmd->cmd_len); 320bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga ), 321bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 322c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen TP_printk("host_no=%u channel=%u id=%u lun=%u data_sgl=%u " \ 32372f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen "prot_sgl=%u prot_op=%s cmnd=(%s %s raw=%s) result=(driver=" \ 32472f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen "%s host=%s message=%s status=%s)", 325bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->host_no, __entry->channel, __entry->id, 326c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen __entry->lun, __entry->data_sglen, __entry->prot_sglen, 32772f7d322fd60ce1a0579136dec7b26b0801ded4bMartin K. Petersen show_prot_op_name(__entry->prot_op), 328c446c1f9907e84d014edb0bf3501f30cb512e06aMartin K. Petersen show_opcode_name(__entry->opcode), 329bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __parse_cdb(__get_dynamic_array(cmnd), __entry->cmd_len), 330bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __print_hex(__get_dynamic_array(cmnd), __entry->cmd_len), 331bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga show_driverbyte_name(((__entry->result) >> 24) & 0xff), 332bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga show_hostbyte_name(((__entry->result) >> 16) & 0xff), 333bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga show_msgbyte_name(((__entry->result) >> 8) & 0xff), 334bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga show_statusbyte_name(__entry->result & 0xff)) 335bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga); 336bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 337bf81623542332bc2cedf3db49cbb2edb724780d2Kei TokunagaDEFINE_EVENT(scsi_cmd_done_timeout_template, scsi_dispatch_cmd_done, 338bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_PROTO(struct scsi_cmnd *cmd), 339bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_ARGS(cmd)); 340bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 341bf81623542332bc2cedf3db49cbb2edb724780d2Kei TokunagaDEFINE_EVENT(scsi_cmd_done_timeout_template, scsi_dispatch_cmd_timeout, 342bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_PROTO(struct scsi_cmnd *cmd), 343bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_ARGS(cmd)); 344bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 345bf81623542332bc2cedf3db49cbb2edb724780d2Kei TokunagaTRACE_EVENT(scsi_eh_wakeup, 346bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 347bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_PROTO(struct Scsi_Host *shost), 348bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 349bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_ARGS(shost), 350bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 351bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_STRUCT__entry( 352bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __field( unsigned int, host_no ) 353bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga ), 354bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 355bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_fast_assign( 356bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga __entry->host_no = shost->host_no; 357bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga ), 358bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 359bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga TP_printk("host_no=%u", __entry->host_no) 360bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga); 361bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 362bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#endif /* _TRACE_SCSI_H */ 363bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga 364bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga/* This part must be outside protection */ 365bf81623542332bc2cedf3db49cbb2edb724780d2Kei Tokunaga#include <trace/define_trace.h> 366