// Wakeup APs to do some AP initialize sync (Microcode & MTRR)\r
//\r
if (CpuMpData->CpuCount > 1) {\r
- CpuMpData->InitFlag = ApInitReconfig;\r
+ if (OldCpuMpData != NULL) {\r
+ //\r
+ // Only needs to use this flag for DXE phase to update the wake up\r
+ // buffer. Wakeup buffer allocated in PEI phase is no longer valid\r
+ // in DXE.\r
+ //\r
+ CpuMpData->InitFlag = ApInitReconfig;\r
+ }\r
WakeUpAP (CpuMpData, TRUE, 0, ApInitializeSync, CpuMpData, TRUE);\r
//\r
// Wait for all APs finished initialization\r
while (CpuMpData->FinishedCount < (CpuMpData->CpuCount - 1)) {\r
CpuPause ();\r
}\r
- CpuMpData->InitFlag = ApInitDone;\r
+ if (OldCpuMpData != NULL) {\r
+ CpuMpData->InitFlag = ApInitDone;\r
+ }\r
for (Index = 0; Index < CpuMpData->CpuCount; Index++) {\r
SetApState (&CpuMpData->CpuData[Index], CpuStateIdle);\r
}\r