]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmulatorPkg/CpuRuntimeDxe/MpService.c
EmulatorPkg/Mpservice: CpuCheckAllAPsStatus: ProcedureLock => StateLock
[mirror_edk2.git] / EmulatorPkg / CpuRuntimeDxe / MpService.c
index bffc82b0479fed4fbe2233111e194997645711f1..238ecc6113150d853e58e0cf1e018f61f7d48160 100644 (file)
@@ -59,7 +59,7 @@ IsBSP (
   EFI_STATUS  Status;\r
   UINTN       ProcessorNumber;\r
 \r
-  Status = CpuMpServicesWhoAmI (&mMpSercicesTemplate, &ProcessorNumber);\r
+  Status = CpuMpServicesWhoAmI (&mMpServicesTemplate, &ProcessorNumber);\r
   if (EFI_ERROR (Status)) {\r
     return FALSE;\r
   }\r
@@ -512,11 +512,16 @@ CpuMpServicesStartupAllAps (
         if (SingleThread) {\r
           Status = GetNextBlockedNumber (&NextNumber);\r
           if (!EFI_ERROR (Status)) {\r
+            gThread->MutexLock (&gMPSystem.ProcessorData[NextNumber].StateLock);\r
             gMPSystem.ProcessorData[NextNumber].State = CPU_STATE_READY;\r
+            gThread->MutexUnlock (&gMPSystem.ProcessorData[NextNumber].StateLock);\r
           }\r
         }\r
 \r
+        gThread->MutexLock (ProcessorData->StateLock);\r
         ProcessorData->State = CPU_STATE_IDLE;\r
+        gThread->MutexUnlock (ProcessorData->StateLock);\r
+\r
         break;\r
 \r
       default:\r
@@ -936,7 +941,7 @@ CpuMpServicesWhoAmI (
 \r
 \r
 \r
-EFI_MP_SERVICES_PROTOCOL  mMpSercicesTemplate = {\r
+EFI_MP_SERVICES_PROTOCOL  mMpServicesTemplate = {\r
   CpuMpServicesGetNumberOfProcessors,\r
   CpuMpServicesGetProcessorInfo,\r
   CpuMpServicesStartupAllAps,\r
@@ -1010,9 +1015,9 @@ CpuCheckAllAPsStatus (
         if (!EFI_ERROR (Status)) {\r
           NextData = &gMPSystem.ProcessorData[NextNumber];\r
 \r
-          gThread->MutexLock (&NextData->ProcedureLock);\r
+          gThread->MutexLock (&NextData->StateLock);\r
           NextData->State = CPU_STATE_READY;\r
-          gThread->MutexUnlock (&NextData->ProcedureLock);\r
+          gThread->MutexUnlock (&NextData->StateLock);\r
 \r
           SetApProcedure (NextData, gMPSystem.Procedure, gMPSystem.ProcedureArgument);\r
         }\r
@@ -1348,7 +1353,7 @@ CpuMpServicesInit (
   Handle = NULL;\r
   Status = gBS->InstallMultipleProtocolInterfaces (\r
                   &Handle,\r
-                  &gEfiMpServiceProtocolGuid,   &mMpSercicesTemplate,\r
+                  &gEfiMpServiceProtocolGuid,   &mMpServicesTemplate,\r
                   NULL\r
                   );\r
   return Status;\r