Lenovo ThinkSystem FPGA Log Analysis and Fault Localization
This document is intended for Level 2 server hardware support engineers and on-site technical experts. It systematically explains how to deeply analyze onboard FPGA registers via FFDC logs in Lenovo ThinkSystem servers (Purley / Whitley platforms, such as SR650, SR550, SN550, etc.) to precisely locate Motherboard voltage faults (SysBrd Vol Fault / FQXSPPW0063M), Abnormal power loss (Power Fault) and CPU/memory power supply faults.
1. Why is FPGA log analysis required?
In the Lenovo ThinkSystem server architecture, XCC (BMC) is responsible for macro-level out-of-band monitoring and upper-layer alarms, while low-level hardware power-on sequence control, microsecond-level power protection, and hardware fault latching are fully managed by the onboard FPGA / CPLD exclusively.
- XCC Alarm Limitations: When a power supply abnormality occurs, the XCC System Event Log (SEL/CXL) typically reports only one generalized error:
Sensor SysBrd Vol Fault has transitioned to critical from a less severe state. (FQXSPPW0063M)This error merely indicates "motherboard voltage fault" and cannot specify whether the issue lies with 12V, 5V, 3.3V, or which specific CPU power rail is abnormal. Blindly replacing the motherboard often leads to repair failure. - FPGA Register Advantages: In the event of power drop, undervoltage, overcurrent, or short circuit on a power rail, microsecond instant, the FPGA will permanently latch the First Capture into hardware registers before forcibly shutting down system power (Power Fault Trip). This data persists until the next AC power cycle reset.
2. Distribution Path of FPGA Logs within FFDC
After extracting the exported FFDC service package from the server (extension name .tzz, actually in tar.gz format), the core FPGA logs are located at the following path:
2.1 Preferred File: Automatically Decoded Log
- File Path:
tmp/ffdc_live_dbg/fpga_on_demand.log - Description: The FFDC collection script (
firetool) automatically invokes the register decoding tool to generate a report containing highly readable bit parsing (e.g., directly indicatingPVCCIO CPU1 fault).
2.2 Alternative File: Raw Register Dump
When fpga_on_demand.log is not generated or the decoding tool version does not match, the following raw data must be examined:
- File Path:
var/volatile/log/fpga_powerfault.logorvar/volatile/log/fpga.log - Description: Records hexadecimal raw bytes (Hex Dump) for each register block (Block 00 ~ Block 63).
2.3 Signal Mapping Database (Cross-Reference)
- File Path:
tmp/dm.log - Description: XCC Data Manager signal pin mapping table, including
PWRGD_PVCCIO_CPU0,THERMAL_CPU1_VR_PVCCINand the physical binding of signals to hardware components.
3. Comprehensive Overview of FPGA Register Architecture (Block Structure)
Inside the FPGA, Blocks (each block typically 16 bytes) as units:
| Block ID | Name / Function | Key Troubleshooting Focus |
|---|---|---|
| Block 00 | Basic Information and Firmware Version | Chip ID (Platform), FPGA Major/Minor Version, Compilation Date |
| Block 01 | Motherboard and Platform Identification | Board ID, Platform ID |
| Block 02 | FPGA Flash Firmware Area | Main Firmware / Recovery Firmware Status |
| Block 04 | Power Management and Fault Latch Area | Core Troubleshooting Area! All voltage faults, power-on sources, and power-off sources are located here |
| Block 14 | RAS / CATERR Processor Fatal Errors | CPU Internal Fatal Errors (CATERR / IERR), PCIe Fatal Errors |
| Block 16 | Memory and UEFI Boot Phase | Memory Device Status, UEFI POST Progress Codes |
| Block 28 | Onboard Device and CPU Presence Detection | CPU0/CPU1 Presence (SKTOCC), Boot CPU Identification |
| Block 40 | Power Management Throttling and PSU Status | PSU1/PSU2 Presence and Power Supply Status, PMBus Communication |
| Block 60 | Debug Registers | GTL CPU Reset, PROCHOT Signal, PCIe Reset Status |
4. Block 04 Core Decoding and Lookup Table Quick Reference (Most Critical Section)
When the system reports SysBrd Vol Fault or powers off immediately upon boot, focus must be on Block 04.
4.1 Raw Data Format Identification
A typical Block 04 data line is as follows:
Block 04 - 7F 00 00 00 02 00 00 00 - 00 01 07 10 80 00 20 00
Offset and function for each byte:
| Byte Index | Register Name | Normal Healthy Value | Typical Abnormal Value | Functional Meaning |
|---|---|---|---|---|
| Byte 0 (0x040) | POWER_CAPABILITY | 7F | 7F | Power Management Capability Set Support Bit |
| Byte 1 (0x041) | POWER_FAULT7 | 00 | Non-00 | Standby/Auxiliary Rail Faults (5V_AUX, 1V8_PCH, Efuse, etc.) |
| Byte 2 (0x042) | POWER_FAULT6 | 00 | Non-00 | Motherboard 5V/3.3V and Memory VPP/VDDQ Power Supply Faults |
| Byte 3 (0x043) | POWER_FAULT5 | 00 | Non-00 | Memory VDDQ/VTT and some platform CPU VCCIO power supply faults |
| Byte 4 (0x044) | POWER_FAULT4 | 00 | Non-00 | CPU core power supply fault (PVCCIN / PVCCIO / VCCSA, etc.) |
| Byte 5-8 | POWER_FAULT3~0 | 00 | Non-00 | Peripheral power supply fault for PCIe expansion cards, M.2 adapter boards, etc. |
| Byte 9 (0x049) | BOOT_HISTORY | - | 01 | FPGA power-on boot history record |
| Byte 11 (0x04B) | POWER_ON_SRC | - | 10 | Power-on source: 0x10 Front panel button, 0x20 XCC remote power-on |
| Byte 12 (0x04C) | POWER_OFF_SRC | - | 80 | Power-off source: 0x80 Clearly indicates hardware power supply fault protection shutdown! |
| Byte 14 (0x04E) | RESET_SRC | - | 20 | Reset trigger source: 0x20 Chipset reset request |
[!TIP] > Under normal conditions,
POWER_FAULT0toPOWER_FAULT7(i.e., Byte 1 to Byte 8)Must all be00. If any single byte is non-00, it indicates that the power rail corresponding to that byte triggered a protection action.
4.2 POWER_FAULT Detailed Bit Definition Table
Depending on the FPGA firmware version, register definitions have minor adjustments (using SN550_FPGA_PowerFaults1.0 and the SR650 Cyborg platform general definition as examples):
(1) POWER_FAULT4 (Offset 0x044 / Offset 4h) —— CPU core voltage rails
This is the byte where faults most frequently occur; the hexadecimal number must be converted to an 8-bit binary (Bit 7 ~ Bit 0):
| Binary Bit | Hexadecimal Weight | Signal Definition (FPGA < 4.7) | Signal Definition (FPGA ≥ 4.7) | Fault Meaning and Localization |
|---|---|---|---|---|
| Bit 0 | 0x01 | VCCIN_CPU1_PG | VCCIN_CPU2_PG | CPU1 (or CPU2) FIVR input main power abnormality (1.8V) |
| Bit 1 | 0x02 | VCCIN_CPU2_PG / PVCCIO_CPU1 | VCCSA_CPU1_PG | CPU I/O or System Agent power abnormality |
| Bit 2 | 0x04 | VCCSA_CPU1_PG | VCCSA_CPU2_PG | CPU System Agent power abnormality |
| Bit 3 | 0x08 | VCCSA_CPU2_PG | PCH_CPU_PWRGD_3V | PCH / CPU power ready signal abnormality |
| Bit 4 | 0x10 | PVCCIN_CPU1 | MEZZCARD1_AUX_PWRGD | CPU FIVR main power rail fault (1.8V) |
| Bit 5 | 0x20 | MEZZCARD1_AUX_PWRGD | MEZZCARD2_AUX_PWRGD | Expansion card / mezzanine card auxiliary power abnormality |
| Bit 6 | 0x40 | MEZZCARD2_AUX_PWRGD | MEZZCARD1_PWRGD | Expansion card main power abnormality |
| Bit 7 | 0x80 | MEZZCARD1_PWRGD | MEZZCARD2_PWRGD | Expansion card main power abnormality |
- Practical Case Correspondence:
- If the register value is
0x10(binary0001 0000): Bit 4 set to 1, corresponding toPVCCIN CPU1 fault. - If the register value is
0x02(binary0000 0010): Bit 1 set to 1, corresponding toPVCCIO CPU1 fault.
(2) POWER_FAULT5 (Offset 0x043 / Offset 3h) —— Memory and VCCIO
| Binary bit | Hexadecimal weight | Typical definition | Fault meaning and location |
|---|---|---|---|
| Bit 5 | 0x20 | CPU1_VCCIO_PG | CPU 1 I/O power rail ready signal lost |
| Bit 6 | 0x40 | CPU2_VCCIO_PG | CPU 2 I/O power rail ready signal lost |
| Bit 0~4 | 0x01~0x10 | VDDQ / VTT | CPU corresponding channel DDR4 memory supply (1.2V / 0.6V) abnormality |
(3) POWER_FAULT6 (Offset 0x042 / Offset 2h) —— Motherboard main voltage and VPP
| Binary bit | Hexadecimal weight | Typical definition | Fault meaning and location |
|---|---|---|---|
| Bit 0 | 0x01 | 5V_PG / 3v3_PG | Motherboard 5V or 3.3V basic supply abnormality |
| Bit 1~4 | 0x02~0x10 | VPP_CPU1/2_ABC/DEF | Memory active supply (2.5V VPP) abnormality |
| Bit 5~7 | 0x20~0x80 | VDDQ_CPU1/2 | Memory main supply (1.2V) abnormality |
(4) POWER_FAULT7 (Offset 0x041 / Offset 1h) —— Standby auxiliary and input supply
| Binary bit | Hexadecimal weight | Typical definition | Fault meaning and location |
|---|---|---|---|
| Bit 0 | 0x01 | 5V_AUX_PG | 5V auxiliary standby voltage fault |
| Bit 4 | 0x10 | 1V8_PCH_AUX_PG | PCH standby supply fault |
| Bit 7 | 0x80 | PGD_MAIN_EFUSE (P_12V) | Motherboard 12V electronic fuse (eFuse) blown/protected (usually external short) |
5. Core determination rule: Is it a motherboard fault or a CPU fault?
This is the most typical dispute scenario faced by second-line technical support. The troubleshooting criteria are as follows:
flowchart TD
A["SysBrd Vol Fault (FQXSPPW0063M) occurs"] --> B["Extract the FFDC logs and open Block 04"]
B --> C{"Which byte reports the fault?"}
C -->|"POWER_FAULT7 (0x041)<br>or 12V EFUSE"| D["Likely system-board power fault or peripheral short circuit<br>(backplane, Riser, fan, power backplane)"]
C -->|"POWER_FAULT6 (0x042)<br>3.3V / 5V"| E["System-board power chip or onboard component short circuit<br>(replace the system board)"]
C -->|"POWER_FAULT4 / 5<br>(PVCCIN / PVCCIO / VCCSA)"| F["CPU core power rail fault"]
F --> G{"Does the same CPU fault persist after replacing the system board?"}
G -->|"Yes (same CPU identified before and after replacement)"| H["100% points to CPU damage or poor socket contact<br>(request CPU replacement)"]
G -->|"No (first service request)"| I["Onsite cross-testing plan"]
I --> J["Minimal boot test with one CPU"]
I --> K["Swap CPU 1 and CPU 2"]
K --> L{"Does the fault register move?"}
L -->|"Yes (fault follows the CPU to the other socket)"| M["CPU internal breakdown short circuit confirmed<br>(replace CPU)"]
L -->|"No (fault stays in the same physical socket)"| N["System-board VRM circuit damage or damaged socket pins<br>(replace the system board)"]
Key heuristic rule
- Power generation and consumption relationship:
- Motherboard VRM is Power generator;
- CPU internal transistors are Power consumption load.
- When an avalanche breakdown short circuit occurs in the CPU internal core or I/O plane, the VRM attempting to output voltage will immediately trigger overcurrent (OCP) or undervoltage (UVP), resulting in
Power Goodunable to output.
- Law of persistent fault after board replacement:
- If a brand new motherboard is replaced but the FPGA fault remains reported on the same CPU (e.g., reporting CPU1 PVCCIN before replacement and CPU1 PVCCIO after replacement), and the power-off source is both
0x80, Motherboard issues can be absolutely ruled out.. Since the probability of two motherboards sharing the same power circuit failing simultaneously is extremely low, the only constant variable is the reused legacy CPU.
- Precautions for Physical CPU Number Mapping:
- At the FPGA low level:
CPU0Corresponds to physical slotCPU 1(Boot CPU / Socket 0);CPU1Corresponds to physical slotCPU 2(Socket 1). - When on-site personnel cannot confirm 100% the tool's decoding correspondence, the fastest and most secure operation is Remove the second CPU to boot with a single-CPU minimum configuration or Swap the two CPUs to verify.
6. Appendix: Lenovo ThinkSystem Platform Code Name Quick Reference Table
In Block 00 's 0x000 register, the platform Chip ID can be read to confirm the model:
| Chip ID | Internal R&D Codename | Corresponding Official Product Model |
|---|---|---|
0x44 | Cyborg | ThinkSystem SR650 / SR550 / Halo 7100 OEM |
0x41 | Taichi | ThinkSystem SR630 / SR530 |
0x56 | Ventura | ThinkSystem SN550 (Blade Server) |
0x49 | Pesto | ThinkSystem SD530 (High-Density High-Efficiency Server) |
0x48 | Kirin | ThinkSystem SR850 (Four-socket Server) |
0x4A | Marlon | ThinkSystem SR950 (Eight-socket Mission-Critical Server) |