18.3.1. 启动错误源
在正常情况下,当发生硬件错误时,错误处理程序会获得控制并处理该错误。这使 OSPM 有机会处理错误条件、报告它,并可选地尝试恢复。在某些情况下,系统无法处理错误。例如,系统固件或管理控制器可能选择重置系统,或者系统可能经历不受控制的崩溃或重置。
启动错误源用于报告在先前启动中发生的未处理错误。此机制在 BERT 表中描述。启动错误源作为“单次轮询”类型的错误源进行报告。OSPM 在启动期间查询启动错误源,以获取任何现有的启动错误记录。平台将通过符合通用平台错误记录 (CPER) 的错误记录向 OSPM 报告该错误条件。CPER 格式在 UEFI 规范的附录中描述。
下表描述了启动错误记录表 (BERT) 的格式。
表 18.1 启动错误记录表 (BERT)
| 字段 | 字节长度 | 字节偏移 | 描述 |
|---|---|---|---|
| Header Signature | 4 | 0 | ‘BERT’。启动错误记录表的签名。 |
| Length | 4 | 4 | BERT 的长度,以字节计。 |
| Revision | 1 | 8 | 1 |
| Checksum | 1 | 9 | 整个表的总和必须为零。 |
| OEMID | 6 | 10 | OEM ID。 |
| OEM Table ID | 8 | 16 | 制造商模型 ID。 |
| OEM Revision | 4 | 24 | 针对所提供 OEM 表 ID 的 BERT 的 OEM 修订版本。 |
| Creator ID | 4 | 28 | 创建该表的工具的供应商 ID。 |
| Creator Revision | 4 | 32 | 创建该表的工具的修订版本。 |
| Boot Error Region Length | 4 | 36 | 启动错误区域的长度,以字节计。 |
| Boot Error Region | 8 | 40 | 启动错误区域的 64 位物理地址。 |
启动错误区域是一段 OSPM 可在初始化期间访问的可寻址内存范围,用于确定是否发生了未处理的错误条件。系统固件必须将该内存范围报告为固件保留。启动错误区域的格式遵循错误状态块的格式,如通用硬件错误源结构中所定义。错误状态块的格式由通用错误状态块表描述。
有关通用错误数据项表中列出的某些字段的详细信息,请参见 UEFI 规范附录中对通用平台错误记录描述下的节描述符定义。