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 (#89563): https://edk2.groups.io/g/devel/message/89563 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] -=-=-=-=-=-=-=-=-=-=-=-