PCIe配置与VPD管理 - 页码162
NVMe-MI 1 min read

PCIe配置与VPD管理 - 页码162

Blog Author

深入分析:NVM Express® Management Interface Specification, Revision 2.0

1. VPD Common Header 解析

VPD(Vital Product Data)公共头部 是 FRU 信息设备中重要的数据结构,包含有关设备的核心信息。其结构定义如 图 169 所示,关键字段包括 Boot Failure CodeCommon 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 表示字段为空。

总结

  1. VPD 公共头部:包含了关键信息,如启动失败代码(如果支持)和公共头部校验和。它用于确保数据完整性,并提供设备启动过程中的故障诊断信息。

  2. 产品信息区:是 VPD 中的可选部分,包含有关设备厂商、语言、制造商名称等详细信息。它遵循 IPMI 格式规范,并能够提供详细的设备描述。

  3. 类型与长度字段:产品信息区内的每个字段都有固定的编码规则,确保了数据的准确性和一致性。

这些内容有助于在管理和监控 NVMe 存储设备时,获取关于设备的基本信息及故障状态,支持硬件的自诊断和数据完整性检查。