Next | Prev | Up | Top | Contents | Index

SCSI States and Phases

Several of the SCSI states and phases are listed in Table B-5. There are other possible states and phases, but they rarely occur. The SCSI states and phases are listed in the files /usr/include/sys/wd93.h and /usr/include/sys/wd95.h and perhaps in scsi.h. The comments below have been extracted from these files and supplemented with additional information.

Note: "Out" is from the CPU to the SCSI device in these descriptions, and "receive" and "send" are also from the SCSI device point of view, since the target controls all the bus phases except for initial selection.

SCSI State Error Messages
State Message Sense Key Comments
ST_RESET 0x00 SCSI chip reset by reset command or power-up.
ST_SELECT 0x11 Selection of target complete (after C93SELATN).
ST_SATOK 0x16 Select-And-Transfer completed successfully, that is, all phases have completed in a normal manner.
ST_TR_DATAOUT 0x18 Transfer cmd done, target requesting data.
ST_TR_DATAIN 0x19 Transfer cmd done, target sending data.
ST_TR_STATIN 0x1b Target is sending status in.
ST_TR_MSGIN 0x1f Transfer cmd done, target sending msg.
ST_TRANPAUSE 0x20 Transfer cmd has paused with ACK.
ST_SAVEDP 0x21 Save Data Pointers message during SAT normal state when device is disconnecting from the bus.
ST_A_RESELECT 0x27 Reselected after disc (93A).
ST_UNEXPDISC 0x41 An unexpected disconnect device disconnected without sending a disconnect message; sometimes happens when devices with removable media have had the media removed during a transfer.
ST_PARITY 0x43 Cmd terminated due to parity error on the SCSI bus.
ST_PARITY_ATN 0x44 Cmd terminated due to parity error (ATN is asserted so that host can send a message to device; the transfer is just aborted).
ST_TIMEOUT 0x42 Time-out during Select or Reselect, that is, the device never responded to an attempt to select it; normally seen only during hardware inventory probing, but sometimes happens after a SCSI bus reset if device takes a long time to recover from the reset or is powered off.
ST_INCORR_DATA 0x47 Incorrect message or status byte.
ST_UNEX_RDATA 0x48 Unexpected receive data phase device tried to send more data than the SCSI chip is programmed to expect. This can be OK, as when a high-level request is made to transfer more data than the DMA hardware can map on a single request. In this case, simply reprogram the DMA hardware for the next chunk of data and restart the transfer (but don't send a new SCSI command to the device). When printed as part of an error message, it can sometimes be caused by a SCSI cabling problem, or (particularly with devscsi user drivers) by a mismatch in the byte count given to the driver and the byte count implied by the SCSI command sent to the device.
ST_UNEX_SDATA 0x49 Unexpected send data phase (same as above, but device is asking for more data).
ST_UNEX_CMDPH 0x4a Unexpected cmd phase
ST_UNEX_SSTATUS 0x4b Unexpected send status phases occur at the end of SCSI command (that is, byte count remaining is 0); if they happen at other times, the chip interrupts. This can happen when you ask a device for more data than it can give you, and in this case, you just return a short I/O count to the caller. When printed as part of an error message, it usually implies a cabling or termination problem.
ST_UNEX_RMESGOUT 0x4e Unexpected request message out phase usually indicates a SCSI cabling problem.
ST_UNEX_SMESGIN 0x4f Unexpected send message in phase usually indicates a SCSI cabling problem; also happens when device sends a disconnect message in normal use when preparing to disconnect from the bus.
ST_RESELECT 0x80 WD33C93 has been reselected.
ST_93A_RESEL 0x81 Reselected while idle (93A).
ST_DISCONNECT 0x85 Disconnect has occurred.
ST_NEEDCMD 0x8a Target is ready for a cmd.
ST_REQ_SMESGOUT 0x8e REQ signal for send message out.
ST_REQ_SMESGIN 0x8f REQ signal for send message in above 3 usually seen only during sync negotiations.
Table B-6 lists phases during Select-and-Transfer commands.

Phases During a Select-and-Transfer Command
Phase Message Sense Key Comments
PH_NOSELECT 0x00 Selection not successful.
PH_SELECT 0x10 Selection successful.
PH_IDENTSEND 0x20 Identify message sent (during selection when sending initial command to a device). Phase 30 indicates none of the cmd bytes have yet been sent; every cmd byte sent increments that by one.
PH_CDB_START 0x30 Start of CDB transfers.
PH_CDB_6 0x36 6th cmd byte sent.
PH_CDB_10 0x3a 0xAth cmd byte sent.
PH_CDB_12 0x3c 0xCth cmd byte sent.
PH_SAVEDP 0x41 Save data pointers.
PH_DISCRECV 0x42 Disconnect message received.
PH_DISCONNECT 0x43 Target disconnected.
PH_RESELECT 0x44 Original target reselected.
PH_IDENTRECV 0x45 Correct identify (right LUN) message received (during reselection).
PH_DATA 0x46 Data transfer completed (expect status next).
PH_STATUSRECV 0x50 Status byte received (expect cmd complete next).
PH_COMPLETE 0x60 Command complete message received; SCSI command is finished, and SCSI bus is free.



Next | Prev | Up | Top | Contents | Index