From 76f441c57c6653d689fbe936ba494ebfdbc7cb4f Mon Sep 17 00:00:00 2001 From: Zhiguang Liu Date: Tue, 28 May 2024 09:52:06 +0800 Subject: [PATCH] UefiCpuPkg: Also exchange CPU_AP_DATA in SortApicId() CPU_AP_DATA contains AP's information such as CpuHealthy and VolatileRegisters. Exchange the whole CPU_AP_DATA buffer instead some fields to make code more simple. Signed-off-by: Zhiguang Liu --- UefiCpuPkg/Library/MpInitLib/MpLib.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c index 1951922912..78eeaa6de2 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -377,10 +377,9 @@ SortApicId ( UINTN Index3; UINT32 ApicId; CPU_INFO_IN_HOB CpuInfo; + CPU_AP_DATA CpuApData; UINT32 ApCount; CPU_INFO_IN_HOB *CpuInfoInHob; - volatile UINT32 *StartupApSignal; - VOID *SevEsSaveArea; ApCount = CpuMpData->CpuCount - 1; CpuInfoInHob = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob; @@ -407,18 +406,13 @@ SortApicId ( ); CopyMem (&CpuInfoInHob[Index1], &CpuInfo, sizeof (CPU_INFO_IN_HOB)); - // - // Also exchange the StartupApSignal and SevEsSaveArea. - // - StartupApSignal = CpuMpData->CpuData[Index3].StartupApSignal; - CpuMpData->CpuData[Index3].StartupApSignal = - CpuMpData->CpuData[Index1].StartupApSignal; - CpuMpData->CpuData[Index1].StartupApSignal = StartupApSignal; - - SevEsSaveArea = CpuMpData->CpuData[Index3].SevEsSaveArea; - CpuMpData->CpuData[Index3].SevEsSaveArea = - CpuMpData->CpuData[Index1].SevEsSaveArea; - CpuMpData->CpuData[Index1].SevEsSaveArea = SevEsSaveArea; + CopyMem (&CpuApData, &CpuMpData->CpuData[Index3], sizeof (CPU_AP_DATA)); + CopyMem ( + &CpuMpData->CpuData[Index3], + &CpuMpData->CpuData[Index1], + sizeof (CPU_AP_DATA) + ); + CopyMem (&CpuMpData->CpuData[Index1], &CpuApData, sizeof (CPU_AP_DATA)); } }