MpInitLib: Put SEV logic in separate file
The patch does several simplifications: 1. Treat SwitchToRealProc as part of RendezvousFunnelProc. So the common logic in MpLib.c doesn't need to be aware of SwitchToRealProc. As a result, SwitchToRealSize/Offset are removed from MP_ASSEMBLY_ADDRESS_MAP. 2. Move SwitchToRealProc to AmdSev.nasm. All other assembly code in AmdSev.nasm is called through OneTimeCall. Signed-off-by: Ray Ni <ray.ni@intel.com> Reviewed-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Tom Lendacky <thomas.lendacky@amd.com> Tested-by: Tom Lendacky <thomas.lendacky@amd.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Cc: Michael Roth <michael.roth@amd.com> Cc: James Bottomley <jejb@linux.ibm.com> Cc: Min Xu <min.m.xu@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.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>
This commit is contained in:
@@ -936,8 +936,7 @@ FillExchangeInfoData (
|
||||
// EfiBootServicesCode to avoid page fault if NX memory protection is enabled.
|
||||
//
|
||||
if (CpuMpData->WakeupBufferHigh != 0) {
|
||||
Size = CpuMpData->AddressMap.RendezvousFunnelSize +
|
||||
CpuMpData->AddressMap.SwitchToRealSize -
|
||||
Size = CpuMpData->AddressMap.RendezvousFunnelSize -
|
||||
CpuMpData->AddressMap.ModeTransitionOffset;
|
||||
CopyMem (
|
||||
(VOID *)CpuMpData->WakeupBufferHigh,
|
||||
@@ -991,8 +990,7 @@ BackupAndPrepareWakeupBuffer (
|
||||
CopyMem (
|
||||
(VOID *)CpuMpData->WakeupBuffer,
|
||||
(VOID *)CpuMpData->AddressMap.RendezvousFunnelAddress,
|
||||
CpuMpData->AddressMap.RendezvousFunnelSize +
|
||||
CpuMpData->AddressMap.SwitchToRealSize
|
||||
CpuMpData->AddressMap.RendezvousFunnelSize
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1029,7 +1027,6 @@ GetApResetVectorSize (
|
||||
UINTN Size;
|
||||
|
||||
Size = AddressMap->RendezvousFunnelSize +
|
||||
AddressMap->SwitchToRealSize +
|
||||
sizeof (MP_CPU_EXCHANGE_INFO);
|
||||
|
||||
return Size;
|
||||
@@ -1054,11 +1051,9 @@ AllocateResetVector (
|
||||
CpuMpData->WakeupBuffer = GetWakeupBuffer (ApResetVectorSize);
|
||||
CpuMpData->MpCpuExchangeInfo = (MP_CPU_EXCHANGE_INFO *)(UINTN)
|
||||
(CpuMpData->WakeupBuffer +
|
||||
CpuMpData->AddressMap.RendezvousFunnelSize +
|
||||
CpuMpData->AddressMap.SwitchToRealSize);
|
||||
CpuMpData->AddressMap.RendezvousFunnelSize);
|
||||
CpuMpData->WakeupBufferHigh = AllocateCodeBuffer (
|
||||
CpuMpData->AddressMap.RendezvousFunnelSize +
|
||||
CpuMpData->AddressMap.SwitchToRealSize -
|
||||
CpuMpData->AddressMap.RendezvousFunnelSize -
|
||||
CpuMpData->AddressMap.ModeTransitionOffset
|
||||
);
|
||||
//
|
||||
|
Reference in New Issue
Block a user