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.

srp/sbft.txt ยท Last modified: 2016/01/28 00:11 by mcb30
Recent changes RSS feed CC Attribution-Share Alike 4.0 International Driven by DokuWiki
All uses of this content must include an attribution to the iPXE project and the URL https://ipxe.org
References to "iPXE" may not be altered or removed.