Date: Tue, 16 Apr 1996 17:46:26 -0700 From: pt@jadeite (Paul Thomas) Subject: Item #333: SCSI-3 Binding: Create binding document P1275 Openboot Working Group Proposal -- Proposal #:333 Ver 1 Title: 1275 Bindings for SCSI-3 Author: Paul Thomas Date: April 17, 1986 Ed/Tech: Technical Synopsis: This proposal supersedes proposal 328. A new draft of the content for a SCSI-3 binding is presented. Proposal 328 is withdrawn. Doc & Version: SCSI-3 Binding Problem: There is interest in developing a document for the bindings between SCSI-3 and 1275. Proposal: The following is the content of a standard binding SCSI-3 (ANS X3.270:1996) to 1275. The boilerplate is missing. This version includes language for SBP physical implementations of SCSI-3. 1. Physical address formats and representations SCSI-3 devices are addressed with one 64-bit "target" identifier and one 64-bit "logical unit" identifier. The text representation of a scsi-3 bus physical address is "target,lun". Each of "target" and "lun" is a string of characters composed of lower case hexadecimal digits, with leading zeros deleted. The numerical representation of a scsi-3 bus physical address consists of the most significant 32 bits of the target identifier in the high number, the least significant 32 bits of the target identifier in the next position, the most significant 32 bits of the logical unit identifier third, and the least significant 32 bits of the logical unit identifier in the low number. The significance of the bits in the target identifiers and the bits in the logical unit identifiers is determined by a combination of the particular scsi-3 device and the particular scsi-3 target identified by the target identifiers: In the case where the physical implementation of the scsi-3 device satisfies ANS X3.272:1996 Fibre Channel Arbitrated Loop (FC-AL), the target identifier is the 64 bit world-wide-name of the target. The 64 bits of the logical unit identifier are interpreted by the target. In the case where the physical implementation of the scsi-3 device satisfies ANS X3T10/855D SCSI-3 Parallel Interface (SPI), the target identifier is the 5-bit target id embedded as the low bits of the 64-bit identifier, with more significant bits all zero. The logical unit identifier is the same as the SPI logical unit number. In the case where the physical implementation of the scsi-3 device satisfies ANS X3.269-1996 Fibre Channel Protocol for SCSI (FCP), the target identifier is the 64 bit world-wide-name. The 64 bits of the logical unit identifier are interpreted by the target. In the case where the physical implementation of the scsi-3 device satisfies ANS X3T10/992D Information Technology - SCSI-3 Serial Bus Protocol (SBP), the target identifier is the 64 bit world-wide-name constructed from the information in the configuration ROM. The logical unit identifier is the same as the SBP logical unit number. 2. Properties These properties are required for all scsi-3 devices: device_type scsi-3 #address-cells 4 scsi3-id byte array, 8 bytes in size These properties are required when the physical implementation satisfies SPI if the device is differential or capable of 16 bit parallel data transfers: wide differential scsi-initiator-id integer wwn byte array, 8 bytes in size local-wwn byte array, 8 bytes in size If the physical implementation is SPI, scsi-initiator-id is required. If the physical implementation is FC-AL, FCP, or SBP, wwn is required. If wwn is derived via the mac-address/local-mac-address interaction, and the device has a local world-wide-name, local-wwn is required. In either case, scsi3-id is required. If scsi-initiator-id exists, scsi3-id is the same with the integer embedded in the least significant bits of the byte array. If wwn exists, scsi3-id is the same as wwn. 3. Methods These methods are required (descriptions as per the current descriptions for SCSI-2 where not given here): close ( -- ) decode-unit ( addr len -- lunlo lunhi targetlo targethi ) diagnose ( -- error-code | 0 ) dma-alloc ( ...size -- virt ) dma-free ( virt size -- ) encode-unit ( lunlo lunhi targetlo targethi -- addr len ) execute-command ( buf-addr,len dir cmd-addr,len -- hw-err? | statbyte 0 ) max-transfer ( -- n ) no-data-command ( cmd-addr -- error? ) open ( -- okay? ) If the physical implementation is SPI, the interaction with inherited scsi-initiator-id is required. If the physical implementation is FC-AL, FCP, or SBP, and the wwn for the device is derived via the mac-address/local-mac-address interaction, then the wwn for the device must be checked when open executes. retry-command ( buf-addr,len dir cmd-addr,len #retries -- 0 | hw-err? stat | sensebuf 0 stat ) set-responder ( unit-addr,len target-addr,len -- ) Unit-addr,len points to an array of bytes holding a binary representation of the desired unit identifier, most significant bits first. Target-addr,len points to a similar array of bytes for the desired target identifier. [Note: set-responder replaces set-address from the scsi-2 set of methods.] set-timeout ( msecs -- ) short-data-command ( data-len cmd-addr,len -- error? | data-addr 0 ) translate-address ( unit1-addr,len target1-addr,len -- unit2-addr,len target2-addr,len ) Unit1-addr,len points to an array of bytes holding a binary representation of the desired unit identifier, most significant bits first. Target1-addr,len is similar for the desired target identifier. Unit2-addr,len points to an array of bytes holding a binary representation of the desired unit identifier as translated for use inside a scsi-3 command block in the current physical implementation. Target2-addr,len is a similar translation for the desired target identifier for the current physical implementation. [Note: translate-address may not be required. It would be used by commands such as copy that need to know the wwn in order to include it in their command packet or data.] This method is optional: show-children ( -- ) [ P1275 Item #333 -- Received: Tue Apr 16 17:44:33 PDT 1996 ]