VOID *mTopOfApCommonStack = 0;\r
VOID *mApStackStart = 0;\r
\r
-BOOLEAN mAPsAlreadyInitFinished = FALSE;\r
+volatile BOOLEAN mAPsAlreadyInitFinished = FALSE;\r
volatile BOOLEAN mStopCheckAllAPsStatus = TRUE;\r
\r
EFI_MP_SERVICES_PROTOCOL mMpServicesTemplate = {\r
EFI_AP_PROCEDURE Procedure;\r
VOID *ProcedureArgument;\r
\r
+ AsmApDoneWithCommonStack ();\r
+\r
+ while (!mAPsAlreadyInitFinished) {\r
+ CpuPause ();\r
+ }\r
+\r
WhoAmI (&mMpServicesTemplate, &ProcessorNumber);\r
CpuData = &mMpSystemData.CpuDatas[ProcessorNumber];\r
\r
- AsmApDoneWithCommonStack ();\r
-\r
//\r
// Avoid forcibly reset AP caused the AP State is not updated.\r
//\r
return;\r
}\r
\r
+ mMpSystemData.CpuDatas = ReallocatePool (\r
+ sizeof (CPU_DATA_BLOCK) * gMaxLogicalProcessorNumber,\r
+ sizeof (CPU_DATA_BLOCK) * mMpSystemData.NumberOfProcessors,\r
+ mMpSystemData.CpuDatas);\r
+\r
mAPsAlreadyInitFinished = TRUE;\r
\r
if (mMpSystemData.NumberOfProcessors < gMaxLogicalProcessorNumber) {\r