);\r
}\r
\r
-/**\r
- Get available system memory below 1MB by specified size.\r
-\r
- @param[in] PeiCpuMpData Pointer to PEI CPU MP Data\r
-**/\r
-VOID\r
-BackupAndPrepareWakeupBuffer(\r
- IN CPU_MP_DATA *CpuMpData\r
- )\r
-{\r
- CopyMem (\r
- (VOID *) CpuMpData->BackupBuffer,\r
- (VOID *) CpuMpData->WakeupBuffer,\r
- CpuMpData->BackupBufferSize\r
- );\r
- CopyMem (\r
- (VOID *) CpuMpData->WakeupBuffer,\r
- (VOID *) CpuMpData->AddressMap.RendezvousFunnelAddress,\r
- CpuMpData->AddressMap.RendezvousFunnelSize\r
- );\r
-}\r
-\r
-/**\r
- Restore wakeup buffer data.\r
-\r
- @param[in] PeiCpuMpData Pointer to PEI CPU MP Data\r
-**/\r
-VOID\r
-RestoreWakeupBuffer(\r
- IN CPU_MP_DATA *CpuMpData\r
- )\r
-{\r
- CopyMem (\r
- (VOID *) CpuMpData->WakeupBuffer,\r
- (VOID *) CpuMpData->BackupBuffer,\r
- CpuMpData->BackupBufferSize\r
- );\r
-}\r
-\r
/**\r
Notify function on End Of PEI PPI.\r
\r
Hob.Raw = GET_NEXT_HOB (Hob);\r
}\r
} else {\r
- CpuMpData->EndOfPeiFlag = TRUE;\r
+ CpuMpData->SaveRestoreFlag = TRUE;\r
RestoreWakeupBuffer (CpuMpData);\r
}\r
return EFI_SUCCESS;\r
BackupAndPrepareWakeupBuffer (CpuMpData);\r
}\r
\r
- if (CpuMpData->EndOfPeiFlag) {\r
+ if (CpuMpData->SaveRestoreFlag) {\r
BackupAndPrepareWakeupBuffer (CpuMpData);\r
}\r
}\r
IN CPU_MP_DATA *CpuMpData\r
)\r
{\r
- if (CpuMpData->EndOfPeiFlag) {\r
+ if (CpuMpData->SaveRestoreFlag) {\r
RestoreWakeupBuffer (CpuMpData);\r
}\r
}\r
EFI_STATUS Status;\r
\r
SaveCpuMpData (CpuMpData);\r
+\r
+ if (CpuMpData->CpuCount == 1) {\r
+ //\r
+ // If only BSP exists, return\r
+ //\r
+ return;\r
+ }\r
+\r
//\r
// Register an event for EndOfPei\r
//\r