BIOS POST 代码

下表按 POST 代码的生成顺序列出了对 POST 代码的描述。POST 代码显示为一个四位数的字符串,该字符串由主 I/O 端口 80 的两位数输出和辅助 I/O 端口 81 的两位数输出组成。在下面列出的 POST 代码中,前两位数来自端口 81,后两位数来自端口 80。

Post 代码

描述

D0

早期启动捆绑处理器 (Boot Strap Processor, BSP) 初始化,例如微代码更新、频率和其他 CPU 关键初始化。早期芯片组初始化已经完成。

Before D1

早期芯片组初始化已经完成。早期超级 I/O 初始化(包括 RTC 和键盘控制器初始化)已经完成。已禁用 NMI。

D1

早期超级 I/O 初始化(包括 RTC 和键盘控制器初始化)已经完成。此时,如果调试需要,则启用串行端口。已禁用 NMI。执行键盘控制器 BAT 测试。将加电 CPUID 值保存在可擦写 CMOS 中。转至具有 4GB 限制的平面模式 (flat mode) 并启用 GA20。

D2

验证引导块校验和。如果校验和出错,则系统将挂起。

Before D3

HT 将链路频率和宽度设置为其终值。为了使最终(最佳)HT 链路频率和宽度生效,而生成了热复位。

D3

在检测内存之前禁用 CACHE。执行完整的内存大小调整模块。如果未执行内存大小调整模块,则启动内存刷新并在引导块代码中调整内存大小。执行附加芯片组初始化。重新启用 CACHE。验证是否已启用平坦模式。

07

内存 DQS Training 和 DRAM ECC 初始化。启用了在 ECC 之后首次内存清理。根据在 "BIOS Setup" 菜单中选择的值,设置最终的 ECC 清理速率。

D4

测试基本的 512KB 内存。调整策略并缓存前 8MB。设置堆栈。

D5

引导块代码将从 ROM 复制到低层系统内存,同时移交控制权。现在 BIOS 从 RAM 中执行。将压缩的引导块代码复制到内存中的相应段。将 BIOS 从 ROM 复制到 RAM 以加快访问速度。执行主 BIOS 校验和并相应地更新恢复状态。

D6

检查键序和特定于 OEM 的方法,以确定是否已强制执行 BIOS 恢复。如果必须执行 BIOS 恢复,则控制权交给检查点 E0。

D7

将 CPUID 值重新恢复到寄存器中。引导块-运行时接口模块将移至系统内存,同时移交控制权。确定是否执行串行快闪。

D8

运行时模块将被解压缩到内存中。CPUID 信息将存储在内存中。

D9

存储已解压缩的指针,以便将来在 PMM 中使用。将主 BIOS 复制到内存中。保留低于 1MB 读写的所有 RAM(包括 E000 和 F000 阴影区域),但关闭 SMRAM。

DA

将 CPUID 值重新恢复到寄存器中。将控制权交给 BIOS POST。

03

在执行实际 BIOS POST 之前的全局初始化。将 BIOS 数据区 (BIOS Data Area, BDA) 变量初始化为其默认值。初始化 POST 数据变量。已禁用 NMI、奇偶校验、EGA 视频和 DMA 控制器。

4203

南桥早期初始化-初始化南桥 I/O 解码范围。

5003

OEM 早期初始化代码-如果设置了跳线,则清除管理员/用户密码。

6003

早期 HyperTransport 初始化-初始化 HyperTransport FIFO 指针优化寄存器。检查 HyperTransport Sync Flood 并报告错误。

04

检查 CMOS 诊断字节以确定电池电量是否充足以及 CMOS 校验和是否正确。通过读取存储区域手动验证 CMOS 校验和。如果 CMOS 校验和出错,则使用加电默认值对 CMOS 进行更新并清除密码。初始化状态寄存器 A。初始化那些基于 CMOS 设置问题的数据变量。初始化系统中的两个 8259 兼容 PIC。

05

初始化中断控制硬件(一般为 PIC)和中断向量表。

06

初始化 8254 计时器-对 CH-2 计数寄存器进行 R/W 测试。将 CH-0 初始化为系统计时器。安装 POSTINT1Ch 处理程序。为系统计时器中断启用 PIC 中的 IRQ-0。捕获指向 "POSTINT1ChHandlerBlock" 的 INT1Ch 向量。

8601

初始化 BMC 接口。禁用 BMC 监视程序计时器。将 BMC 系统事件日志计时器初始化为 RTC 时钟中设置的时间。

DEB4

检查 BMC 事件日志区域是否有效/已满,并在无效或已满时显示错误。

08

禁用所有 CPU 的高速缓存

C0

早期 CPU 初始化启动-初始化本地 APIC

C1

设置启动捆绑处理器信息

C2

为 POST 设置启动捆绑处理器。这包括频率计算、装入 BSP 微代码,以及针对 GART 错误报告设置问题应用用户请求的值。

C3

将勘误表解决方法应用于 BSP

C5

枚举并设置应用程序处理器。这包括微代码装入和勘误表解决方法。

C6

重新启用启动捆绑处理器的高速缓存,并在 BSP 中应用勘误表解决方法(如果适用)。如果是混合的 CPU 步进,则查找并记录错误,同时查找并应用适合于所有 CPU 的频率。注:AP 保持 CLI - HLT 状态。

0B

检测是否有 PS/2 鼠标。

0C

检测 KBC 端口是否连接了键盘。

0E

对各种输入设备进行测试和初始化,并更新内核变量。捕获 INT09h 向量,使 POST INT09h 处理程序获得对 IRQ1 的控制权。解压缩所有可用语言、BIOS 徽标和无交互的徽标模块。

13

在早期 POST 时初始化 PM 寄存器和 PM PCI 寄存器。如果系统支持多主机网桥,则对其进行初始化。在清除内存前设置 ECC 选项。REDIRECTION 会使已修正的数据立即写入 RAM。CHIPKILL 提供 x4 类型内存的 4 位错误检测/纠正。启用装在 8131 中的 PCI-X 时钟。

4113

在早期 POST 时,根据安装配置初始化 NB 设备。根据安装配置初始化 H2PCI 网桥寄存器。

42C1

初始化南桥设备寄存器。

20

将所有 CPU 重定位到唯一的 SMBASE 地址。BSP 的入口点将被设置为 A000:0。如果板上的 CPU 插槽少于 5 个,则后续的 CPU 入口点要相距 8000h 字节。如果有 4 个以上 CPU 插槽,则入口点相距 200h 字节。CPU 模块将负责将 CPU 重定位到正确的地址。注:AP 保持 INIT 状态。

24

解压缩并初始化任何特定于平台的 BIOS 模块。

30

初始化系统管理中断。

2A

通过 DIM 初始化各种设备。

2C

初始化各种设备。检测并初始化安装在配有可选 ROM 的系统中的视频适配器。

2E

初始化所有输出设备。

31

为 ADM 模块分配内存并将其解压缩。将控制权交给 ADM 模块以进行初始化。初始化 ADM 的语言模块和字体模块。激活 ADM 模块。

33

初始化无提示引导模块。设置窗口以显示文本信息。

37

显示登录消息、CPU 信息、设置密钥消息和任何特定于 OEM 的信息。

DEBD

显示 Sun 产品名称。

4137

显示北桥信息。

4237

显示南桥信息。

DEB8

显示刀片序列号和服务处理器固件版本号。

38

通过 DIM 初始化各种设备。

DEB1

将 CPU、BIOS 版本和 DIMM 信息发送到服务处理器。

39

初始化 DMAC-1 和 DMAC-2。

3A

初始化 RTC 日期/时间。

DEBD

对系统中安装的总内存进行测试。此外,检查 Del 键或 Esc 键以限制内存测试。显示系统中的总内存。

3C

至此,RAM 读/写测试已经完成,设定内存空洞或进行任何与 NB 相关的 RAM 大小调整。测试 HT 模块是否找到了 MP 环境的引导块和 CPU 兼容性错误。

40

检测成功安装在系统中的各种设备(并行端口、串行端口以及 CPU 中的协处理器),并更新 BDA 和 EBDA。

50

如果需要,对内存空洞或需要调整系统 RAM 大小的各种实现进行设定。

52

根据内存测试中找到的内存来更新 CMOS 内存大小。从基本内存中为扩展的 BIOS 数据区分配内存。

60

初始化 NUM-LOCK 状态并设定 KBD 击键速率。

75

初始化 Int-13 并准备 IPL 检测。

78

初始化由 BIOS 和选项 ROM (Option ROM) 控制的 IPL 设备。

7A

初始化其余选项 ROM (Option ROM)。

7C

生成 ESCD 内容并将其写入 NVRAM。

84

记录 POST 期间出现的错误。

85

向用户显示错误,并获得用户对错误的响应。

87

如果需要或要求,则执行 BIOS 设置程序。

8C

所有设备初始化完毕之后,设定所有与 NB/SB 相关的用户可选参数(例如计时参数、不可缓存区域和阴影 RAM 高速缓存能力),并执行任何其他在后期 POST 期间所需的特定于 NB/SB/PCIX/OEM 的设定。DRAM 以及 L1 和 L2 高速缓存的后台清理将根据安装配置进行设置。计算每个节点的 DRAM 清理限制。在此应用勘误表 #101 的解决方法。

DEB1

设定 PCI 子系统供应商和设备 ID。

8D

生成 ACPI 表(如果支持 ACPI)

8E

设定外围设备参数。根据所做选择启用/禁用 NMI。

8600

如果设置中禁用了 BMC 监视程序计时器,则重新启用它。

90

对系统管理中断的后期 POST 初始化。

A0

如果安装了引导密码,则对其进行检查。

A1

引导到 OS 之前所需的清理工作。

A2

为各种 BIOS 模块准备运行时映像。用 0FFh 段中的数据填充 F00h 段中的空闲区。初始化 Microsoft IRQ 路由表。准备运行时语言模块。如果需要,禁用系统配置显示。

A4

初始化运行时语言模块。

A7

显示系统配置屏幕(如果已启用)。引导前初始化 CPU,包括设定 MTRR。

A8

为 OS 引导准备 CPU,包括设定 MTRR 终值。

A9

如果需要,在显示配置屏幕时等待用户输入。

AA

卸载 POST INT1Ch 向量和 INT09h 向量。取消对 ADM 模块的初始化。

AB

为 Int 19 引导准备 BBS。

AC

在 POST 结尾且刚好在将控制权交给用于引导到 OS 的运行时代码之前,需要进行的特定于任一种芯片组 (NB/SB0) 的设定。已设定系统 BIOS(0F0000h 阴影 RAM)高速缓存能力。通过移植来进行在 POST 结尾所需的任何特定于 OEM 的设定。将特定于 OEM 的数据从 POST_DSEG 复制到 RUN_CSEG。

00

BIOS POST 的结尾。通过将 BSP 的所有上下文复制到现有的所有应用程序处理器,来为引导到 OS 准备 CPU。注:AP 保持 CLI - HLT 状态。