# PeiIpmiBmcInitialize

| Index | Module | Size | Phase |
|-------|--------|------|-------|
| 0411 | PeiIpmiBmcInitialize.efi | 0x27E0 (10208 bytes) | PEI |

## Overview

This module provides early IPMI (Intelligent Platform Management Interface) BMC (Baseboard Management Controller) initialization during the PEI phase. It implements the KCS (Keyboard Controller Style) IPMI transport layer for BMC communication, performs BMC discovery and interface detection, configures PCH LPC cycle decoding for IPMI I/O ranges, detects power failure status, and identifies the PCH SKU (Lewisburg vs. Sunrise Point). It installs a status code reporting PPI for debug output.

## Key Functions

- `GetReportStatusCode` -- Locates and returns the ReportStatusCode PPI
- `ReportStatusCode` -- Debug output via status code PPI with varargs
- `DebugAssert` -- Assert handler for debug builds
- `InternalCopyMem` -- Portable memory copy with overlap handling
- BMC KCS transport: send/receive IPMI commands via KCS interface
- PCH decode range programming for IPMI I/O port enablement

## Dependencies

- PeiIpmiBmcInitialize.h (module header)
- PEI Services (GetPeiServices / LocatePpi / InstallPpi)
- PCH LPC register definitions
- IPMI/KCS protocol specifications

## Platform

- Architecture: IA32 (32-bit)
- Machine type: x86 (0x014C)
- Subsystem: EFI Boot Service Driver (0x000B)
- Format: PE32
- Image base: 0xFFE5B334
- Sections: .text, .rdata, .data, .reloc