PCIe配置与VPD管理 - 页码162
深入分析:NVM Express® Management Interface Specification, Revision 2.0
1. VPD Common Header 解析
VPD(Vital Product Data)公共头部 是 FRU 信息设备中重要的数据结构,包含有关设备的核心信息。其结构定义如 图 169 所示,关键字段包括 Boot Failure Code 和 Common Header Checksum,下面对其详细分析:
- Boot Failure Code (BFC):
- 该字段用于指示设备启动失败的具体原因。如果 Boot Failure Code Support 字段设置为
1
,则该字段会显示错误代码。 - 各种启动故障代码描述如下:
- 0h:未发生启动故障
- 1h:不可恢复的硬件问题
- 2h:自检失败
- 4h:关键数据损坏
- 6h:密钥清单损坏
- 8h:固件镜像损坏
- Ah:安全数据损坏
- Ch:恢复固件损坏
-
如果没有启用启动故障代码支持(即
Boot Failure Code Support
设置为0
),则该字段为保留。 -
Common Header Checksum (CHCHK):
- 公共头部校验和 是通过对字节 0 到字节 6 进行 8 位求和,取该值对 256 取模并计算补码得到的校验和。其目的是确保 VPD 公共头部 的完整性。
- 校验和和字节和的结果应为
0h
。
2. Product Info Area 解析
产品信息区 是 VPD 中的一个可选区域,其内容根据 IPMI 平台管理 FRU 信息存储定义格式进行组织。该区域的默认值如 图 171 所示,主要包含以下信息:
- IPMI Format Version Number (IPMIVER):
-
该字段表示 IPMI 格式版本号,默认为
01h
。 -
Product Info Area Length (PALEN):
-
表示产品信息区的长度,单位为 8 字节的倍数。
-
Language Code (LCODE):
-
表示语言代码,默认值为
19h
,即英语。 -
Manufacturer Name Type/Length (MNTL):
-
该字段指示制造商名称字段的类型和长度,最大长度为 8 字节。
-
Manufacturer Name (MNAME):
- 该字段包含制造商名称,采用 8 位 ASCII 编码。制造商名称应与 PCI Subsystem Vendor ID(SSVID)字段以及 IEEE OUI Identifier 字段中的内容一致。如果填充了该字段,填充字节应为 NULL 字符。
3. 数据字段的类型和长度说明
产品信息区 的各个字段都遵循一定的编码规则。 图 170 显示了 Type/Length Byte Format 的结构:
- Type Code (TCODE):
-
用于指定字段编码,
11b
表示始终采用 ASCII 编码。 -
Number of Data Bytes (NDB):
- 用于指定数据字段的长度,
0h
表示字段为空。
总结
-
VPD 公共头部:包含了关键信息,如启动失败代码(如果支持)和公共头部校验和。它用于确保数据完整性,并提供设备启动过程中的故障诊断信息。
-
产品信息区:是 VPD 中的可选部分,包含有关设备厂商、语言、制造商名称等详细信息。它遵循 IPMI 格式规范,并能够提供详细的设备描述。
-
类型与长度字段:产品信息区内的每个字段都有固定的编码规则,确保了数据的准确性和一致性。
这些内容有助于在管理和监控 NVMe 存储设备时,获取关于设备的基本信息及故障状态,支持硬件的自诊断和数据完整性检查。