SRP 启动固件表¶
简介¶
SRP 启动固件表(sBFT)是一个信息块,包含对 SRP 启动过程有用的各种参数。它是启动固件把有关启动设备的信息传递给所加载操作系统的机制。
位置¶
通过在基本内存(地址 0x00000 到地址 0x09FFFF)中扫描表头签名可以找到 sBFT。该表必须按 16 字节边界对齐,并且校验和必须正确。
约定¶
sBFT 遵循 ACPI 表的结构。
所有标量均为小端序。
所有标记为保留的字段必须填零。
结构¶
sBFT 由一个 ACPI 子表、一个 SCSI 子表、一个 SRP 子表,以及一个或多个特定于传输的子表(如 IB 子表)组成。
| 内容 | 字节偏移 | 字节长度 |
|---|---|---|
| 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¶
这是到 SCSI 子表的偏移量(从 sBFT 起始处算起的字节数)。
Offset to SRP Subtable¶
这是到 SRP 子表的偏移量(从 sBFT 起始处算起的字节数)。
Offset to IB Subtable¶
这是到 IB 子表的偏移量(从 sBFT 起始处算起的字节数)。值为零表示不存在 IB 子表。
ACPI 子表¶
ACPI 子表包含用于标识 sBFT 的通用头部字段。
| 字段 | 字节偏移 | 字节长度 |
|---|---|---|
| Signature | 0 | 4 |
| Length | 4 | 4 |
| Revision | 8 | 1 |
| Checksum | 9 | 1 |
| OEMID | 10 | 6 |
| OEM Table ID | 16 | 8 |
| Reserved | 24 | 12 |
Signature¶
SRP 启动固件表的'sBFT'签名。
Length¶
整个 sBFT 的字节长度,包括签名。
Revision¶
必须设置为 1。
Checksum¶
整个表的总和必须为零。
OEMID¶
ACPI OEM ID。所有未使用的尾部字节必须为零。
OEM Table ID¶
对于 sBFT,Table ID 是制造商的型号 ID。所有未使用的尾部字节必须为零。
SCSI 子表¶
SCSI 子表包含所有 SRP 会话所需的值,与传输类型无关。
| 字段 | 字节偏移 | 字节长度 |
|---|---|---|
| Logical unit number | 0 | 8 |
Logical unit number¶
这是 SCSI LUN,如 SCSI Architecture Model-2 标准所定义。
SRP 子表¶
SRP 子表包含所有 SRP 会话所需的值,与传输类型无关。
| 字段 | 字节偏移 | 字节长度 |
|---|---|---|
| Initiator port identifier | 0 | 16 |
| Target port identifier | 16 | 16 |
Initiator port identifier¶
这是 SRP 规范中定义、并在 SRP_LOGIN_REQ 请求中使用的发起端端口标识符。
Target port identifier¶
这是 SRP 规范中定义、并在 SRP_LOGIN_REQ 请求中使用的目标端端口标识符。
IB 子表¶
IB 子表(如果存在)包含通过 Infiniband 传输运行的所有 SRP 会话所需的值。
请注意,SRP 规范对 SRP 子表(见上文)中的发起端和目标端端口标识符规定了 Infiniband 特有的解释;因此,一些具有 Infiniband 特有含义的值(例如 I/O Controller GUID)可以从 SRP 子表中的值推导出来,不在此 IB 子表中重复。
| 字段 | 字节偏移 | 字节长度 |
|---|---|---|
| Source GID | 0 | 16 |
| Destination GID | 16 | 16 |
| Service identifier | 32 | 8 |
| Partition key | 40 | 2 |
| Reserved | 42 | 6 |
Source GID¶
这是用于发起 SRP 连接的 HCA 端口所属的 GID。
Destination GID¶
这是 SRP 目标端的 GID。
Service identifier¶
这是 SRP 目标端的服务标识符。
Partition key¶
这是 SRP 目标端的分区键。