mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-25 22:54:51 +02:00
UefiCpuPkg/MpInitLib: For SEV-ES guest, set stack based on processor number
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3008 Set the SEV-ES reset stack address for an AP based on the processor number instead of the APIC ID in case the APIC IDs are not zero-based and densely packed/enumerated. This will ensure an AP reset stack address does not get set outside of the AP reset stack memory allocation. Cc: Eric Dong <eric.dong@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Acked-by: Ray Ni <ray.ni@intel.com> Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com> Message-Id: <24866de07d2a954dec71df70972f1851273020d8.1604685192.git.thomas.lendacky@amd.com>
This commit is contained in:
parent
1b0db1ec87
commit
d150439b72
@ -680,11 +680,16 @@ MpInitLibSevEsAPReset (
|
|||||||
IN CPU_MP_DATA *CpuMpData
|
IN CPU_MP_DATA *CpuMpData
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
EFI_STATUS Status;
|
||||||
|
UINTN ProcessorNumber;
|
||||||
UINT16 Code16, Code32;
|
UINT16 Code16, Code32;
|
||||||
AP_RESET *APResetFn;
|
AP_RESET *APResetFn;
|
||||||
UINTN BufferStart;
|
UINTN BufferStart;
|
||||||
UINTN StackStart;
|
UINTN StackStart;
|
||||||
|
|
||||||
|
Status = GetProcessorNumber (CpuMpData, &ProcessorNumber);
|
||||||
|
ASSERT_EFI_ERROR (Status);
|
||||||
|
|
||||||
Code16 = GetProtectedMode16CS ();
|
Code16 = GetProtectedMode16CS ();
|
||||||
Code32 = GetProtectedMode32CS ();
|
Code32 = GetProtectedMode32CS ();
|
||||||
|
|
||||||
@ -696,7 +701,7 @@ MpInitLibSevEsAPReset (
|
|||||||
|
|
||||||
BufferStart = CpuMpData->MpCpuExchangeInfo->BufferStart;
|
BufferStart = CpuMpData->MpCpuExchangeInfo->BufferStart;
|
||||||
StackStart = CpuMpData->SevEsAPResetStackStart -
|
StackStart = CpuMpData->SevEsAPResetStackStart -
|
||||||
(AP_RESET_STACK_SIZE * GetApicId ());
|
(AP_RESET_STACK_SIZE * ProcessorNumber);
|
||||||
|
|
||||||
//
|
//
|
||||||
// This call never returns.
|
// This call never returns.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user