UefiCpuPkg/Library/MpInitLib/MpLib.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
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 <eric.dong@intel.com>
Cc: Rahul Kumar <rahul1.kumar@intel.com>
Cc: Tom Lendacky <thomas.lendacky@amd.com>
Cc: Ray Ni <ray.ni@intel.com>
Signed-off-by: Yuanhao Xie <yuanhao.xie@intel.com>
---
UefiCpuPkg/Library/MpInitLib/MpLib.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c
index 737e03ffc5..e7054adbcc 100644
--- a/UefiCpuPkg/Library/MpInitLib/MpLib.c
+++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c
@@ -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;
--
2.36.1.windows.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#107264): https://edk2.groups.io/g/devel/message/107264
Mute This Topic: https://groups.io/mt/100366586/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-
On 7/26/23 02:51, YuanhaoXie wrote: > 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 <eric.dong@intel.com> > Cc: Rahul Kumar <rahul1.kumar@intel.com> > Cc: Tom Lendacky <thomas.lendacky@amd.com> > Cc: Ray Ni <ray.ni@intel.com> > Signed-off-by: Yuanhao Xie <yuanhao.xie@intel.com> > --- > UefiCpuPkg/Library/MpInitLib/MpLib.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c > index 737e03ffc5..e7054adbcc 100644 > --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c > +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c > @@ -2160,7 +2160,10 @@ MpInitLibInitialize ( > // APs have been wakeup before, just get the CPU Information > // from HOB > // > - AmdSevUpdateCpuMpData (CpuMpData); > + if (CpuMpData->UseSevEsAPMethod) { > + AmdSevUpdateCpuMpData (CpuMpData); > + } This looks fine. Applying this patch did not regress SEV-ES or SEV-SNP guest boots. Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com> Thanks, Tom > + > CpuMpData->CpuCount = MpHandOff->CpuCount; > CpuMpData->BspNumber = GetBspNumber (MpHandOff); > CpuInfoInHob = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob; -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#107270): https://edk2.groups.io/g/devel/message/107270 Mute This Topic: https://groups.io/mt/100366586/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
Reviewed-by: Ray Ni <ray.ni@intel.com> @Tom Lendacky, can you please comment? > -----Original Message----- > From: Xie, Yuanhao <yuanhao.xie@intel.com> > Sent: Wednesday, July 26, 2023 3:51 PM > To: devel@edk2.groups.io > Cc: Dong, Eric <eric.dong@intel.com>; Kumar, Rahul R > <rahul.r.kumar@intel.com>; Tom Lendacky <thomas.lendacky@amd.com>; Ni, > Ray <ray.ni@intel.com>; Xie, Yuanhao <yuanhao.xie@intel.com> > Subject: [Patch V3] UefiCpuPkg: Decouple the SEV-ES functionality. > > 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 <eric.dong@intel.com> > Cc: Rahul Kumar <rahul1.kumar@intel.com> > Cc: Tom Lendacky <thomas.lendacky@amd.com> > Cc: Ray Ni <ray.ni@intel.com> > Signed-off-by: Yuanhao Xie <yuanhao.xie@intel.com> > --- > UefiCpuPkg/Library/MpInitLib/MpLib.c | 5 ++++- > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c > b/UefiCpuPkg/Library/MpInitLib/MpLib.c > index 737e03ffc5..e7054adbcc 100644 > --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c > +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c > @@ -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; > -- > 2.36.1.windows.1 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#107265): https://edk2.groups.io/g/devel/message/107265 Mute This Topic: https://groups.io/mt/100366586/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/3901457/1787277/102458076/xyzzy [importer@patchew.org] -=-=-=-=-=-=-=-=-=-=-=-
© 2016 - 2024 Red Hat, Inc.