UINT32 PcdDxeDbLen;\r
VOID *PcdDxeDb;\r
\r
+ //\r
+ // Assign PCD Entries with default value to PCD DATABASE\r
+ //\r
+ mPcdDatabase.DxeDb = LocateExPcdBinary ();\r
+ ASSERT(mPcdDatabase.DxeDb != NULL);\r
+ PcdDxeDbLen = mPcdDatabase.DxeDb->Length + mPcdDatabase.DxeDb->UninitDataBaseSize;\r
+ PcdDxeDb = AllocateZeroPool (PcdDxeDbLen);\r
+ ASSERT (PcdDxeDb != NULL);\r
+ CopyMem (PcdDxeDb, mPcdDatabase.DxeDb, mPcdDatabase.DxeDb->Length);\r
+ FreePool (mPcdDatabase.DxeDb);\r
+ mPcdDatabase.DxeDb = PcdDxeDb;\r
+\r
GuidHob = GetFirstGuidHob (&gPcdDataBaseHobGuid);\r
if (GuidHob != NULL) {\r
\r
// Assign PCD Entries refereneced in PEI phase to PCD DATABASE\r
//\r
mPcdDatabase.PeiDb = PeiDatabase;\r
+ //\r
+ // Inherit the SystemSkuId from PEI phase.\r
+ //\r
+ mPcdDatabase.DxeDb->SystemSkuId = mPcdDatabase.PeiDb->SystemSkuId;\r
+ } else {\r
+ mPcdDatabase.PeiDb = AllocateZeroPool (sizeof (PEI_PCD_DATABASE));\r
+ ASSERT(mPcdDatabase.PeiDb != NULL);\r
}\r
\r
- //\r
- // Assign PCD Entries with default value to PCD DATABASE\r
- //\r
- mPcdDatabase.DxeDb = LocateExPcdBinary ();\r
- ASSERT(mPcdDatabase.DxeDb != NULL);\r
- PcdDxeDbLen = mPcdDatabase.DxeDb->Length + mPcdDatabase.DxeDb->UninitDataBaseSize;\r
- PcdDxeDb = AllocateZeroPool (PcdDxeDbLen);\r
- ASSERT (PcdDxeDb != NULL);\r
- CopyMem (PcdDxeDb, mPcdDatabase.DxeDb, mPcdDatabase.DxeDb->Length);\r
- FreePool (mPcdDatabase.DxeDb);\r
- mPcdDatabase.DxeDb = PcdDxeDb;\r
-\r
//\r
// Initialized the external PCD database local variables\r
//\r
//\r
FoundSku = FALSE;\r
for (Index = 0; Index < SkuIdTable[0]; Index++) {\r
- if (mPcdDatabase.PeiDb->SystemSkuId == SkuIdTable[Index + 1]) {\r
+ if (mPcdDatabase.DxeDb->SystemSkuId == SkuIdTable[Index + 1]) {\r
FoundSku = TRUE;\r
break;\r
}\r
//\r
SkuIdTable = GetSkuIdArray (LocalTokenNumberTableIdx, IsPeiDb);\r
for (Index = 0; Index < SkuIdTable[0]; Index++) {\r
- if (SkuIdTable[1 + Index] == mPcdDatabase.PeiDb->SystemSkuId) {\r
+ if (SkuIdTable[1 + Index] == mPcdDatabase.DxeDb->SystemSkuId) {\r
return SizeTable[SizeTableIdx + 1 + Index];\r
}\r
}\r
//\r
SkuIdTable = GetSkuIdArray (LocalTokenNumberTableIdx, IsPeiDb);\r
for (Index = 0; Index < SkuIdTable[0]; Index++) {\r
- if (SkuIdTable[1 + Index] == mPcdDatabase.PeiDb->SystemSkuId) {\r
+ if (SkuIdTable[1 + Index] == mPcdDatabase.DxeDb->SystemSkuId) {\r
SizeTable[SizeTableIdx + 1 + Index] = (SIZE_INFO) *CurrentSize;\r
return TRUE;\r
}\r