mirror of https://github.com/acidanthera/audk.git
UefiCpuPkg/MpInitLib: fix AP init issue in 64-bit PEI
This issue is introduced by a patch at
f32bfe6d06
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>
This commit is contained in:
parent
06c1f423e1
commit
69dfa8d87a
|
@ -843,14 +843,15 @@ FillExchangeInfoData (
|
||||||
);
|
);
|
||||||
|
|
||||||
ExchangeInfo->ModeTransitionMemory = (UINT32)CpuMpData->WakeupBufferHigh;
|
ExchangeInfo->ModeTransitionMemory = (UINT32)CpuMpData->WakeupBufferHigh;
|
||||||
ExchangeInfo->ModeHighMemory = (UINT32)CpuMpData->WakeupBufferHigh +
|
|
||||||
(UINT32)ExchangeInfo->ModeOffset -
|
|
||||||
(UINT32)CpuMpData->AddressMap.ModeTransitionOffset;
|
|
||||||
ExchangeInfo->ModeHighSegment = (UINT16)ExchangeInfo->CodeSegment;
|
|
||||||
} else {
|
} else {
|
||||||
ExchangeInfo->ModeTransitionMemory = (UINT32)
|
ExchangeInfo->ModeTransitionMemory = (UINT32)
|
||||||
(ExchangeInfo->BufferStart + CpuMpData->AddressMap.ModeTransitionOffset);
|
(ExchangeInfo->BufferStart + CpuMpData->AddressMap.ModeTransitionOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ExchangeInfo->ModeHighMemory = ExchangeInfo->ModeTransitionMemory +
|
||||||
|
(UINT32)ExchangeInfo->ModeOffset -
|
||||||
|
(UINT32)CpuMpData->AddressMap.ModeTransitionOffset;
|
||||||
|
ExchangeInfo->ModeHighSegment = (UINT16)ExchangeInfo->CodeSegment;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue