To: John Lohmeyer X3T9.2/87-188 Chairman, X359.2 From: Robert Snively Adaptec 580 Cottonwood Milpitas, CA 95037 Date: October 22, 1987 Subject: Explicit selection of target functions In general, the proper view of a peripheral device from a host system is as a set of logical units. Each logical unit has a logical model which it implements. The logical model of a disk device is typically a set of constant length blocks which are addressable by a contiguous set of logical block addresses ranging from zero to the maximum block on the logical unit. Other logical models are provided for sequential devices, optical memory devices, and other devices. The target is conceptually a path processor for a set of logical units. The target provides only an electronic interface and an arbitration entity. As far as a normal operating system environment is concerned, the target is only a transparent node on the way to the logical unit. In practice, certain diagnostic and system maintenance utilities may occassionally require access to processes running on the target. One such requirement has been identified, but others may later appear. The particular example is the use of the INQUIRY command to obtain model and revision level information and to obtain Vital Product Data (VPD) unique to the target. By providing a mechanism for explicitly accessing the target, this requirement and any related requirements in the future can be met. It is possible that the target may eventually become a separate peripheral type, but for the present proposal, only certain commands are supported by a target. The target is only allowed to support vendor unique commands and the INQUIRY, READ BUFFER, READ LOG, RECEIVE DIAGNOSTIC RESULTS, REQUEST SENSE, SEND DIAGNOSTIC, TEST UNIT READY, and WRITE BUFFER commands The following text is added to the SCSI-2 document to include the explicit target selection capability. The text on page 5-18 describing the IDENTIFY message is modified in the following manner. IDENTIFY 80h to FFh. These messages are sent by either the initiator or the target to establish the physical path connection between an initiator and target for a particular logical unit. The logical unit number addresses one of up to eight physical or virtual devices attached to a target. The IDENTIFY message is also used to establish a connection explicitly to one of up to eight processes or functions in the target itself. Such target functions have no access to user data and are expected to be used for maintenance and diagnostic purposes. Bit 7. This bit shall be set to one to distinguish these messages from the other messages. Bit 6. This bit is only set to one by the initiator to grant the target the privilege of disconnecting. If this bit is zero, the target shall not disconnect. This bit shall be set to zero if sent by the target. Bit 5. Reserved Bit 4. This bit, the Target/LUN bit, shall be set to identify a target process. If the bit is set to one, the operation to be executed is intended to be executed strictly by and on behalf of the target. If the bit is set to zero, the operation is to be executed on behalf of the Logical Unit, using services of both the target and LU. If a target process is not supported, and the bit is set to one, the message shall be rejected. In that case, the target will not continue the operation but will return to the BUS FREE phase after the MESSAGE REJECT is transferred. Bit 3 Reserved Bit 2-0 These bits specify a logical unit number if the Target/LUN bit is zero. If the Target/LUN bit is one, the bits specify a process in the target. Only one logical unit number or target process number shall be identified for any one selection sequence; a second IDENTIFY message with a new logical unit number shall not be issued before the bus has been released (BUS FREE phase). The initiator may send one or more IDENTIFY messages during a selection sequence. However, the logical unit number or target process number in any additional IDENTIFY messages shall be the same as the logical unit number specified in the first IDENTIFY message sent by the initiator. When sent from a target to an initiator during reconnection, an implied RESTORE POINTERS message shall be performed by the initiator prior to completion of this message. If any target processes are supported, at least target process 0 is required. The support of other processes is optional. Target processes are allowed to execute only the following commands: Vendor Target Unique maintenance and diagnostic commands INQUIRY READ BUFFER READ LOG RECEIVE DIAGNOSTIC RESULTS REQUEST SENSE SEND DIAGNOSTIC TEST UNIT READY WRITE BUFFER The above text should completely describe and clarify the concept of accessing a target directly and independently of the LU. Note that all subsequent references to a target/LUN bit, specifically in VPD of the INQUIRY command should be removed. Sincerely, Robert N. Snively