UefiCpuPkg: Update CPU MP drivers to support single CPU configuration
Only perform AP detection if PcdCpuMaxLogicalProcessorNumber > 1 Only free AP related structures of they were allocated Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael Kinney <michael.d.kinney@intel.com> Reviewed-by: Jeff Fan <jeff.fan@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@18629 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -357,22 +357,28 @@ CountProcessorNumber (
|
||||
// Store BSP's MTRR setting
|
||||
//
|
||||
MtrrGetAllMtrrs (&PeiCpuMpData->MtrrTable);
|
||||
|
||||
//
|
||||
// Send broadcast IPI to APs to wakeup APs
|
||||
// Only perform AP detection if PcdCpuMaxLogicalProcessorNumber is greater than 1
|
||||
//
|
||||
PeiCpuMpData->InitFlag = 1;
|
||||
WakeUpAP (PeiCpuMpData, TRUE, 0, NULL, NULL);
|
||||
//
|
||||
// Wait for AP task to complete and then exit.
|
||||
//
|
||||
MicroSecondDelay (PcdGet32 (PcdCpuApInitTimeOutInMicroSeconds));
|
||||
PeiCpuMpData->InitFlag = 0;
|
||||
PeiCpuMpData->CpuCount += (UINT32) PeiCpuMpData->MpCpuExchangeInfo->NumApsExecuting;
|
||||
ASSERT (PeiCpuMpData->CpuCount <= PcdGet32(PcdCpuMaxLogicalProcessorNumber));
|
||||
//
|
||||
// Sort BSP/Aps by CPU APIC ID in ascending order
|
||||
//
|
||||
SortApicId (PeiCpuMpData);
|
||||
if (PcdGet32 (PcdCpuMaxLogicalProcessorNumber) > 1) {
|
||||
//
|
||||
// Send broadcast IPI to APs to wakeup APs
|
||||
//
|
||||
PeiCpuMpData->InitFlag = 1;
|
||||
WakeUpAP (PeiCpuMpData, TRUE, 0, NULL, NULL);
|
||||
//
|
||||
// Wait for AP task to complete and then exit.
|
||||
//
|
||||
MicroSecondDelay (PcdGet32 (PcdCpuApInitTimeOutInMicroSeconds));
|
||||
PeiCpuMpData->InitFlag = 0;
|
||||
PeiCpuMpData->CpuCount += (UINT32)PeiCpuMpData->MpCpuExchangeInfo->NumApsExecuting;
|
||||
ASSERT (PeiCpuMpData->CpuCount <= PcdGet32 (PcdCpuMaxLogicalProcessorNumber));
|
||||
//
|
||||
// Sort BSP/Aps by CPU APIC ID in ascending order
|
||||
//
|
||||
SortApicId (PeiCpuMpData);
|
||||
}
|
||||
|
||||
DEBUG ((EFI_D_INFO, "CpuMpPei: Find %d processors in system.\n", PeiCpuMpData->CpuCount));
|
||||
return PeiCpuMpData->CpuCount;
|
||||
|
Reference in New Issue
Block a user