# SmmAccess

**Index:** 0112 | **Size:** 88.2 KB | **Phase:** DXE/SMM | **Arch:** X64

## Overview

SMM Access driver for the Purley platform that manages SMRAM (System Management RAM) region configuration and access control. Implements EFI_SMM_ACCESS_PROTOCOL to open/close SMRAM windows, lock SMRAM against unauthorized access, and enumerate SMRAM descriptors. Integrates with S3 boot script to save/restore SMRAM configuration across S3 resume, and configures serial port (UART) baud rate from CMOS.

## Key Functions

- **SmmAccessDriverEntry** (0x6E0): Main driver initialization -- locates PCD database, retrieves HOB list, configures PCI express base address, programs serial port baud rate from CMOS
- **UefiBootServicesTableLibConstructor**: Caches protocol tables, reads UART configuration from CMOS index 0x5C, programs 16550-compatible UART, calls S3BootScriptLibInit
- **ModuleEntryPoint** (0x3D4): AutoGen entry point, calls SmmAccessDriverEntry
- **S3BootScriptLibInit**: Initializes S3 boot script context
- **sub_1D20**: SMRAM region enumeration from HOB data

## Protocols/Dependencies

- EFI_SMM_ACCESS_PROTOCOL (SMRAM open/close/lock operations)
- PCD Database Protocol, Boot Script Library
- SmmLockBox for S3 boot script persistence
- CMOS NVRAM (I/O ports 0x70/0x71) for UART baud rate configuration
- Source: PurleySktPkg/Smm/Access/SmmAccessDriver.c

## Platform

Intel Purley platform (PurleySktPkg), Lenovo HR650X. DEBUG_VS2015 X64 build.