Skip to content

Commit

Permalink
UefiCpuPkg: Decouple the SEV-ES functionality.
Browse files Browse the repository at this point in the history
The purpose is to fix an issue where an exception occurs at the start
of the DXE phase by applying the following patch series on INTEL-based
systems.

UefiCpuPkg: Refactor the logic for placing APs in HltLoop.
UefiCpuPkg: Refactor the logic for placing APs in Mwait/Runloop.
UefiCpuPkg: Create MpHandOff.
UefiCpuPkg: ApWakeupFunction directly use CpuMpData.
UefiCpuPkg: Eliminate the second INIT-SIPI-SIPI sequence.

This series of patches makes changes to the way the APs are
initialized and woken up. It removes the 2nd time INIT-SIPI-SIPI and
introduces a special startup signal to wake up APs. These patches also
create a new HOB identified by the mMpHandOffGuid, which stores only the
 minimum information required from the PEI phase to the DXE phase.
As a result, the original HOB (mCpuInitMpLibHobGuid) is now used only
as a global variable in the PEI phase and is no longer necessary in the
DXE phase for INTEL-based systems. The AMD SEV-ES related code
still relies on the OldCpuMpData in the DXE phase.

This patch decouple the SEV-ES functionality of assigning CpuMpData to
OldCpuMpData->NewCpuMpData from the Intel logic.

Cc: Eric Dong <[email protected]>
Cc: Rahul Kumar <[email protected]>
Reviewed-by: Tom Lendacky <[email protected]>
Reviewed-by: Ray Ni <[email protected]>
Signed-off-by: Yuanhao Xie <[email protected]>
  • Loading branch information
xieyuanh authored and niruiyu committed Jul 27, 2023
1 parent 25a6745 commit c7a7f09
Showing 1 changed file with 4 additions and 1 deletion.
5 changes: 4 additions & 1 deletion UefiCpuPkg/Library/MpInitLib/MpLib.c
Original file line number Diff line number Diff line change
Expand Up @@ -2160,7 +2160,10 @@ MpInitLibInitialize (
// APs have been wakeup before, just get the CPU Information
// from HOB
//
AmdSevUpdateCpuMpData (CpuMpData);
if (CpuMpData->UseSevEsAPMethod) {
AmdSevUpdateCpuMpData (CpuMpData);
}

CpuMpData->CpuCount = MpHandOff->CpuCount;
CpuMpData->BspNumber = GetBspNumber (MpHandOff);
CpuInfoInHob = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob;
Expand Down

0 comments on commit c7a7f09

Please sign in to comment.