summaryrefslogtreecommitdiff
path: root/EdkModulePkg
diff options
context:
space:
mode:
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2006-06-02 05:28:18 +0000
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>2006-06-02 05:28:18 +0000
commit3496595d7bafc329cae169f79c450253b32fadd8 (patch)
tree5d20380c71fe1bdceb1ab61d8480a3e8e02eae47 /EdkModulePkg
parente74da3e30a12f2591d7fa30322397c0f6fa96dbc (diff)
downloadedk2-platforms-3496595d7bafc329cae169f79c450253b32fadd8.tar.xz
Make sure the PCD dxe service driver can handle the case where no PEIM is using any dynamic PCD entry and the PEI phase PCD database is empty.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@388 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'EdkModulePkg')
-rw-r--r--EdkModulePkg/Universal/PCD/Dxe/Service.c23
1 files changed, 17 insertions, 6 deletions
diff --git a/EdkModulePkg/Universal/PCD/Dxe/Service.c b/EdkModulePkg/Universal/PCD/Dxe/Service.c
index e1aded74f9..bccd0a600a 100644
--- a/EdkModulePkg/Universal/PCD/Dxe/Service.c
+++ b/EdkModulePkg/Universal/PCD/Dxe/Service.c
@@ -282,13 +282,24 @@ BuildPcdDxeDataBase (
ASSERT (mPcdDatabase != NULL);
GuidHob = GetFirstGuidHob (&gPcdDataBaseHobGuid);
- ASSERT (GuidHob != NULL);
- PeiDatabase = (PEI_PCD_DATABASE *) GET_GUID_HOB_DATA (GuidHob);
- //
- // Copy PCD Entries refereneced in PEI phase to PCD DATABASE
- //
- CopyMem (&mPcdDatabase->PeiDb, PeiDatabase, sizeof (PEI_PCD_DATABASE));
+ if (GuidHob != NULL) {
+
+ //
+ // We will copy over the PEI phase's PCD Database.
+ //
+ // If no PEIMs use dynamic Pcd Entry, the Pcd Service PEIM
+ // should not be included at all. So the GuidHob could
+ // be NULL. If it is NULL, we just copy over the DXE Default
+ // Value to PCD Database.
+ //
+
+ PeiDatabase = (PEI_PCD_DATABASE *) GET_GUID_HOB_DATA (GuidHob);
+ //
+ // Copy PCD Entries refereneced in PEI phase to PCD DATABASE
+ //
+ CopyMem (&mPcdDatabase->PeiDb, PeiDatabase, sizeof (PEI_PCD_DATABASE));
+ }
//
// Copy PCD Entries with default value to PCD DATABASE