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)
EDK2 PI SMM IPL implementation, built for Lenovo HR650X (Purley platform). Bridges DXE to SMM execution context.