Reviewed-by: Ray Ni <ray...@intel.com> > -----Original Message----- > From: Xu, Min M <min.m...@intel.com> > Sent: Saturday, May 7, 2022 9:36 AM > To: devel@edk2.groups.io > Cc: Xu, Min M <min.m...@intel.com>; Dong, Eric <eric.d...@intel.com>; Ni, Ray > <ray...@intel.com>; Brijesh Singh > <brijesh.si...@amd.com>; Aktas, Erdem <erdemak...@google.com>; James > Bottomley <j...@linux.ibm.com>; Yao, Jiewen > <jiewen....@intel.com>; Tom Lendacky <thomas.lenda...@amd.com>; Gerd Hoffmann > <kra...@redhat.com> > Subject: [PATCH V2 1/6] UefiCpuPkg: Revert "UefiCpuPkg: Enable Tdx support in > MpInitLib" > > From: Min M Xu <min.m...@intel.com> > > BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=3918 > > This reverts commit 88da06ca763eb6514565c1867a801a427c1f3447. > This commit triggers the ASSERT in Non-Td guest. > > Cc: Eric Dong <eric.d...@intel.com> > Cc: Ray Ni <ray...@intel.com> > Cc: Brijesh Singh <brijesh.si...@amd.com> > Cc: Erdem Aktas <erdemak...@google.com> > Cc: James Bottomley <j...@linux.ibm.com> > Cc: Jiewen Yao <jiewen....@intel.com> > Cc: Tom Lendacky <thomas.lenda...@amd.com> > Cc: Gerd Hoffmann <kra...@redhat.com> > Signed-off-by: Min Xu <min.m...@intel.com> > --- > UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf | 3 - > UefiCpuPkg/Library/MpInitLib/MpIntelTdx.h | 69 ------------ > UefiCpuPkg/Library/MpInitLib/MpLib.c | 63 +---------- > UefiCpuPkg/Library/MpInitLib/MpLibTdx.c | 106 ------------------ > UefiCpuPkg/Library/MpInitLib/MpLibTdxNull.c | 69 ------------ > UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf | 3 - > 6 files changed, 5 insertions(+), 308 deletions(-) > delete mode 100644 UefiCpuPkg/Library/MpInitLib/MpIntelTdx.h > delete mode 100644 UefiCpuPkg/Library/MpInitLib/MpLibTdx.c > delete mode 100644 UefiCpuPkg/Library/MpInitLib/MpLibTdxNull.c > > diff --git a/UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf > b/UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf > index 159b4d16ed0e..e1cd0b350008 100644 > --- a/UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf > +++ b/UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf > @@ -24,12 +24,10 @@ > [Sources.IA32] > Ia32/AmdSev.c > Ia32/MpFuncs.nasm > - MpLibTdxNull.c > > [Sources.X64] > X64/AmdSev.c > X64/MpFuncs.nasm > - MpLibTdx.c > > [Sources.common] > AmdSev.c > @@ -38,7 +36,6 @@ > MpLib.c > MpLib.h > Microcode.c > - MpIntelTdx.h > > [Packages] > MdePkg/MdePkg.dec > diff --git a/UefiCpuPkg/Library/MpInitLib/MpIntelTdx.h > b/UefiCpuPkg/Library/MpInitLib/MpIntelTdx.h > deleted file mode 100644 > index 8a26f6c19fc4..000000000000 > --- a/UefiCpuPkg/Library/MpInitLib/MpIntelTdx.h > +++ /dev/null > @@ -1,69 +0,0 @@ > -/** @file > - CPU MP Initialize Library header file for Td guest. > - > - Copyright (c) 2020 - 2022, Intel Corporation. All rights reserved.<BR> > - > - SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#ifndef MP_INTEL_TDX_H_ > -#define MP_INTEL_TDX_H_ > - > -#include <PiPei.h> > -#include <Library/BaseLib.h> > -#include <Library/DebugLib.h> > -#include <Uefi/UefiBaseType.h> > -#include <Protocol/MpService.h> > - > -/** > - Gets detailed MP-related information on the requested processor at the > - instant this call is made. This service may only be called from the BSP. > - > - @param[in] ProcessorNumber The handle number of processor. > - @param[out] ProcessorInfoBuffer A pointer to the buffer where > information for > - the requested processor is deposited. > - @param[out] HealthData Return processor health data. > - > - @retval EFI_SUCCESS Processor information was returned. > - @retval EFI_DEVICE_ERROR The calling processor is an AP. > - @retval EFI_INVALID_PARAMETER ProcessorInfoBuffer is NULL. > - @retval EFI_NOT_FOUND The processor with the handle specified by > - ProcessorNumber does not exist in the > platform. > - @retval EFI_NOT_READY MP Initialize Library is not initialized. > - > -**/ > -EFI_STATUS > -TdxMpInitLibGetProcessorInfo ( > - IN UINTN ProcessorNumber, > - OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer, > - OUT EFI_HEALTH_FLAGS *HealthData OPTIONAL > - ); > - > -/** > - Retrieves the number of logical processor in the platform and the number of > - those logical processors that are enabled on this boot. This service may > only > - be called from the BSP. > - > - @param[out] NumberOfProcessors Pointer to the total number of > logical > - processors in the system, > including the BSP > - and disabled APs. > - @param[out] NumberOfEnabledProcessors Pointer to the number of enabled > logical > - processors that exist in system, > including > - the BSP. > - > - @retval EFI_SUCCESS The number of logical processors and > enabled > - logical processors was retrieved. > - @retval EFI_DEVICE_ERROR The calling processor is an AP. > - @retval EFI_INVALID_PARAMETER NumberOfProcessors is NULL and > NumberOfEnabledProcessors > - is NULL. > - @retval EFI_NOT_READY MP Initialize Library is not initialized. > - > -**/ > -EFI_STATUS > -TdxMpInitLibGetNumberOfProcessors ( > - OUT UINTN *NumberOfProcessors, OPTIONAL > - OUT UINTN *NumberOfEnabledProcessors OPTIONAL > - ); > - > -#endif > diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c > b/UefiCpuPkg/Library/MpInitLib/MpLib.c > index 91c7afaeb2ad..4a73787ee43a 100644 > --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c > +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c > @@ -9,11 +9,9 @@ > **/ > > #include "MpLib.h" > -#include "MpIntelTdx.h" > #include <Library/VmgExitLib.h> > #include <Register/Amd/Fam17Msr.h> > #include <Register/Amd/Ghcb.h> > -#include <ConfidentialComputingGuestAttr.h> > > EFI_GUID mCpuInitMpLibHobGuid = CPU_INIT_MP_LIB_HOB_GUID; > > @@ -1805,10 +1803,6 @@ MpInitLibInitialize ( > UINTN BackupBufferAddr; > UINTN ApIdtBase; > > - if (CC_GUEST_IS_TDX (PcdGet64 (PcdConfidentialComputingGuestAttr))) { > - return EFI_SUCCESS; > - } > - > OldCpuMpData = GetCpuMpDataFromGuidedHob (); > if (OldCpuMpData == NULL) { > MaxLogicalProcessorNumber = PcdGet32 (PcdCpuMaxLogicalProcessorNumber); > @@ -2079,10 +2073,6 @@ MpInitLibGetProcessorInfo ( > CPU_INFO_IN_HOB *CpuInfoInHob; > UINTN OriginalProcessorNumber; > > - if (CC_GUEST_IS_TDX (PcdGet64 (PcdConfidentialComputingGuestAttr))) { > - return TdxMpInitLibGetProcessorInfo (ProcessorNumber, > ProcessorInfoBuffer, HealthData); > - } > - > CpuMpData = GetCpuMpData (); > CpuInfoInHob = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob; > > @@ -2177,10 +2167,6 @@ SwitchBSPWorker ( > BOOLEAN OldInterruptState; > BOOLEAN OldTimerInterruptState; > > - if (CC_GUEST_IS_TDX (PcdGet64 (PcdConfidentialComputingGuestAttr))) { > - return EFI_UNSUPPORTED; > - } > - > // > // Save and Disable Local APIC timer interrupt > // > @@ -2321,10 +2307,6 @@ EnableDisableApWorker ( > CPU_MP_DATA *CpuMpData; > UINTN CallerNumber; > > - if (CC_GUEST_IS_TDX (PcdGet64 (PcdConfidentialComputingGuestAttr))) { > - return EFI_UNSUPPORTED; > - } > - > CpuMpData = GetCpuMpData (); > > // > @@ -2385,11 +2367,6 @@ MpInitLibWhoAmI ( > return EFI_INVALID_PARAMETER; > } > > - if (CC_GUEST_IS_TDX (PcdGet64 (PcdConfidentialComputingGuestAttr))) { > - *ProcessorNumber = 0; > - return EFI_SUCCESS; > - } > - > CpuMpData = GetCpuMpData (); > > return GetProcessorNumber (CpuMpData, ProcessorNumber); > @@ -2428,16 +2405,12 @@ MpInitLibGetNumberOfProcessors ( > UINTN EnabledProcessorNumber; > UINTN Index; > > + CpuMpData = GetCpuMpData (); > + > if ((NumberOfProcessors == NULL) && (NumberOfEnabledProcessors == NULL)) { > return EFI_INVALID_PARAMETER; > } > > - if (CC_GUEST_IS_TDX (PcdGet64 (PcdConfidentialComputingGuestAttr))) { > - return TdxMpInitLibGetNumberOfProcessors (NumberOfProcessors, > NumberOfEnabledProcessors); > - } > - > - CpuMpData = GetCpuMpData (); > - > // > // Check whether caller processor is BSP > // > @@ -2517,16 +2490,13 @@ StartupAllCPUsWorker ( > BOOLEAN HasEnabledAp; > CPU_STATE ApState; > > + CpuMpData = GetCpuMpData (); > + > if (FailedCpuList != NULL) { > *FailedCpuList = NULL; > } > > - Status = MpInitLibGetNumberOfProcessors (&ProcessorCount, NULL); > - if (EFI_ERROR (Status)) { > - return Status; > - } > - > - if ((ProcessorCount == 1) && ExcludeBsp) { > + if ((CpuMpData->CpuCount == 1) && ExcludeBsp) { > return EFI_NOT_STARTED; > } > > @@ -2534,22 +2504,6 @@ StartupAllCPUsWorker ( > return EFI_INVALID_PARAMETER; > } > > - if (CC_GUEST_IS_TDX (PcdGet64 (PcdConfidentialComputingGuestAttr))) { > - // > - // For Td guest ExcludeBsp must be FALSE. Otherwise it will return in > above checks. > - // > - ASSERT (!ExcludeBsp); > - > - // > - // Start BSP. > - // > - Procedure (ProcedureArgument); > - > - return EFI_SUCCESS; > - } > - > - CpuMpData = GetCpuMpData (); > - > // > // Check whether caller processor is BSP > // > @@ -2689,13 +2643,6 @@ StartupThisAPWorker ( > CPU_AP_DATA *CpuData; > UINTN CallerNumber; > > - // > - // In Td guest, startup of AP is not supported in current stage. > - // > - if (CC_GUEST_IS_TDX (PcdGet64 (PcdConfidentialComputingGuestAttr))) { > - return EFI_UNSUPPORTED; > - } > - > CpuMpData = GetCpuMpData (); > > if (Finished != NULL) { > diff --git a/UefiCpuPkg/Library/MpInitLib/MpLibTdx.c > b/UefiCpuPkg/Library/MpInitLib/MpLibTdx.c > deleted file mode 100644 > index fdb58fba9323..000000000000 > --- a/UefiCpuPkg/Library/MpInitLib/MpLibTdx.c > +++ /dev/null > @@ -1,106 +0,0 @@ > -/** @file > - CPU MP Initialize Library common functions for Td guest. > - > - Copyright (c) 2020 - 2022, Intel Corporation. All rights reserved.<BR> > - > - SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#include "MpLib.h" > -#include "MpIntelTdx.h" > - > -/** > - Gets detailed MP-related information on the requested processor at the > - instant this call is made. This service may only be called from the BSP. > - > - In current stage only the BSP is workable. So ProcessorNumber should be 0. > - > - @param[in] ProcessorNumber The handle number of processor. > - @param[out] ProcessorInfoBuffer A pointer to the buffer where > information for > - the requested processor is deposited. > - @param[out] HealthData Return processor health data. > - > - @retval EFI_SUCCESS Processor information was returned. > - @retval EFI_DEVICE_ERROR The calling processor is an AP. > - @retval EFI_INVALID_PARAMETER ProcessorInfoBuffer is NULL or > ProcessorNumber is not 0. > - @retval EFI_NOT_FOUND The processor with the handle specified by > - ProcessorNumber does not exist in the > platform. > - @retval EFI_NOT_READY MP Initialize Library is not initialized. > - > -**/ > -EFI_STATUS > -TdxMpInitLibGetProcessorInfo ( > - IN UINTN ProcessorNumber, > - OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer, > - OUT EFI_HEALTH_FLAGS *HealthData OPTIONAL > - ) > -{ > - UINTN OriginalProcessorNumber; > - > - // > - // Lower 24 bits contains the actual processor number. > - // > - OriginalProcessorNumber = ProcessorNumber; > - ProcessorNumber &= BIT24 - 1; > - > - if ((ProcessorInfoBuffer == NULL) || (ProcessorNumber != 0)) { > - return EFI_INVALID_PARAMETER; > - } > - > - ProcessorInfoBuffer->ProcessorId = 0; > - ProcessorInfoBuffer->StatusFlag = PROCESSOR_AS_BSP_BIT | > PROCESSOR_ENABLED_BIT; > - ZeroMem (&ProcessorInfoBuffer->Location, sizeof > (EFI_CPU_PHYSICAL_LOCATION)); > - > - if ((OriginalProcessorNumber & CPU_V2_EXTENDED_TOPOLOGY) != 0) { > - ZeroMem (&ProcessorInfoBuffer->ExtendedInformation.Location2, sizeof > (EFI_CPU_PHYSICAL_LOCATION2)); > - } > - > - if (HealthData != NULL) { > - HealthData->Uint32 = 0; > - } > - > - return EFI_SUCCESS; > -} > - > -/** > - Retrieves the number of logical processor in the platform and the number of > - those logical processors that are enabled on this boot. This service may > only > - be called from the BSP. > - > - @param[out] NumberOfProcessors Pointer to the total number of > logical > - processors in the system, > including the BSP > - and disabled APs. > - @param[out] NumberOfEnabledProcessors Pointer to the number of enabled > logical > - processors that exist in system, > including > - the BSP. > - > - @retval EFI_SUCCESS The number of logical processors and > enabled > - logical processors was retrieved. > - @retval EFI_DEVICE_ERROR The calling processor is an AP. > - @retval EFI_INVALID_PARAMETER NumberOfProcessors is NULL and > NumberOfEnabledProcessors > - is NULL. > - @retval EFI_NOT_READY MP Initialize Library is not initialized. > - > -**/ > -EFI_STATUS > -TdxMpInitLibGetNumberOfProcessors ( > - OUT UINTN *NumberOfProcessors, OPTIONAL > - OUT UINTN *NumberOfEnabledProcessors OPTIONAL > - ) > -{ > - ASSERT (NumberOfProcessors != NULL || NumberOfEnabledProcessors != NULL); > - // > - // In current stage only the BSP is workable. So NumberOfProcessors > - // & NumberOfEnableddProcessors are both 1. > - // > - if (NumberOfProcessors != NULL) { > - *NumberOfProcessors = 1; > - } > - > - if (NumberOfEnabledProcessors != NULL) { > - *NumberOfEnabledProcessors = 1; > - } > - > - return EFI_SUCCESS; > -} > diff --git a/UefiCpuPkg/Library/MpInitLib/MpLibTdxNull.c > b/UefiCpuPkg/Library/MpInitLib/MpLibTdxNull.c > deleted file mode 100644 > index b5aaf6df283f..000000000000 > --- a/UefiCpuPkg/Library/MpInitLib/MpLibTdxNull.c > +++ /dev/null > @@ -1,69 +0,0 @@ > -/** @file > - CPU MP Initialize Library common functions (NULL instance) for Td guest. > - > - Copyright (c) 2020 - 2022, Intel Corporation. All rights reserved.<BR> > - > - SPDX-License-Identifier: BSD-2-Clause-Patent > - > -**/ > - > -#include "MpLib.h" > -#include "MpIntelTdx.h" > - > -/** > - Gets detailed MP-related information on the requested processor at the > - instant this call is made. This service may only be called from the BSP. > - > - @param[in] ProcessorNumber The handle number of processor. > - @param[out] ProcessorInfoBuffer A pointer to the buffer where > information for > - the requested processor is deposited. > - @param[out] HealthData Return processor health data. > - > - @retval EFI_SUCCESS Processor information was returned. > - @retval EFI_DEVICE_ERROR The calling processor is an AP. > - @retval EFI_INVALID_PARAMETER ProcessorInfoBuffer is NULL. > - @retval EFI_NOT_FOUND The processor with the handle specified by > - ProcessorNumber does not exist in the > platform. > - @retval EFI_NOT_READY MP Initialize Library is not initialized. > - > -**/ > -EFI_STATUS > -TdxMpInitLibGetProcessorInfo ( > - IN UINTN ProcessorNumber, > - OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer, > - OUT EFI_HEALTH_FLAGS *HealthData OPTIONAL > - ) > -{ > - ASSERT (FALSE); > - return EFI_UNSUPPORTED; > -} > - > -/** > - Retrieves the number of logical processor in the platform and the number of > - those logical processors that are enabled on this boot. This service may > only > - be called from the BSP. > - > - @param[out] NumberOfProcessors Pointer to the total number of > logical > - processors in the system, > including the BSP > - and disabled APs. > - @param[out] NumberOfEnabledProcessors Pointer to the number of enabled > logical > - processors that exist in system, > including > - the BSP. > - > - @retval EFI_SUCCESS The number of logical processors and > enabled > - logical processors was retrieved. > - @retval EFI_DEVICE_ERROR The calling processor is an AP. > - @retval EFI_INVALID_PARAMETER NumberOfProcessors is NULL and > NumberOfEnabledProcessors > - is NULL. > - @retval EFI_NOT_READY MP Initialize Library is not initialized. > - > -**/ > -EFI_STATUS > -TdxMpInitLibGetNumberOfProcessors ( > - OUT UINTN *NumberOfProcessors, OPTIONAL > - OUT UINTN *NumberOfEnabledProcessors OPTIONAL > - ) > -{ > - ASSERT (FALSE); > - return EFI_UNSUPPORTED; > -} > diff --git a/UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf > b/UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf > index 894be0f8daab..5facf4db9499 100644 > --- a/UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf > +++ b/UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf > @@ -24,12 +24,10 @@ > [Sources.IA32] > Ia32/AmdSev.c > Ia32/MpFuncs.nasm > - MpLibTdxNull.c > > [Sources.X64] > X64/AmdSev.c > X64/MpFuncs.nasm > - MpLibTdx.c > > [Sources.common] > AmdSev.c > @@ -38,7 +36,6 @@ > MpLib.c > MpLib.h > Microcode.c > - MpIntelTdx.h > > [Packages] > MdePkg/MdePkg.dec > -- > 2.29.2.windows.2
-=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#89571): https://edk2.groups.io/g/devel/message/89571 Mute This Topic: https://groups.io/mt/90946715/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-