# DxeIpmiBmcInitialize

| Field       | Value                           |
|-------------|---------------------------------|
| Index       | 260                             |
| Module      | DxeIpmiBmcInitialize            |
| File        | DxeIpmiBmcInitialize.efi        |
| PE format   | PE32+                           |
| Size (hex)  | 5C04h                           |
| Size (bytes)| 23,556                          |
| Subsystem   | EFI Boot Service (000Ch)        |
| Sections    | 5 (.text, .rdata, .data, section_3, .xdata) |
| Phase       | DXE                             |
| Source      | AmiIpmiPkg/IpmiInitialize       |
| Build       | DEBUG_VS2015, X64               |

## Overview

This module performs BMC initialization during the DXE phase as part of the AMI IPMI stack. It locates and initializes KCS transport to the BMC, runs a BMC self-test and publishes the BMC Self Test Protocol, checks the BMC firmware version (OEM-specific), and installs SMBIOS Type 42 (Management Controller Description) and SPMI ACPI table records. It also handles IPMI CMOS clear, boot flag settings, and BMC-related setup option configuration.

## Key Functions

- _ModuleEntryPoint / DxeIpmiBmcInitialize2 -- driver entry and main initialization
- IpmiBmcSelfTest -- runs BMC self-test and publishes the protocol
- BmcSendCommand / BmcSendCommandWithResponse / BmcSendCommandNoResponse -- IPMI transport communication via KCS
- SMBIOS Type 42 record installation
- SPMI ACPI table installation
- IPMI CMOS clear and boot flag handling
- BMC firmware version validation (OEM-specific)

## Dependencies

- IPMI KCS Transport (I/O ports 0xCA2/0xCA3)
- UEFI Boot Services
- UEFI Runtime Variable Services (ServerSetup)
- SMBIOS Protocol
- ACPI Table Protocol
- DebugLib

## Platform

Intel/AMD64 UEFI, Lenovo HR650X BIOS