Newer
Older
AMI-Aptio-BIOS-Reversed / PiSmmIpl / README.md
@Ajax Dong Ajax Dong 2 days ago 1 KB Init

PiSmmIpl

Index: 0106 | Size: 90.4 KB | Phase: DXE | Arch: X64

Overview

PI SMM IPL (Initial Program Load) driver that serves as the bridge between DXE and SMM execution environments. Loads and launches the SMM Core into SMRAM, manages SMRAM region allocation, and handles communication between boot-time code and SMM code. Implements EFI_SMM_ACCESS_PROTOCOL and EFI_SMM_CONTROL_PROTOCOL to enable SMRAM visibility and software SMI generation for entering SMM. Coordinates S3 boot script management across the SMM/DXE boundary.

Key Functions

  • ModuleEntryPoint (0x1128): AutoGen entry -- saves ImageHandle, initializes global tables
  • sub_1154: Main IPL initialization -- locates SMM access/control protocols, configures SMRAM, loads SMM Core
  • sub_1504 / sub_16CC: SMRAM region enumeration and SMM Core loading into SMRAM
  • sub_2CF8 / sub_2D80: SMM communication buffer management and software SMI dispatch
  • sub_3034: Runtime services initialization for SMM communication (converts boot-time pointers to virtual addresses)
  • sub_43C4 / sub_4424 / sub_444C: Protocol notification handlers for SMM readiness events

Protocols/Dependencies

  • EFI_SMM_ACCESS_PROTOCOL (SMRAM open/close), EFI_SMM_CONTROL_PROTOCOL (SMI trigger)
  • EFI_SMM_COMMUNICATION_PROTOCOL, DXE Services Table
  • SMM Core (PiSmmCore) loaded into SMRAM
  • Runtime Services table for virtual address conversion (SetVirtualAddressMap transition)

Platform

EDK2 PI SMM IPL implementation, built for Lenovo HR650X (Purley platform). Bridges DXE to SMM execution context.