| Address | Name | Description |
|---|---|---|
| InstallSmbiosStringTable | ||
| InstallSmbiosDataTable | ||
| InstallSmbiosMemoryTable | ||
| UpdateSmbiosStringPack | ||
| SmbiosDataUpdateCallback | ||
| SmbiosDataUpdateDxeEntryPoint | ||
| Global | variable definitions | |
| UEFI | handles and protocol interfaces | |
| Driver | image handle | |
| Pointer | to system table | |
| Pointer | to boot services | |
| Pointer | to runtime services | |
| Located | protocol interfaces | |
| EFI_HII_DATABASE_PROTOCOL | VOID *gHiiStringProtocol = NULL; // EFI_HII_STRING_PROTOCOL | |
| EFI_HII_CONFIG_ROUTING_PROTOCOL | VOID *gHiiConfigAccess = NULL; // EFI_HII_CONFIG_ACCESS_PROTOCOL | |
| EFI_DRIVER_BINDING_PROTOCOL | VOID *gHiiPackageList = NULL; // HII Package List Registration | |
| Located | services | |
| EFI_DXE_SERVICES | VOID *gHobList = NULL; // HOB list pointer | |
| MM | PCI Base Protocol (mPciUsra) | |
| Protocol | interfaces installed via UBA | |
| HII | string pack handle | |
| Platform | language protocol | |
| SMBIOS | protocol | |
| Data | Hub protocol | |
| Debug | mode flag (set via CMOS check) | |
| Debug | output protocol (for DEBUG/ASSERT) | |
| CLX64L | Platform SMBIOS String Table Definition | |
| This | table defines how SMBIOS string fields are mapped to HII string IDs | |
| for | the CLX64L platform. Each entry is a 10-byte record: | |
| Bytes | 0-1: HII StringId (UINT16) | |
| Byte | 2: Field type encoding | |
| Byte | 3: SMBIOS structure sub-type | |
| Bytes | 4-5: Reserved (field size/offset info) | |
| Bytes | 6-9: Reserved | |
| A | total of 22 entries are defined covering memory, cache, port, slot | |
| onboard | device, OEM, and system information SMBIOS types. | |
| Memory | Device - Type 17 fields | |
| Physical | Memory Array - Type 16 fields | |
| Cache | - Type 7 fields | |
| Port | Connector - Type 8 fields | |
| System | Slots - Type 9 fields | |
| Onboard | Device - Type 10 (or extended) fields | |
| OEM | Strings - Type 11 fields | |
| System | Information - Type 1 fields | |
| CLX64L | Platform SMBIOS Data Table Definition | |
| This | table defines the SMBIOS data update entries for SMBIOS types | |
| layout | of platform-specific binary data to be installed. | |
| The | table is indexed by the SMBIOS type groups and contains raw | |
| SMBIOS | structure data with embedded string references. | |
| Type | 0 - BIOS Information | |
| Type | 1 - System Information | |
| Type | 2 - Baseboard Information | |
| Type | 3 - System Enclosure | |
| Type | 4 - Processor Information | |
| Type | 7 - Cache Information | |
| Type | 8 - Port Connector Information | |
| Type | 9 - System Slots | |
| CLX64L | Platform SMBIOS Memory Data Table Definition | |
| This | table defines the SMBIOS data update entries for memory-related | |
| SMBIOS | types (Type 11, 17, 19, 20). These provide OEM-specific | |
| memory | configuration data and memory device mapping. | |
| Type | 11 - OEM Strings (memory-specific) | |
| Type | 17 - Memory Device | |
| Type | 19 - Memory Array Mapped Address | |
| Type | 20 - Memory Device Mapped Address | |
| Initialize | SMBIOS string structure header: | |
| Then | populate the structure from the string table entry fields | |
| and | retrieve the actual string data from the HII database. | |
| Structure | header (3 bytes) | |
| SMBIOS | type | |
| Structure | length | |
| Unused | handle | |
| Map | string table entry fields into the output buffer. | |
| Retrieve | the SMBIOS string from the HII database for all | |
| configured | languages and format it into the string pack buffer. | |
| return | EFI_SUCCESS; | |
| Copy | the platform SMBIOS data template for the specified | |
| data | table group into the output buffer. Each data table | |
| group | contains a complete SMBIOS structure including: | |
| For | CLX64L, the data table groups are: | |
| Build | the appropriate memory SMBIOS structure: | |
| Retrieve | the string from the HII database via the HII String protocol. | |
| First | query the required buffer size, then allocate and retrieve. | |
| StringSize | = 0; | |
| Calculate | total string data size by iterating through the package list. | |
| Each | package entry consists of: | |
| PackageArray | = (UINT8 )PackageList;** | |
| Calculate | string data size: total package size minus 4-byte header | |
| StringDataSize | = (UINT32 )PackageArray[Index] - 4; | |
| Allocate | the string pack buffer (24-byte header + string data) | |
| StringPackBuffer | = (UINT8 *)AllocateZeroPool (TotalSize + 24); | |
| Initialize | the string pack header: | |
| CopyGuid | ((EFI_GUID *)StringPackBuffer, PackageGuid); | |
| Copy | string data into the pack buffer, starting at offset 20 | |
| UINT8 | *DestPtr = StringPackBuffer + 20; | |
| Append | the terminating 4-byte entry | |
| Register | the string pack with HII database | |
| Status | = gHiiDatabaseProtocol->NewPackageList ( | |
| Not | associated with a driver handle | |
| If | no strings to update, return success | |
| if | (NumStrings == 0) { | |
| Build | the string pack by retrieving all strings sequentially. | |
| Each | string is null-terminated and concatenated into the output buffer. | |
| The | buffer format is compatible with SMBIOS string table expectations. | |
| Retrieve | each SMBIOS string from the HII database | |
| RetrievedString | = GetSmbiosString ( | |
| Grow | the buffer as needed | |
| StringBuffer | = (CHAR8 *)AllocateZeroPool (TotalBufferSize + StringLen); | |
| Copy | the string data | |
| if | (CurrentOffset > 0) { | |
| Verify | the total string size does not exceed the maximum | |
| supported | by the SMBIOS string table format | |
| if | (TotalBufferSize > SMBIOS_STRING_PACK_BUFFER_SIZE) { | |
| Allocate | a working buffer for string pack construction. | |
| The | buffer must be large enough to hold the largest SMBIOS | |
| string | table entry (768 bytes). | |
| WorkBuffer | = (UINT8 *)AllocateZeroPool (SMBIOS_STRING_PACK_BUFFER_SIZE); | |
| Phase | 1: Install SMBIOS String Table Entries | |
| Iterate | through all 30 (0x1E) string table entries and install | |
| each | one by formatting the SMBIOS structure and adding string | |
| references | from the HII database. | |
| for | (Index = 0; Index < SMBIOS_MAX_STRING_ENTRIES; Index++) { | |
| The | formatted string table entry is ready for installation. | |
| Write | it to the SMBIOS table via the string pack mechanism. | |
| UpdateSmbiosStringPack | ( | |
| Phase | 2: Install SMBIOS Data Table Entries | |
| Install | Type 0-9 data tables for the CLX64L platform. | |
| for | (Index = 0; Index < SMBIOS_MAX_DATA_ENTRIES; Index++) { | |
| Phase | 3: Install SMBIOS Memory Data Table Entries | |
| Install | Type 11, 17, 19, 20 memory data tables. | |
| for | (Index = 0; Index < SMBIOS_MAX_MEMORY_ENTRIES; Index++) { | |
| This | is accomplished by sending an end marker via the string | |
| protocol | to terminate the SMBIOS string pack. | |
| FreePool | (WorkBuffer); | |
| Save | the global UEFI handles | |
| gImageHandle | = ImageHandle; | |
| Locate | HII Database Protocol | |
| Status | = gBootServices->LocateProtocol ( | |
| Locate | HII String Protocol | |
| Locate | HII Config Routing Protocol | |
| Locate | the DXE Services Table via the configuration table | |
| Status | = EfiGetSystemConfigurationTable ( | |
| Locate | the HOB List via configuration table | |
| Locate | the MM PCI Base Protocol (for PCI configuration access) | |
| if | (gMmPciBaseProtocol == NULL) { | |
| Register | with UBA to install the CLX64L SMBIOS platform data | |
| Status | = UbaSmbiosUpdateLibRegister ( |
Generated by HR650X BIOS Decompilation Project