# UncoreInitPeim

| Field       | Value                                           |
|-------------|-------------------------------------------------|
| Index       | 424                                             |
| Module      | UncoreInitPeim                                   |
| Size        | 1,351,076 bytes (PE32 .text: ~1,041 KB / .rdata: ~186 KB / .data: ~74 KB / .reloc: ~18 KB) |
| Phase       | PEI                                             |
| Functions   | 2,560 (2,453 named, 107 sub_)                  |

## Overview

UncoreInitPeim is the largest PEI module in the BIOS at ~1.35 MB, responsible for initializing the Intel Purley (Xeon Scalable) uncore -- the on-die logic outside the CPU cores including IIO (Integrated I/O), Ubox, Mesh, and Memory Controller. Spanning 136,806 lines of decompiled C split across 5 part files, it handles PCIe topology enumeration, memory RAS configuration, global MMIO resource allocation, and socket-level uncore register programming.

## Key Functions

- `UncoreInit` -- Top-level uncore initialization dispatcher
- `PcieAddressInit` -- PCIe configuration space base address setup
- `UsraRegisterFilter` -- Unified System Register Access filtering for uncore registers
- `DebugPrintDispatcher` -- Debug/log output routing
- `_ModuleEntryPoint` -- PEI module entry; sets up debug services and dispatches sub-phases

## Dependencies

- PCIe configuration space (mmcfg)
- PEI Services (PeiServices)
- USRA (Unified System Register Access) library
- Memory controller registers and HOBs
- IIO/Mesh topology descriptors

## Platform

- **Architecture**: IA32 (x86, PE32)
- **Subsystem**: EFI Boot Service Driver (0x000B)
- **Machine**: 0x014C (i386)
- **Entry Point**: 0x395