# AcpiSmmPlatform

**Index:** 0213
**Size:** 34,916 bytes (8864h)
**Phase:** SMM (DXE_SMM_DRIVER)
**Source Package:** PurleyPlatPkg\Acpi\DxeSmm\AcpiSmm\AcpiSmmPlatform

## Overview
SMM driver for platform-specific ACPI SMI handling on Purley-based systems. Manages ACPI power management SMI events including system sleep state transitions (S3/S4/S5), platform PM1/PM control register trapping, and ACPI fixed event routing. Installs SMI handlers for power button, sleep button, and other ACPI-defined events. Part of the PurleyPlatPkg ACPI DXE/SMM stack that coordinates ACPI event handling between DXE and SMM phases.

## Key Functions
- **ModuleEntryPoint** -- Main entry: calls `InitializeSmmAcpiPlatform()` then `InitializeAcpiSmmPlatformHandlers()`
- **InitializeSmmAcpiPlatform** (`sub_5E4`) -- UEFI module pre-initialization; caches `ImageHandle`/`SystemTable` and table pointers
- **InitializeAcpiSmmPlatformHandlers** (`sub_C50`) -- Core ACPI SMM platform initialization: registers PM1/SMI handlers
- **ReleaseSmmAcpiPlatformResources** (`sub_1F20`) -- ACPI event notification/context cleanup callback
- **UnregisterSmmAcpiPlatformCallbacks** (`sub_360`) -- ACPI event callback teardown/unregistration helper
- **SmmAcpiPlatformAssert** (`sub_223C`) -- DEBUG assertion trap used for unreachable-code checks
- **CleanupAcpiSmmPlatformOnFailure** (`sub_B8C`) -- Error path cleanup handler when module returns failure
- **SetupAcpiSmmJumpRecovery** (`sub_2C0`) -- Set-jump style guard around init path to support recovery flow

## Protocols
- EFI_SMM_SYSTEM_TABLE2 for SMM services
- EFI_SMM_BASE2_PROTOCOL
- ACPI SMM platform protocol (platform-specific)
- Power Management 1 (PM1) register block trapping
- SMM IO trap protocol for PM IO port trapping

## Platform
HR650X (Purley), built from PurleyPlatPkg\Acpi\DxeSmm\AcpiSmm, DEBUG VS2015 X64
