Table of Contents
SRP boot firmware table
Introduction
The SRP Boot Firmware Table (sBFT) is a block of information containing various parameters useful to the SRP boot process. It is the mechanism whereby the boot firmware conveys information about the boot device to the loaded operating system.
Location
The sBFT can be located by scanning through base memory (address 0x00000 to address 0x09FFFF) for the table header signature. The table must be aligned on a 16-byte boundary, and the checksum must be correct.
Conventions
The sBFT follows the structure of an ACPI table.
All scalar quantities are little-endian.
All fields marked as reserved must be filled with zeroes.
Structure
The sBFT consists of an ACPI Subtable, a SCSI Subtable, an SRP Subtable, and one or more transport-specific subtables such as the IB Subtable.
Content | Byte Offset | Byte Length |
---|---|---|
ACPI Subtable | 0 | 36 |
Offset to SCSI Subtable | 36 | 2 |
Offset to SRP Subtable | 38 | 2 |
Offset to IB Subtable | 40 | 2 |
Reserved | 42 | 6 |
Offset to SCSI Subtable
This is the offset (in bytes from the start of the sBFT) to the SCSI Subtable.
Offset to SRP Subtable
This is the offset (in bytes from the start of the sBFT) to the SRP Subtable.
Offset to IB Subtable
This is the offset (in bytes from the start of the sBFT) to the IB Subtable. A zero value indicates that no IB Subtable is present.
ACPI Subtable
The ACPI Subtable contains the generic header fields to allow for identification of the sBFT.
Field | Byte Offset | Byte Length |
---|---|---|
Signature | 0 | 4 |
Length | 4 | 4 |
Revision | 8 | 1 |
Checksum | 9 | 1 |
OEMID | 10 | 6 |
OEM Table ID | 16 | 8 |
Reserved | 24 | 12 |
Signature
'sBFT' signature for the SRP Boot Firmware Table.
Length
Length in bytes of the entire sBFT, including the signature.
Revision
Must be set to 1.
Checksum
Entire table must sum to zero.
OEMID
ACPI OEM ID. All unused trailing bytes must be zero.
OEM Table ID
For the sBFT the Table ID is the Manufacturer's Model ID. All unused trailing bytes must be zero.
SCSI Subtable
The SCSI Subtable contains values that are required for all SRP sessions, independent of transport type.
Field | Byte Offset | Byte Length |
---|---|---|
Logical unit number | 0 | 8 |
Logical unit number
This is the SCSI LUN, as defined by the SCSI Architecture Model-2 standard.
SRP Subtable
The SRP Subtable contains values that are required for all SRP sessions, independent of transport type.
Field | Byte Offset | Byte Length |
---|---|---|
Initiator port identifier | 0 | 16 |
Target port identifier | 16 | 16 |
Initiator port identifier
This is the initiator port identifier as defined in the SRP specification and used in the SRP_LOGIN_REQ request.
Target port identifier
This is the target port identifier as defined in the SRP specification and used in the SRP_LOGIN_REQ request.
IB Subtable
The IB Subtable, if present, contains values that are required for all SRP sessions running over Infiniband transport.
Note that the SRP specification imposes an Infiniband-specific interpretation on the initiator and target port identifiers as found in the SRP Subtable (above); some values with Infiniband-specific meanings (e.g. the I/O Controller GUID) can therefore be derived from the values in the SRP Subtable and are not duplicated here in the IB Subtable.
Field | Byte Offset | Byte Length |
---|---|---|
Source GID | 0 | 16 |
Destination GID | 16 | 16 |
Service identifier | 32 | 8 |
Partition key | 40 | 2 |
Reserved | 42 | 6 |
Source GID
This is a GID belonging to the HCA port used to initiate the SRP connection.
Destination GID
This is the GID of the SRP target.
Service identifier
This is the service identifier of the SRP target.
Partition key
This is the partition key of the SRP target.