AMI-Aptio-BIOS-Reversed / LenovoServerPkg / Driver / LnvDriverPei /
@Ajax Dong Ajax Dong authored 7 days ago
..
AsciiSPrint.c Full restructure 7 days ago
AsciiSPrintFormat.c Full restructure 7 days ago
AsciiSPrintUnicode.c Full restructure 7 days ago
AsciiStrCpyS.c Full restructure 7 days ago
BasePrintLibSPrintMarker.c Full restructure 7 days ago
CmosWriteByte.c Full restructure 7 days ago
CopyMem.c Full restructure 7 days ago
DebugPrint.c Full restructure 7 days ago
DebugPrintLevelEnabled.c Full restructure 7 days ago
DivU64x32Remainder.c Full restructure 7 days ago
GetCmosService.c Full restructure 7 days ago
GetDebugService.c Full restructure 7 days ago
HobConstructorInternal.c Full restructure 7 days ago
InternalBuildGuidHob.c Full restructure 7 days ago
InternalHobConstructor.c Full restructure 7 days ago
IsHobInitialized.c Full restructure 7 days ago
IsLeapYear.c Full restructure 7 days ago
LnvDebugSwitchInit.c Full restructure 7 days ago
LnvDebugSwitchPpiCallback.c Full restructure 7 days ago
LnvDriverPei.c Full restructure 7 days ago
LnvDriverPei.h Full restructure 7 days ago
LnvDriverPei.md Full restructure 7 days ago
MemSet.c Full restructure 7 days ago
MemZero.c Full restructure 7 days ago
PeiLnvSendIpmiCmdConstructor.c Full restructure 7 days ago
PeiServicesGetIdt.c Full restructure 7 days ago
PeiServicesGetPointer.c Full restructure 7 days ago
README.md Full restructure 7 days ago
ReadRtcDateTime.c Full restructure 7 days ago
ReadUnaligned16.c Full restructure 7 days ago
ReadUnaligned64.c Full restructure 7 days ago
RtcCenturySet.c Full restructure 7 days ago
StrCpySInternal.c Full restructure 7 days ago
StrLenInternal.c Full restructure 7 days ago
StrSizeInternal.c Full restructure 7 days ago
WriteUnaligned32.c Full restructure 7 days ago
X86ReadIdtr.c Full restructure 7 days ago
_ModuleEntryPoint.c Full restructure 7 days ago
sub_FFE3C0D4.c Full restructure 7 days ago
sub_FFE3C0E2.c Full restructure 7 days ago
sub_FFE3C0F0.c Full restructure 7 days ago
README.md

LnvDriverPei

Index: 0402 | Size: 10,176 bytes | Phase: PEI | Format: PE32 (Ia32)

Overview

Lenovo-specific PEI driver that initializes debug switch configuration and manages PPI notification callbacks. Reads the LnvSetup UEFI variable at boot, persists PEI/DXE/SMM debug switch values to CMOS, and builds a GUID HOB for consumption by later phases. Also provides IPMI command library constructor and debug service interfaces.

Key Functions

  • ModuleEntryPoint -- Main entry: registers IPMI constructor PPI, calls LnvDebugSwitchInit
  • LnvDebugSwitchInit -- Reads LnvSetup variable, writes PEI/DXE/SMM debug switches to CMOS offsets, builds gLnvDebugSwitchHobGuid HOB
  • LnvDebugSwitchPpiCallback -- PPI notification callback with RTC timestamped debug output to serial
  • MemoryDiscoveredPpiCallback -- Logs gEfiPeiMemoryDiscoveredPpiGuid signal
  • BootInRecoveryModePpiCallback -- Logs recovery mode boot signal
  • EndOfPeiSignalPpiCallback -- Logs end-of-PEI signal
  • PeiLnvSendIpmiCmdConstructor -- IPMI command library PPI constructor with ASSERT on failure
  • DebugPrint / DebugAssert -- Debug output wrappers via GET_DEBUG_SERVICE PPI
  • CmosWriteByte / GetCmosService -- CMOS read/write via CMOS PPI
  • ReadRtcDateTime / IsLeapYear / RtcCenturySet -- RTC date/time helpers
  • PeiServicesGetPointer -- PEI services table pointer retrieval via IDT

Dependencies

  • GET_DEBUG_SERVICE PPI -- Debug output interface
  • CMOS PPI ({CCB296F6-...}) -- CMOS access
  • LnvSetup UEFI Variable -- Debug configuration input
  • PeiLnvSendIpmiCmdLib -- IPMI command library
  • PeiServicesTablePointerLibIdt -- Services table pointer via IDT

Platform

Lenovo HR650X (Purley)
Source: LenovoServerPkg/Library/LnvIpmiLib/IpmiCmd/