]> git.proxmox.com Git - mirror_edk2.git/blobdiff - UefiCpuPkg/CpuMpPei/PeiMpServices.c
UefiCpuPkg: Update CPU MP drivers to support single CPU configuration
[mirror_edk2.git] / UefiCpuPkg / CpuMpPei / PeiMpServices.c
index 503778fd9350df55ccef2f9164cc2d3e0478373b..5dd2c153f46a0399c56cc9fe72bca67b824d6add 100644 (file)
@@ -334,7 +334,7 @@ PeiGetProcessorInfo (
   if (PeiCpuMpData->CpuData[ProcessorNumber].ApicId == GetInitialApicId()) {\r
     ProcessorInfoBuffer->StatusFlag |= PROCESSOR_AS_BSP_BIT;\r
   }\r
-  if (PeiCpuMpData->CpuData[ProcessorNumber].Health.Uint32 == 0) {\r
+  if (PeiCpuMpData->CpuData[ProcessorNumber].CpuHealthy) {\r
     ProcessorInfoBuffer->StatusFlag |= PROCESSOR_HEALTH_STATUS_BIT;\r
   }\r
   if (PeiCpuMpData->CpuData[ProcessorNumber].State == CpuStateDisabled) {\r
@@ -441,6 +441,10 @@ PeiStartupAllAPs (
     return EFI_NOT_FOUND;\r
   }\r
 \r
+  if (Procedure == NULL) {\r
+    return EFI_INVALID_PARAMETER;\r
+  }\r
+\r
   //\r
   // Check whether caller processor is BSP\r
   //\r
@@ -804,6 +808,16 @@ PeiSwitchBSP (
   ApicBaseMsr.Uint64 = AsmReadMsr64 (MSR_IA32_APIC_BASE_ADDRESS);\r
   ApicBaseMsr.Bits.Bsp = 1;\r
   AsmWriteMsr64 (MSR_IA32_APIC_BASE_ADDRESS, ApicBaseMsr.Uint64);\r
+  //\r
+  // Set old BSP enable state\r
+  //\r
+  if (!EnableOldBSP) {\r
+    PeiCpuMpData->CpuData[PeiCpuMpData->BspNumber].State = CpuStateDisabled;\r
+  }\r
+  //\r
+  // Save new BSP number\r
+  //\r
+  PeiCpuMpData->BspNumber = (UINT32) ProcessorNumber;\r
 \r
   return EFI_SUCCESS;\r
 }\r