# SmbiosDataUpdateDxeNeonCityEPECB

## Function Table

| Address | Name | Description |
|---------|------|-------------|
|  | **SmbiosFreePool** |  |
|  | **SmbiosDataUpdateDxeEntryPoint** |  |
|  | **SmbiosDataUpdateEntry** |  |
|  | **SmbiosUpdateBoardTables** |  |
|  | **SmbiosConstructType9Slot** |  |
|  | **SmbiosConstructType17Memory** |  |
|  | **SmbiosConstructType41Device** |  |
|  | **SmbiosInstallTable** |  |
|  | **SmbiosGetPlatformLang** |  |
|  | **SmbiosNotifyEndOfType** |  |
|  | **SmbiosAssert** |  |
| Module | **Globals** |  |
| Standard | **UEFI globals (from UefiBootServicesTableLib** |  |
| EFI_HANDLE | **gImageHandle    = NULL;** |  |
| UBA | **platform SMBIOS configuration protocol** |  |
| VOID | ***gUbaPlatformSmbiosProtocol = NULL;** |  |
| HII | **handle for SMBIOS string packages** |  |
| EFI_HII_HANDLE | **gSmbiosStringPackHandle = NULL;** |  |
| HII | **protocol interfaces** |  |
| VOID | ***gHiiDatabaseProtocol = NULL;** |  |
| SMBIOS | **protocol instance (locate on demand)** |  |
| EFI_SMBIOS_PROTOCOL | ***gSmbiosProtocol     = NULL;** |  |
| VOID | ***gMmPciBase          = NULL;** |  |
| HOB | **list (HobLib)** |  |
| VOID | ***mHobList            = NULL;** |  |
| EFI | **Component Name and Driver Binding - AutoGen** |  |
| AutoGen | **header: SmbiosDataUpdateDxeStrDefs.h** |  |
| These | **are populated by the build system (AutoGen.c).** |  |
| Source | **path from build:** |  |
| Library | **Function Wrappers** |  |
| Entry | **Point** |  |
| Save | **UEFI globals for library compatibility** |  |
| gImageHandle | **= ImageHandle;** |  |
| Locate | **HII Database Protocol** |  |
| Status | **= gBS->LocateProtocol (** |  |
| Locate | **HII String Protocol** |  |
| Retrieve | **HOB list pointer for HobLib** |  |
| Status | **= EfiGetSystemConfigurationTable (** |  |
| Locate | **DxeServicesTable (gDS)** |  |
| Locate | **PciUsra protocol (Memory Mapped PCI config access)** |  |
| if | **(mPciUsra == NULL) {** |  |
| Register | **SMBIOS data update protocol with UBA** |  |
| Status | **= SmbiosDataUpdateEntry (ImageHandle, SystemTable);** |  |
| SMBIOS | **Data Update Entry** |  |
| Locate | **UBA platform SMBIOS configuration protocol from the** |  |
| platform | **PEIM or DXE driver** |  |
| Copy | **platform GUID into the SMBIOS configuration table** |  |
| CopyGuid | **(** |  |
| Register | **HII string packages for SMBIOS string references** |  |
| gSmbiosStringPackHandle | **= HiiAddPackages (** |  |
| Initialize | **SMBIOS table install parameters** |  |
| ZeroMem | **(TableInstallParams, sizeof (TableInstallParams));** |  |
| Locate | **SMBIOS protocol if not already found** |  |
| if | **(gSmbiosProtocol == NULL) {** |  |
| Call | **UBA board update function to install platform-specific SMBIOS tables** |  |
| Max | **SMBIOS table size** |  |
| Allocate | **a reusable work buffer for SMBIOS structure construction** |  |
| SmbiosTableBuffer | **= SmbiosAllocateZeroPool (SmbiosTableBufferSize);** |  |
| Phase | **1: Install SMBIOS Type 9 (System Slots) - up to 30 entries** |  |
| for | **(Index = 0; Index < 30; Index++) {** |  |
| Notify | **end of type 9 table enumeration** |  |
| SmbiosNotifyEndOfType | **(9);** |  |
| Phase | **2: Install SMBIOS Type 17 (Memory Devices) - up to 8 entries** |  |
| for | **(Index = 0; Index < 8; Index++) {** |  |
| Notify | **end of type 17 table enumeration** |  |
| SmbiosNotifyEndOfType | **(41);** |  |
| Phase | **3: Install SMBIOS Type 41 (Onboard Devices) - up to 4 entries** |  |
| for | **(Index = 0; Index < 4; Index++) {** |  |
| Clean | **up work buffer** |  |
| SmbiosFreePool | **(SmbiosTableBuffer);** |  |
| SMBIOS | **Type 9 (System Slots) Construction** |  |
| Slot | **0:  StringId=0x0002, Type=0x0B(x16), Width=0x04(x16)** |  |
| Slot | **1:** |  |
| Slot | **2:** |  |
| Slot | **3:** |  |
| Slot | **4:** |  |
| Slot | **5:** |  |
| Slot | **6:** |  |
| Slot | **7:** |  |
| Slot | **8:** |  |
| Slot | **9:** |  |
| Slot | **10:** |  |
| Slot | **11:** |  |
| Slot | **12:** |  |
| Slot | **13:** |  |
| Slot | **14:** |  |
| Slot | **15:** |  |
| Slot | **16:** |  |
| Slot | **17:** |  |
| Slot | **18:** |  |
| Slot | **19:** |  |
| Slot | **20:** |  |
| Slot | **21:** |  |
| Slot | **22:** |  |
| Slot | **23:** |  |
| Slot | **24:** |  |
| Slot | **25:** |  |
| Slot | **26:** |  |
| Slot | **27:** |  |
| Slot | **28:** |  |
| Slot | **29:** |  |
| Initialize | **SMBIOS header** |  |
| SmbiosHeader | **= (SMBIOS_STRUCT_HEADER *)Buffer;** |  |
| SMBIOS | **3.1 type 9 with segment/bus/devfunc** |  |
| Extract | **slot data from lookup table** |  |
| StringId | **= *(UINT16 *)&mSlotData[10 * Index];** |  |
| Populate | **type 9 fields** |  |
| First | **string** |  |
| Look | **up slot designation string from HII** |  |
| StringBuffer | **= SmbiosGetHiiString (** |  |
| Append | **the slot designation string** |  |
| SMBIOS | **Type 17 (Memory Device) Construction** |  |
| Initialize | **SMBIOS header: type 17 (Memory Device)** |  |
| CPU0 | **Channel 0 Slot 0: DIMM_A1** |  |
| x8 | **MemoryDevice->DataWidth   = 3;        // x72** |  |
| 4GB | **MemoryDevice->FormFactor  = 9;        // DIMM** |  |
| DDR4 | **MemoryDevice->Speed       = 2133;** |  |
| Use | **platform data** |  |
| CPU0 | **Channel 0 Slot 1: DIMM_A2** |  |
| CPU0 | **Channel 1 Slot 0: DIMM_B1** |  |
| CPU0 | **Channel 1 Slot 1: DIMM_B2** |  |
| CPU1 | **Channel 0 Slot 0: DIMM_C1** |  |
| CPU1 | **Channel 0 Slot 1: DIMM_C2** |  |
| CPU1 | **Channel 1 Slot 0: DIMM_D1** |  |
| CPU1 | **Channel 1 Slot 1: DIMM_D2** |  |
| Look | **up the device locator string from HII** |  |
| String | **IDs: 28-35 for DIMM labels** |  |
| Append | **string to SMBIOS structure** |  |
| Add | **the bank locator string (second string)** |  |
| SMBIOS | **Type 41 (Onboard Devices Extended Information) Construction** |  |
| Onboard | **VGA controller** |  |
| Onboard | **Network Controller 1** |  |
| Onboard | **Network Controller 2** |  |
| Onboard | **SATA Controller** |  |
| SMBIOS | **Table Installation** |  |
| Locate | **SMBIOS protocol if not already loaded** |  |
| Add | **the SMBIOS table via the protocol's Add() function** |  |
| Status | **= gSmbiosProtocol->Add (** |  |
| HII | **String Retrieval** |  |
| Locate | **HII string protocol if needed** |  |
| if | **(gHiiStringProtocol == NULL) {** |  |
| First | **call to get required buffer size (returns BUFFER_TOO_SMALL)** |  |
| StringSize | **= 0;** |  |
| Allocate | **string buffer** |  |
| StringBuffer | **= (EFI_STRING)AllocatePool (StringSize);** |  |
| Retrieve | **the string** |  |
| Status | **= HiiString->GetString (** |  |
| Convert | **from UCS-2 to ASCII** |  |
| AsciiSize | **= StringSize / sizeof (CHAR16) + 1;** |  |
| Platform | **Language Retrieval** |  |
| Query | **required size for PlatformLang variable** |  |
| Status | **= gRT->GetVariable (** |  |
| Allocate | **and retrieve the value** |  |
| SMBIOS | **Notify End-of-Type** |  |
| The | **SMBIOS protocol notification interface allows drivers to** |  |
| signal | **completion of table enumeration per type.** |  |
| This | **is typically a no-op on most firmware.** |  |
| Debug | **message display function (conditional on build flags).** |  |
| Writes | **formatted output to the UEFI debug console.** |  |
| are | **compiled out in RELEASE builds.** |  |
| Legacy | **ASSERT support wrappers** |  |
| Calls | **into UEFI's DebugAssert via DebugLib** |  |
| DEBUG | **((EFI_D_ERROR, "ASSERT [%a]:%d: %a\n", FileName, LineNumber, Description));** |  |

---
*Generated by HR650X BIOS Decompilation Project*