UefiCpuPkg/MpInitLib: Use SEV-SNP AP Creation NAE event to launch APs
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3275 Use the SEV-SNP AP Creation NAE event to create and launch APs under SEV-SNP. This capability will be advertised in the SEV Hypervisor Feature Support PCD (PcdSevEsHypervisorFeatures). Cc: Michael Roth <michael.roth@amd.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Cc: James Bottomley <jejb@linux.ibm.com> Cc: Min Xu <min.m.xu@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Tom Lendacky <thomas.lendacky@amd.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Erdem Aktas <erdemaktas@google.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Acked-by: Ray Ni <ray.ni@intel.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> Signed-off-by: Brijesh Singh <brijesh.singh@amd.com>
This commit is contained in:
committed by
mergify[bot]
parent
67484aed69
commit
06544455d0
@@ -93,7 +93,14 @@ GetWakeupBuffer (
|
||||
EFI_PHYSICAL_ADDRESS StartAddress;
|
||||
EFI_MEMORY_TYPE MemoryType;
|
||||
|
||||
if (ConfidentialComputingGuestHas (CCAttrAmdSevEs)) {
|
||||
if (ConfidentialComputingGuestHas (CCAttrAmdSevEs) &&
|
||||
!ConfidentialComputingGuestHas (CCAttrAmdSevSnp))
|
||||
{
|
||||
//
|
||||
// An SEV-ES-only guest requires the memory to be reserved. SEV-SNP, which
|
||||
// is also considered SEV-ES, uses a different AP startup method, though,
|
||||
// which does not have the same requirement.
|
||||
//
|
||||
MemoryType = EfiReservedMemoryType;
|
||||
} else {
|
||||
MemoryType = EfiBootServicesData;
|
||||
@@ -380,7 +387,7 @@ RelocateApLoop (
|
||||
MpInitLibWhoAmI (&ProcessorNumber);
|
||||
CpuMpData = GetCpuMpData ();
|
||||
MwaitSupport = IsMwaitSupport ();
|
||||
if (CpuMpData->SevEsIsEnabled) {
|
||||
if (CpuMpData->UseSevEsAPMethod) {
|
||||
StackStart = CpuMpData->SevEsAPResetStackStart;
|
||||
} else {
|
||||
StackStart = mReservedTopOfApStack;
|
||||
@@ -430,7 +437,7 @@ MpInitChangeApLoopCallback (
|
||||
CpuPause ();
|
||||
}
|
||||
|
||||
if (CpuMpData->SevEsIsEnabled && (CpuMpData->WakeupBuffer != (UINTN)-1)) {
|
||||
if (CpuMpData->UseSevEsAPMethod && (CpuMpData->WakeupBuffer != (UINTN)-1)) {
|
||||
//
|
||||
// There are APs present. Re-use reserved memory area below 1MB from
|
||||
// WakeupBuffer as the area to be used for transitioning to 16-bit mode
|
||||
|
Reference in New Issue
Block a user