Newer
Older
AMI-Aptio-BIOS-Reversed / CpPlatPkg / Uba / CfgDb / Pei / UbaConfigDatabasePei / UbaConfigDatabasePei.md
@Ajax Dong Ajax Dong 2 days ago 3 KB Full restructure

UbaConfigDatabasePei

Function Table

Address Name Description
PeiDebugPrint
PeiDebugAssert
CfgDbLibGetNodeSignature
CfgDbLibInitNode
CfgDbLibAdjustOffsets
CfgDbLibFixupRelocation
CfgDbPeiGetDatabase
CfgDbLibGetRecord
CfgDbLibFindRecord
CfgDbLibAddRecord
CfgDbLibGetData
CfgDbLibBuildHob
CfgDbHobNotify
CfgDbNotifyCreateDb
CfgDbLibInitNodeAndRelocate
CfgDbNotifyGetInfo
CfgDbNotifyAddRecord
CfgDbNotifyFindKey
CfgDbPeimEntry
ModuleEntryPoint
Config Database helper functions
Node is a UBA_CFG_DB_RECORD; get count from container
DbNode = (UBA_CFG_DB_NODE )((UINT8 )Record - OFFSET_OF (UBA_CFG_DB_RECORD, ListEntry));
Check if DbName is actually a record; resolve to the container node
Record = (UBA_CFG_DB_RECORD *)DbName;
Update the database pointer in the original node
CR (Container Record) macros
Only adjust if the relocation hasn't been applied yet
if (Record->Type != (UINT32)(UINTN)NodeBase) {
Not found as standalone - resolved via PPI pointer
Allocate copy pool for the data
DataSize field still set but data=0 - proceed
Copy the GUID key
CopyMem (&NewRecord->Guid, Src, sizeof (GUID));
Insert into linked list
InsertTailList (&DbNode->RecordListHead, &NewRecord->ListEntry);
Increment type counter
Install notification PPI for the added record
Validate signature
if (Record->Signature != UBA_CFG_DB_SIGNATURE) {
Calculate total HOB size:
HobSize = sizeof (UBA_CFG_DB_HOB) + DbNode->RecordCount * sizeof (UBA_CFG_DB_HOB_RECORD);
Create the HOB
HobData = (UBA_CFG_DB_HOB *)BuildGuidHob (HobGuid, HobSize);
Fill HOB header
Fill record array and data payload
HobRecord = (UBA_CFG_DB_HOB_RECORD )((UINT8 )HobData + sizeof (UBA_CFG_DB_HOB));
Get the database node
Record = (UBA_CFG_DB_RECORD )((UBA_CFG_DB_PPI )Ppi)->Database;
Notify callbacks for the PPI protocol
EFI_STATUS EFIAPI
Module entry point
Allocate the database node (0x3C = sizeof(UBA_CFG_DB_NODE))
CfgDbPpi = (UBA_CFG_DB_PPI *)PeiServicesAllocateZeroPool (sizeof (UBA_CFG_DB_NODE));
Initialize the PPI structure
Signature at offset 0-3
Version // Database pointer filled by CfgDbLibInitNodeAndRelocate
Function table:
PPI descriptor for installation
NotifyDescriptor = (UINT32 *)PeiServicesAllocateZeroPool (sizeof (EFI_PEI_PPI_DESCRIPTOR));
Not used
Install the PPI
PeiServices = GetPeiServices ();
Install notification PPI for HOB serialization
Status = ((EFI_PEI_SERVICES )GetPeiServices ())->NotifyPpi (**

Generated by HR650X BIOS Decompilation Project