DEBUG ((EFI_D_INFO, "PeiInstallPeiMemory MemoryBegin 0x%LX, MemoryLength 0x%LX\n", MemoryBegin, MemoryLength));\r
PrivateData = PEI_CORE_INSTANCE_FROM_PS_THIS (PeiServices);\r
\r
+ //\r
+ // PEI_SERVICE.InstallPeiMemory should only be called one time during whole PEI phase.\r
+ // If it is invoked more than one time, ASSERT information is given for developer debugging in debug tip and\r
+ // simply return EFI_SUCESS in release tip to ignore it.\r
+ // \r
+ if (PrivateData->PeiMemoryInstalled) {\r
+ DEBUG ((EFI_D_ERROR, "ERROR: PeiInstallPeiMemory is called more than once!\n"));\r
+ ASSERT (PrivateData->PeiMemoryInstalled);\r
+ return EFI_SUCCESS;\r
+ }\r
+ \r
PrivateData->PhysicalMemoryBegin = MemoryBegin;\r
PrivateData->PhysicalMemoryLength = MemoryLength;\r
PrivateData->FreePhysicalMemoryTop = MemoryBegin + MemoryLength;\r