# OemSaveSmbiosDxe

- **Module:** 0091
- **File:** OemSaveSmbiosDxe.efi
- **Size:** 12640 bytes (0x3160)
- **Phase:** DXE (Driver Execution Environment)
- **MD5:** 8c1d934e97825c7b1ec3bf4b448da3e0
- **SHA256:** 7466e5a58cf614358c979611ed39cd085c452ee877c370c47f0c22b586ffa8c4

## Overview

SMBIOS PCD Save/Restore DXE driver. Saves OEM SMBIOS PCD configuration values (system manufacturer, product name, serial numbers, UUID, chassis info, baseboard info) into the "OemSmbiosPcdValue" EFI variable and restores them on subsequent boots. On first boot or after FRU replacement, if firmware detects default "To be filled by O.E.M." strings in the PCD data, it restores the previously saved values from the variable, ensuring customer-customized SMBIOS data persists across firmware updates and FRU replacements.

## Key Functions

| Function | Description |
|---|---|
| `_ModuleEntryPoint` | UEFI driver entry point; initializes service table pointers and calls OemSaveSmbiosPcdvalue |
| `OemSaveSmbiosPcdvalue` | Reads all system/board/chassis PCD tokens (manufacturer, product name, serial number, version, UUID, asset tag, chassis type) and saves them into the OemSmbiosPcdValue UEFI variable |
| `OemRestoreSmbiosPcdvalue` | Reads saved OemSmbiosPcdValue variable and restores individual SMBIOS PCD tokens when FRU data contains default placeholder strings |
| `OemRestoreSmbiosString` | Restores a single SMBIOS string PCD token from the saved variable data |
| `GetPcdProtocol` | Locates and caches the PCD protocol |
| `GetHobList` | Retrieves HOB list pointer from system table |
| `PcdGetPtrWrapper` | Safe wrapper for PCD protocol GetPtr with size verification |
| `DebugAssert` | Assertion handler with CMOS-aware debug level |
| `DebugPrint` | Conditional debug print with CMOS debug level mask |

## Protocols/Dependencies

- **SMBIOS Protocol** - SMBIOS table access
- **PCD Protocol** - Platform Configuration Database for SMBIOS token access
- **HOB List** - For DXE Services Table initialization
- OemSmbiosPcdValue UEFI variable (Runtime accessible) - Persistent SMBIOS data storage
- PCD Tokens: System manufacturer (118), product name (117), version (119), serial number (120), UUID (187), baseboard manufacturer (121), product name (122), version (123), serial number (124), asset tag (125), chassis manufacturer (126), version (127), serial number (128), asset tag (129), chassis type (188)

## Platform

Lenovo ThinkSystem HR650X (Purley platform) - OEM SMBIOS customization persistence