联想 ThinkSystem FPGA 日志分析与故障定位
本文档专为服务器二线硬件支持与现场技术专家编写,系统讲解如何通过 Lenovo ThinkSystem(Purley / Whitley 等平台,如 SR650、SR550、SN550 等)的 FFDC 日志深度分析板载 FPGA 寄存器,精准定位主板电压故障(SysBrd Vol Fault / FQXSPPW0063M)、异常掉电(Power Fault)及CPU/内存供电故障。
1. 为什么需要分析 FPGA 日志?
在 Lenovo ThinkSystem 服务器体系中,XCC(BMC)负责宏观带外监控与上层告警,而底层硬件上电时序控制、微秒级电源保护、硬件故障锁存则由板载 FPGA / CPLD 全权接管。
- XCC 告警局限性:当发生供电异常时,XCC 的系统事件日志(SEL/CXL)通常只报出一条泛化错误:
Sensor SysBrd Vol Fault has transitioned to critical from a less severe state. (FQXSPPW0063M)该报错仅表明“主板电压故障”,无法明确是 12V、5V、3.3V 还是 CPU 哪一路电压异常,盲目换主板容易导致维修失败。 - FPGA 寄存器优势:在供电轨发生掉电、欠压、过流或短路的微秒瞬间,FPGA 会在强制关闭系统电源(Power Fault Trip)前,将第一故障现场(First Capture)永久锁存在硬件寄存器中(直到下次交流断电重置)。
2. FPGA 日志在 FFDC 中的分布路径
从服务器导出的 FFDC 服务数据包(扩展名为 .tzz,实际为 tar.gz 格式)解压后,核心 FPGA 日志位于以下路径:
2.1 首选文件:自动解码日志
- 文件路径:
tmp/ffdc_live_dbg/fpga_on_demand.log - 说明:FFDC 收集脚本(
firetool)自动调用寄存器解码工具生成的报告,包含可读性极强的位解析(例如直接标出PVCCIO CPU1 fault)。
2.2 备选文件:原始寄存器转储
当 fpga_on_demand.log 未生成或解码工具版本不匹配时,需查看以下原始数据:
- 文件路径:
var/volatile/log/fpga_powerfault.log或var/volatile/log/fpga.log - 说明:记录各寄存器块(Block 00 ~ Block 63)的 16 进制原始字节(Hex Dump)。
2.3 信号映射数据库(交叉查证)
- 文件路径:
tmp/dm.log - 说明:XCC Data Manager 信号引脚映射表,包含
PWRGD_PVCCIO_CPU0、THERMAL_CPU1_VR_PVCCIN等信号与硬件部件的物理绑定。
3. FPGA 寄存器架构全景(Block 结构)
FPGA 内部以 Block(块,每块通常 16 字节) 为单位组织:
| Block 编号 | 名称 / 功能 | 排障关键关注点 |
|---|---|---|
| Block 00 | 基础信息与固件版本 | Chip ID(机型平台)、FPGA Major/Minor 版本、编译日期 |
| Block 01 | 主板与平台标识 | Board ID、Platform ID |
| Block 02 | FPGA Flash 固件区 | 主固件/恢复固件状态 |
| Block 04 | 电源管理与故障锁存区 | 核心排障区!所有电压故障、开机源、关机源均在此处 |
| Block 14 | RAS / CATERR 处理器致命错误 | CPU 内部致命错误(CATERR / IERR)、PCIe 致命错误 |
| Block 16 | 内存与 UEFI 引导阶段 | 内存设备状态、UEFI POST 进度码 |
| Block 28 | 板载设备与 CPU 在位检测 | CPU0/CPU1 是否在位(SKTOCC)、Boot CPU 标识 |
| Block 40 | 电源管理节流与 PSU 状态 | PSU1/PSU2 在位与供电状态、PMBus 通信 |
| Block 60 | 调试寄存器 | GTL CPU 复位、PROCHOT 信号、PCIe 复位状态 |
4. Block 04 核心解码与查表速查(最关键部分)
当系统报 SysBrd Vol Fault 或开机即瞬间掉电时,必须聚焦 Block 04。
4.1 原始数据格式识别
典型的 Block 04 数据行如下:
Block 04 - 7F 00 00 00 02 00 00 00 - 00 01 07 10 80 00 20 00
各字节对应的偏移与功能:
| 字节序号 | 寄存器名称 | 正常健康值 | 典型异常值 | 功能含义 |
|---|---|---|---|---|
| Byte 0 (0x040) | POWER_CAPABILITY | 7F | 7F | 电源管理能力集支持位 |
| Byte 1 (0x041) | POWER_FAULT7 | 00 | 非 00 | 待机/辅助供电轨故障(5V_AUX, 1V8_PCH, Efuse 等) |
| Byte 2 (0x042) | POWER_FAULT6 | 00 | 非 00 | 主板 5V/3.3V 与内存 VPP/VDDQ 供电故障 |
| Byte 3 (0x043) | POWER_FAULT5 | 00 | 非 00 | 内存 VDDQ/VTT 及部分平台 CPU VCCIO 供电故障 |
| Byte 4 (0x044) | POWER_FAULT4 | 00 | 非 00 | CPU 核心供电故障(PVCCIN / PVCCIO / VCCSA 等) |
| Byte 5-8 | POWER_FAULT3~0 | 00 | 非 00 | PCIe 扩展卡、M.2 转接板等外设供电故障 |
| Byte 9 (0x049) | BOOT_HISTORY | - | 01 | FPGA 上电引导历史记录 |
| Byte 11 (0x04B) | POWER_ON_SRC | - | 10 | 开机来源:0x10 前面板按键,0x20 XCC 远程开机 |
| Byte 12 (0x04C) | POWER_OFF_SRC | - | 80 | 关机来源:0x80 明确表示硬件电源故障保护性关机! |
| Byte 14 (0x04E) | RESET_SRC | - | 20 | 复位触发源:0x20 芯片组复位请求 |
[!TIP] > 正常情况下,
POWER_FAULT0至POWER_FAULT7(即 Byte 1 至 Byte 8)必须全为00。只要任意一个字节非00,说明该字节对应的供电轨触发了保护动作。
4.2 POWER_FAULT 详细位定义查表
根据 FPGA 固件版本不同,寄存器定义有微调(以 SN550_FPGA_PowerFaults1.0 及 SR650 Cyborg 平台通用定义为例):
(1) POWER_FAULT4 (偏移 0x044 / Offset 4h) —— CPU 核心电压轨
这是最常出现故障的字节,需要将 16 进制数转换为 8 位二进制(Bit 7 ~ Bit 0):
| 二进制位 | 16 进制权重 | 信号定义 (FPGA < 4.7) | 信号定义 (FPGA ≥ 4.7) | 故障含义与定位 |
|---|---|---|---|---|
| Bit 0 | 0x01 | VCCIN_CPU1_PG | VCCIN_CPU2_PG | CPU1 (或 CPU2) FIVR 输入主供电异常 (1.8V) |
| Bit 1 | 0x02 | VCCIN_CPU2_PG / PVCCIO_CPU1 | VCCSA_CPU1_PG | CPU I/O 或 System Agent 供电异常 |
| Bit 2 | 0x04 | VCCSA_CPU1_PG | VCCSA_CPU2_PG | CPU System Agent 供电异常 |
| Bit 3 | 0x08 | VCCSA_CPU2_PG | PCH_CPU_PWRGD_3V | PCH / CPU 供电准备信号异常 |
| Bit 4 | 0x10 | PVCCIN_CPU1 | MEZZCARD1_AUX_PWRGD | CPU FIVR 主供电轨故障 (1.8V) |
| Bit 5 | 0x20 | MEZZCARD1_AUX_PWRGD | MEZZCARD2_AUX_PWRGD | 扩展卡/夹层卡辅助供电异常 |
| Bit 6 | 0x40 | MEZZCARD2_AUX_PWRGD | MEZZCARD1_PWRGD | 扩展卡主供电异常 |
| Bit 7 | 0x80 | MEZZCARD1_PWRGD | MEZZCARD2_PWRGD | 扩展卡主供电异常 |
- 实战案例对应:
- 若寄存器值为
0x10(二进制0001 0000):Bit 4 置 1,对应PVCCIN CPU1 fault。 - 若寄存器值为
0x02(二进制0000 0010):Bit 1 置 1,对应PVCCIO CPU1 fault。
(2) POWER_FAULT5 (偏移 0x043 / Offset 3h) —— 内存与 VCCIO
| 二进制位 | 16 进制权重 | 典型定义 | 故障含义与定位 |
|---|---|---|---|
| Bit 5 | 0x20 | CPU1_VCCIO_PG | CPU 1 I/O 电源轨就绪信号丢失 |
| Bit 6 | 0x40 | CPU2_VCCIO_PG | CPU 2 I/O 电源轨就绪信号丢失 |
| Bit 0~4 | 0x01~0x10 | VDDQ / VTT | CPU 对应通道的 DDR4 内存供电(1.2V / 0.6V)异常 |
(3) POWER_FAULT6 (偏移 0x042 / Offset 2h) —— 主板主电压与 VPP
| 二进制位 | 16 进制权重 | 典型定义 | 故障含义与定位 |
|---|---|---|---|
| Bit 0 | 0x01 | 5V_PG / 3v3_PG | 主板 5V 或 3.3V 基础供电异常 |
| Bit 1~4 | 0x02~0x10 | VPP_CPU1/2_ABC/DEF | 内存激活供电(2.5V VPP)异常 |
| Bit 5~7 | 0x20~0x80 | VDDQ_CPU1/2 | 内存主供电(1.2V)异常 |
(4) POWER_FAULT7 (偏移 0x041 / Offset 1h) —— 待机辅助与输入供电
| 二进制位 | 16 进制权重 | 典型定义 | 故障含义与定位 |
|---|---|---|---|
| Bit 0 | 0x01 | 5V_AUX_PG | 5V 辅助待机电压故障 |
| Bit 4 | 0x10 | 1V8_PCH_AUX_PG | PCH 待机供电故障 |
| Bit 7 | 0x80 | PGD_MAIN_EFUSE (P_12V) | 主板 12V 电子保险丝(eFuse)熔断/保护(通常外部短路) |
5. 核心判定法则:是主板故障还是 CPU 故障?
这是二线技术支持面临的最典型争议场景。排查准则如下:
flowchart TD
A["发生 SysBrd Vol Fault (FQXSPPW0063M)"] --> B["提取 FFDC 日志,打开 Block 04"]
B --> C{"故障在哪个字节?"}
C -->|"POWER_FAULT7 (0x041)<br>或 12V EFUSE"| D["大概率主板供电或外设短路<br>(背板、Riser、风扇、电源背板)"]
C -->|"POWER_FAULT6 (0x042)<br>3.3V / 5V"| E["主板电源芯片或板载器件短路<br>(更换主板)"]
C -->|"POWER_FAULT4 / 5<br>(PVCCIN / PVCCIO / VCCSA)"| F["CPU 核心供电轨故障"]
F --> G{"是否刚换过主板仍报相同 CPU 故障?"}
G -->|"是 (换板前后均指向同一 CPU)"| H["100% 锁定 CPU 本身损坏或底座接触不良<br>(申请更换 CPU)"]
G -->|"否 (首次报修)"| I["现场交叉测试方案"]
I --> J["单 CPU 最小化开机测试"]
I --> K["CPU 1 与 CPU 2 对调安装"]
K --> L{"故障寄存器是否发生转移?"}
L -->|"是 (故障随 CPU 跑到另一槽位)"| M["确定 CPU 芯片内部击穿短路<br>(换 CPU)"]
L -->|"否 (故障始终停留在同一物理槽位)"| N["主板 VRM 调压电路损坏或底座针脚受损<br>(换主板)"]
关键经验法则
- 供电产生与消耗关系:
- 主板 VRM 是电源发生器;
- CPU 内部晶体管是电源消耗负载。
- 当 CPU 内部核心或 I/O 平面发生雪崩击穿短路时,VRM 尝试输出电压会立即触发过流(OCP)或欠压(UVP),导致
Power Good无法输出。
- 换板后故障不消失的定律:
- 如果换了全新主板,FPGA 故障依旧报在相同的 CPU(如换板前报 CPU1 PVCCIN,换板后报 CPU1 PVCCIO),且关机源均为
0x80,可以绝对排除主板问题。因为两块主板同一供电电路同时损坏的概率极低,唯一不变的变量是沿用的旧 CPU。
- 物理 CPU 编号映射注意事项:
- 在 FPGA 底层:
CPU0对应物理槽位CPU 1(Boot CPU / Socket 0);CPU1对应物理槽位CPU 2(Socket 1)。 - 现场在无法 100% 确认工具解码对应关系时,最快也是最保险的操作是拆除第二颗 CPU 进行单 CPU 最小化开机或两颗 CPU 对调验证。
6. 附录:Lenovo ThinkSystem 平台代号速查表
在 Block 00 的 0x000 寄存器可读出平台 Chip ID,用于确认机型:
| Chip ID | 平台内部研发代号 (Codename) | 对应正式产品型号 |
|---|---|---|
0x44 | Cyborg | ThinkSystem SR650 / SR550 / Halo 7100 OEM |
0x41 | Taichi | ThinkSystem SR630 / SR530 |
0x56 | Ventura | ThinkSystem SN550(刀片服务器) |
0x49 | Pesto | ThinkSystem SD530(高密高节服务器) |
0x48 | Kirin | ThinkSystem SR850(四路服务器) |
0x4A | Marlon | ThinkSystem SR950(八路关键业务服务器) |