AMI-Aptio-BIOS-Reversed / PurleyPlatPkg / Ras / Smm / ErrHandling / FpgaErrorHandler / FpgaErrorHandler /
@Ajax Dong Ajax Dong authored 7 days ago
..
FpgaErrorHandler.c Recovering names (well, look still has huge cleanups) 7 days ago
FpgaErrorHandler.h Recovering names (well, look still has huge cleanups) 7 days ago
FpgaErrorHandler.md Recovering names 7 days ago
FpgaErrorHandler_analysis.md Restructure the repo 7 days ago
README.md Recovering names 7 days ago
README.md

FpgaErrorHandler

Index: 0220 | Size: 36,864 bytes (148,352 body) | Phase: SMM

Overview

SMM driver for FPGA error handling on Intel Purley. Source recovery is anchored on FpgaErrorHandler.md and the local decompiler naming map.

The public entry remains ModuleEntryPoint, which forwards into the recovered AutoGen entry symbol _ModuleEntryPoint.

Split in this module:

  • FpgaErrorHandler.c: recovered entry logic and state usage (_ModuleEntryPoint plus ModuleEntryPoint shim).
  • FpgaErrorHandler.h: recovered helper API aliases and state symbol declarations.
  • FpgaErrorHandler.md: recovered symbol table and detailed behavior notes.

Key Functions

  • _ModuleEntryPoint -- recovered AutoGen module entry symbol.
  • ModuleEntryPoint -- compatibility wrapper to _ModuleEntryPoint.
  • FpgaErrorHandlerInitializeContext (sub_5C0) -- entry init capture.
  • RegisterFpgaErrorCallbacks (sub_EAC) -- primary setup routine.
  • FpgaErrorHandlerSetJumpStateSave (sub_280) -- set-jump capture.
  • FpgaErrorHandlerSetJumpStateCheck (sub_11E0) -- set-jump validation.
  • FpgaErrorHandlerSetJumpRecover (sub_320) -- set-jump recovery (longjmp equivalent).
  • FpgaErrorHandlerAssert (sub_11A0) -- decompiler recovery assertion/log edge.
  • FpgaErrorHandlerCleanup (sub_13D4) -- cleanup routine.
  • mFpgaErrorHandlerModuleStatus (qword_2FA8) -- module return status.
  • mFpgaErrorHandlerJumpBuffer (unk_2EB0) -- recovered 0xF8-byte jump buffer.

Additional callback-symbol recovery notes (from decompilation flow notes):

  • FpgaErrorHandlerIsErrorPresent (sub_B38) — FPGA presence callback
  • FpgaErrorHandlerClearErrors (sub_B48) — FPGA error clear callback
  • FpgaErrorHandlerClearBuffer (sub_BF0) — FPGA buffer clear callback
  • FpgaErrorHandlerQueryErrorStatus (sub_C90) — FPGA status query callback
  • FpgaErrorHandlerHandleFatalError (sub_CB4) — FPGA fatal handler callback
  • FpgaErrorHandlerPoll (sub_D48) — FPGA poll callback

Protocols/Dependencies

  • MmPciBase Protocol, FPGA Callback Registration Protocol
  • MpSyncData Protocol, PciRootBridge Protocol, PCD Protocol
  • GPIO Private Library, PCH Info Library

Platform

Intel Purley (Skylake-SP Xeon), HR650X
Source: PurleyPlatPkg/Ras/Smm/ErrHandling/FpgaErrorHandler/FpgaErrorHandler