]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/CpuMpPei/CpuMpPei.c
UefiCpuPkg/CpuMpPei: Add missing point at function header
[mirror_edk2.git] / UefiCpuPkg / CpuMpPei / CpuMpPei.c
index 53af9489b2db30b78ba54406e975327a98b6a5ae..2e6e7611a2618ea1492d6debceb2f756bc2113bb 100644 (file)
@@ -142,7 +142,7 @@ GetMpHobData (
 }\r
 \r
 /**\r
-  Save the volatile registers required to be restored following INIT IPI\r
+  Save the volatile registers required to be restored following INIT IPI.\r
   \r
   @param  VolatileRegisters    Returns buffer saved the volatile resisters\r
 **/\r
@@ -173,7 +173,7 @@ SaveVolatileRegisters (
 }\r
 \r
 /**\r
-  Restore the volatile registers following INIT IPI\r
+  Restore the volatile registers following INIT IPI.\r
   \r
   @param  VolatileRegisters   Pointer to volatile resisters\r
   @param  IsRestoreDr         TRUE:  Restore DRx if supported\r
@@ -212,7 +212,7 @@ RestoreVolatileRegisters (
   This function will be called from AP reset code if BSP uses WakeUpAP.\r
 \r
   @param ExchangeInfo     Pointer to the MP exchange info buffer\r
-  @param NumApsExecuting  Number of curret executing AP\r
+  @param NumApsExecuting  Number of current executing AP\r
 **/\r
 VOID\r
 EFIAPI\r
@@ -259,10 +259,18 @@ ApCFunction (
     // Execute AP function if AP is not disabled\r
     //\r
     GetProcessorNumber (PeiCpuMpData, &ProcessorNumber);\r
+    //\r
+    // Restore AP's volatile registers saved\r
+    //\r
+    RestoreVolatileRegisters (&PeiCpuMpData->CpuData[ProcessorNumber].VolatileRegisters, TRUE);\r
+\r
     if ((PeiCpuMpData->CpuData[ProcessorNumber].State != CpuStateDisabled) &&\r
         (PeiCpuMpData->ApFunction != 0)) {\r
       PeiCpuMpData->CpuData[ProcessorNumber].State = CpuStateBusy;\r
       Procedure = (EFI_AP_PROCEDURE)(UINTN)PeiCpuMpData->ApFunction;\r
+      //\r
+      // Invoke AP function here\r
+      //\r
       Procedure ((VOID *)(UINTN)PeiCpuMpData->ApFunctionArgument);\r
       PeiCpuMpData->CpuData[ProcessorNumber].State = CpuStateIdle;\r
     }\r
@@ -273,6 +281,11 @@ ApCFunction (
   //\r
   InterlockedIncrement ((UINT32 *)&PeiCpuMpData->FinishedCount);\r
 \r
+  //\r
+  // Save AP volatile registers\r
+  //\r
+  SaveVolatileRegisters (&PeiCpuMpData->CpuData[ProcessorNumber].VolatileRegisters);\r
+\r
   AsmCliHltLoop ();\r
 }\r
 \r
@@ -602,7 +615,7 @@ CpuMpEndOfPeiCallback (
   EFI_PEI_HOB_POINTERS      Hob;\r
   EFI_HOB_MEMORY_ALLOCATION *MemoryHob;\r
 \r
-  DEBUG ((EFI_D_INFO, "CpuMpPei: CpuMpEndOfPeiCallback () invokded\n"));\r
+  DEBUG ((EFI_D_INFO, "CpuMpPei: CpuMpEndOfPeiCallback () invoked\n"));\r
 \r
   Status = PeiServicesGetBootMode (&BootMode);\r
   ASSERT_EFI_ERROR (Status);\r