UefiCpuPkg/MpInitLib: fix AP init issue in 64-bit PEI
This issue is introduced by a patch atf32bfe6d06
The above patch miss the case of 64-bit PEI, which will link X64/MpFuncs.nasm instead of Ia32/MpFuncs.nasm. For X64/MpFuncs.nasm, ExchangeInfo->ModeHighMemory should be always initialized no matter if separate wakeup buffer is allocated or not. Ia32/MpFuncs.nasm will not need ModeHighMemory during AP init. So the changes made in this patch should not affect the functionality of it. Cc: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Eric Dong <eric.dong@intel.com> Cc: Laszlo Ersek <lersek@redhat.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Jian J Wang <jian.j.wang@intel.com> Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com> (cherry picked from commit69dfa8d87a
)
This commit is contained in:
@@ -843,14 +843,15 @@ FillExchangeInfoData (
|
||||
);
|
||||
|
||||
ExchangeInfo->ModeTransitionMemory = (UINT32)CpuMpData->WakeupBufferHigh;
|
||||
ExchangeInfo->ModeHighMemory = (UINT32)CpuMpData->WakeupBufferHigh +
|
||||
(UINT32)ExchangeInfo->ModeOffset -
|
||||
(UINT32)CpuMpData->AddressMap.ModeTransitionOffset;
|
||||
ExchangeInfo->ModeHighSegment = (UINT16)ExchangeInfo->CodeSegment;
|
||||
} else {
|
||||
ExchangeInfo->ModeTransitionMemory = (UINT32)
|
||||
(ExchangeInfo->BufferStart + CpuMpData->AddressMap.ModeTransitionOffset);
|
||||
}
|
||||
|
||||
ExchangeInfo->ModeHighMemory = ExchangeInfo->ModeTransitionMemory +
|
||||
(UINT32)ExchangeInfo->ModeOffset -
|
||||
(UINT32)CpuMpData->AddressMap.ModeTransitionOffset;
|
||||
ExchangeInfo->ModeHighSegment = (UINT16)ExchangeInfo->CodeSegment;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user