mirror of https://github.com/acidanthera/audk.git
UefiCpuPkg/MpInitLib: Keep compatible with former AP counting solution.
For some special platforms (such as Ovmf), it is possible
that, some APs start up *and finish* before the remaining
APs start up *at all*. In this case, the enhance
solution by changes 0594ec41
not works as expected.
This change remove check CpuMpData->CpuCount logic to let old
solution still workable if platform owner still set a long
time for PcdCpuApInitTimeOutInMicroSeconds. It's platform
owner's response to decide which solution to use.
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Jeff Fan <vanjeff_919@hotmail.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Jeff Fan <vanjeff_919@hotmail.com>
This commit is contained in:
parent
bf5a306ab5
commit
861218740d
|
@ -936,15 +936,20 @@ WakeUpAP (
|
|||
}
|
||||
if (CpuMpData->InitFlag == ApInitConfig) {
|
||||
//
|
||||
// Wait for one potential AP waken up in one specified period
|
||||
// Here support two methods to collect AP count through adjust
|
||||
// PcdCpuApInitTimeOutInMicroSeconds values.
|
||||
//
|
||||
if (CpuMpData->CpuCount == 0) {
|
||||
TimedWaitForApFinish (
|
||||
CpuMpData,
|
||||
PcdGet32 (PcdCpuMaxLogicalProcessorNumber) - 1,
|
||||
PcdGet32 (PcdCpuApInitTimeOutInMicroSeconds)
|
||||
);
|
||||
}
|
||||
// one way is set a value to just let the first AP to start the
|
||||
// initialization, then through the later while loop to wait all Aps
|
||||
// finsh the initialization.
|
||||
// The other way is set a value to let all APs finished the initialzation.
|
||||
// In this case, the later while loop is useless.
|
||||
//
|
||||
TimedWaitForApFinish (
|
||||
CpuMpData,
|
||||
PcdGet32 (PcdCpuMaxLogicalProcessorNumber) - 1,
|
||||
PcdGet32 (PcdCpuApInitTimeOutInMicroSeconds)
|
||||
);
|
||||
|
||||
while (CpuMpData->MpCpuExchangeInfo->NumApsExecuting != 0) {
|
||||
CpuPause();
|
||||
|
|
Loading…
Reference in New Issue