diff options
author | Jeff Fan <jeff.fan@intel.com> | 2017-04-25 11:22:00 +0800 |
---|---|---|
committer | Jeff Fan <jeff.fan@intel.com> | 2017-04-26 08:55:46 +0800 |
commit | 59a119f0fcaed5a7cab4829bb19dd7ffa94e16a0 (patch) | |
tree | 84927f63de09593339d3fa6bd3a8044e59b3be57 | |
parent | 9d64a9fd9ee05f0b0228fc1f8b66398dac85e2c9 (diff) | |
download | edk2-59a119f0fcaed5a7cab4829bb19dd7ffa94e16a0.zip edk2-59a119f0fcaed5a7cab4829bb19dd7ffa94e16a0.tar.gz edk2-59a119f0fcaed5a7cab4829bb19dd7ffa94e16a0.tar.bz2 |
UefiCpuPkg/MpLib.c: Set AP state after X2APIC mode enabled
After X2APIC mode is enabled, APs need to be set tp IDLE state, otherwise APs
cannot be waken up by MP PPI services.
https://bugzilla.tianocore.org/show_bug.cgi?id=505
Cc: Feng Tian <feng.tian@intel.com>
Cc: Michael Kinney <michael.d.kinney@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Jeff Fan <jeff.fan@intel.com>
Reviewed-by: Feng Tian <feng.tian@intel.com>
-rw-r--r-- | UefiCpuPkg/Library/MpInitLib/MpLib.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c index e5e211d..407c44c 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -434,6 +434,8 @@ CollectProcessorCount ( IN CPU_MP_DATA *CpuMpData
)
{
+ UINTN Index;
+
//
// Send 1st broadcast IPI to APs to wakeup APs
//
@@ -465,6 +467,12 @@ CollectProcessorCount ( // Enable x2APIC on BSP
//
SetApicMode (LOCAL_APIC_MODE_X2APIC);
+ //
+ // Set BSP/Aps state to IDLE
+ //
+ for (Index = 0; Index < CpuMpData->CpuCount; Index++) {
+ SetApState (&CpuMpData->CpuData[Index], CpuStateIdle);
+ }
}
DEBUG ((DEBUG_INFO, "APIC MODE is %d\n", GetApicMode ()));
//
|