Date
1 - 1 of 1
[Patch v4 05/46] UefiCpuPkg/MpInitLib: Add two instances PeiMpInitLib and DxeMpInitLib
Jeff Fan <jeff.fan@...>
Add two MP Initialize Library instances PeiMpInitLib.inf and DxeMpInitLib.inf
with NULL implementation. One PeiMpInitLib.inf is consumed by PEI MP driver. Another DxeMpInitLib.inf is consumed by DXE MP driver. Place MpInitLibStartupAllAPs()/MpInitLibStartupThisAp()/MpInitLibSwitchBSP()/ MpInitLibEnableDisableAP() into PeiMpLib.c and DxeMpLib.c, because they have the different implementations and will be updated in latter patches. v4: 1. Return EFI_UNSUPPORTED instead of EFI_SUCCESS for NULL implementation of all Functions. 2. Sync MpInitLibxxx functions header updating described in v4 part of Patch #4. v3: 1. Rename MpInitLibSwitchBsp to MpInitLibSwitchBSP to match PI spec Cc: Michael Kinney <michael.d.kinney@...> Cc: Feng Tian <feng.tian@...> Cc: Giri P Mudusuru <giri.p.mudusuru@...> Cc: Laszlo Ersek <lersek@...> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jeff Fan <jeff.fan@...> Reviewed-by: Giri P Mudusuru <giri.p.mudusuru@...> --- UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf | 61 ++++++++++ .../Library/MpInitLib/DxeMpInitLib.uni | 12 +- .../MpInitLib.h => Library/MpInitLib/DxeMpLib.c} | 123 +++------------------ UefiCpuPkg/Library/MpInitLib/MpLib.c | 119 ++++++++++++++++++++ UefiCpuPkg/Library/MpInitLib/MpLib.h | 40 +++++++ .../MpInitLib/PeiMpInitLib.inf} | 65 +++-------- .../Library/MpInitLib/PeiMpInitLib.uni | 12 +- .../MpInitLib.h => Library/MpInitLib/PeiMpLib.c} | 123 ++++----------------- UefiCpuPkg/UefiCpuPkg.dsc | 3 +- 9 files changed, 291 insertions(+), 267 deletions(-) create mode 100644 UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf copy MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferExtraDxe.uni => UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.uni (60%) copy UefiCpuPkg/{Include/Library/MpInitLib.h => Library/MpInitLib/DxeMpLib.c} (78%) create mode 100644 UefiCpuPkg/Library/MpInitLib/MpLib.c create mode 100644 UefiCpuPkg/Library/MpInitLib/MpLib.h copy UefiCpuPkg/{CpuMpPei/CpuMpPei.inf => Library/MpInitLib/PeiMpInitLib.inf} (54%) copy MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferExtraDxe.uni => UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.uni (60%) copy UefiCpuPkg/{Include/Library/MpInitLib.h => Library/MpInitLib/PeiMpLib.c} (78%) diff --git a/UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf b/UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf new file mode 100644 index 0000000..1f131c0 --- /dev/null +++ b/UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf @@ -0,0 +1,61 @@ +## @file +# MP Initialize Library instance for DXE driver. +# +# Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> +# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = DxeMpInitLib + MODULE_UNI_FILE = DxeMpInitLib.uni + FILE_GUID = B88F7146-9834-4c55-BFAC-481CC0C33736 + MODULE_TYPE = DXE_DRIVER + VERSION_STRING = 1.1 + LIBRARY_CLASS = MpInitLib|DXE_DRIVER + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources.common] + DxeMpLib.c + MpLib.c + MpLib.h + +[Packages] + MdePkg/MdePkg.dec + UefiCpuPkg/UefiCpuPkg.dec + +[LibraryClasses] + BaseLib + LocalApicLib + MemoryAllocationLib + HobLib + MtrrLib + CpuLib + UefiCpuLib + UefiBootServicesTableLib + HobLib + +[Guids] + gEfiEventExitBootServicesGuid ## CONSUMES ## Event + +[Pcd] + gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber ## CONSUMES + gUefiCpuPkgTokenSpaceGuid.PcdCpuApInitTimeOutInMicroSeconds ## SOMETIMES_CONSUMES + gUefiCpuPkgTokenSpaceGuid.PcdCpuApStackSize ## CONSUMES + gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchAddress ## CONSUMES + gUefiCpuPkgTokenSpaceGuid.PcdCpuMicrocodePatchRegionSize ## CONSUMES + gUefiCpuPkgTokenSpaceGuid.PcdCpuApLoopMode ## CONSUMES + gUefiCpuPkgTokenSpaceGuid.PcdCpuApTargetCstate ## SOMETIMES_CONSUMES + diff --git a/MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferExtraDxe.uni b/UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.uni similarity index 60% copy from MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferExtraDxe.uni copy to UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.uni index 14b3a69..99d7997 100644 --- a/MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferExtraDxe.uni +++ b/UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.uni @@ -1,5 +1,7 @@ // /** @file -// SmmCommunicationBuffer Localized Strings and Content +// MP Initialize Library instance for DXE driver. +// +// MP Initialize Library instance for DXE driver. // // Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> // @@ -13,6 +15,8 @@ // // **/ -#string STR_PROPERTIES_MODULE_NAME -#language en-US -"SMM Communication Buffer DXE Driver" + +#string STR_MODULE_ABSTRACT #language en-US "MP Initialize Library instance for DXE driver." + +#string STR_MODULE_DESCRIPTION #language en-US "MP Initialize Library instance for DXE driver." + diff --git a/UefiCpuPkg/Include/Library/MpInitLib.h b/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c similarity index 78% copy from UefiCpuPkg/Include/Library/MpInitLib.h copy to UefiCpuPkg/Library/MpInitLib/DxeMpLib.c index 3e19382..46a48a4 100644 --- a/UefiCpuPkg/Include/Library/MpInitLib.h +++ b/UefiCpuPkg/Library/MpInitLib/DxeMpLib.c @@ -1,5 +1,5 @@ /** @file - Multiple-Processor initialization Library. + MP initialize support functions for DXE phase. Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> This program and the accompanying materials @@ -12,82 +12,7 @@ **/ -#ifndef __MP_INIT_LIB_H__ -#define __MP_INIT_LIB_H__ - -#include <Ppi/SecPlatformInformation.h> -#include <Protocol/MpService.h> - -/** - MP Initialize Library initialization. - - This service will allocate AP reset vector and wakeup all APs to do APs - initialization. - - This service must be invoked before all other MP Initialize Library - service are invoked. - - @retval EFI_SUCCESS MP initialization succeeds. - @retval Others MP initialization fails. - -**/ -EFI_STATUS -EFIAPI -MpInitLibInitialize ( - VOID - ); - -/** - 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 -EFIAPI -MpInitLibGetNumberOfProcessors ( - OUT UINTN *NumberOfProcessors, OPTIONAL - OUT UINTN *NumberOfEnabledProcessors OPTIONAL - ); - -/** - 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 -EFIAPI -MpInitLibGetProcessorInfo ( - IN UINTN ProcessorNumber, - OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer, - OUT EFI_HEALTH_FLAGS *HealthData OPTIONAL - ); +#include "MpLib.h" /** This service executes a caller provided function on all enabled APs. @@ -173,7 +98,10 @@ MpInitLibStartupAllAPs ( IN UINTN TimeoutInMicroseconds, IN VOID *ProcedureArgument OPTIONAL, OUT UINTN **FailedCpuList OPTIONAL - ); + ) +{ + return EFI_UNSUPPORTED; +} /** This service lets the caller get one enabled AP to execute a caller-provided @@ -255,7 +183,10 @@ MpInitLibStartupThisAP ( IN UINTN TimeoutInMicroseconds, IN VOID *ProcedureArgument OPTIONAL, OUT BOOLEAN *Finished OPTIONAL - ); + ) +{ + return EFI_UNSUPPORTED; +} /** This service switches the requested AP to be the BSP from that point onward. @@ -288,7 +219,10 @@ EFIAPI MpInitLibSwitchBSP ( IN UINTN ProcessorNumber, IN BOOLEAN EnableOldBSP - ); + ) +{ + return EFI_UNSUPPORTED; +} /** This service lets the caller enable or disable an AP from this point onward. @@ -326,28 +260,7 @@ MpInitLibEnableDisableAP ( IN UINTN ProcessorNumber, IN BOOLEAN EnableAP, IN UINT32 *HealthFlag OPTIONAL - ); - -/** - This return the handle number for the calling processor. This service may be - called from the BSP and APs. - - @param[out] ProcessorNumber Pointer to the handle number of AP. - The range is from 0 to the total number of - logical processors minus 1. The total number of - logical processors can be retrieved by - MpInitLibGetNumberOfProcessors(). - - @retval EFI_SUCCESS The current processor handle number was returned - in ProcessorNumber. - @retval EFI_INVALID_PARAMETER ProcessorNumber is NULL. - @retval EFI_NOT_READY MP Initialize Library is not initialized. - -**/ -EFI_STATUS -EFIAPI -MpInitLibWhoAmI ( - OUT UINTN *ProcessorNumber - ); - -#endif + ) +{ + return EFI_UNSUPPORTED; +} diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c new file mode 100644 index 0000000..12bd04e --- /dev/null +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -0,0 +1,119 @@ +/** @file + CPU MP Initialize Library common functions. + + Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#include "MpLib.h" + + +/** + MP Initialize Library initialization. + + This service will allocate AP reset vector and wakeup all APs to do APs + initialization. + + This service must be invoked before all other MP Initialize Library + service are invoked. + + @retval EFI_SUCCESS MP initialization succeeds. + @retval Others MP initialization fails. + +**/ +EFI_STATUS +EFIAPI +MpInitLibInitialize ( + VOID + ) +{ + return EFI_UNSUPPORTED; +} + +/** + 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 +EFIAPI +MpInitLibGetProcessorInfo ( + IN UINTN ProcessorNumber, + OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer, + OUT EFI_HEALTH_FLAGS *HealthData OPTIONAL + ) +{ + return EFI_UNSUPPORTED; +} +/** + This return the handle number for the calling processor. This service may be + called from the BSP and APs. + + @param[out] ProcessorNumber Pointer to the handle number of AP. + The range is from 0 to the total number of + logical processors minus 1. The total number of + logical processors can be retrieved by + MpInitLibGetNumberOfProcessors(). + + @retval EFI_SUCCESS The current processor handle number was returned + in ProcessorNumber. + @retval EFI_INVALID_PARAMETER ProcessorNumber is NULL. + @retval EFI_NOT_READY MP Initialize Library is not initialized. + +**/ +EFI_STATUS +EFIAPI +MpInitLibWhoAmI ( + OUT UINTN *ProcessorNumber + ) +{ + 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 +EFIAPI +MpInitLibGetNumberOfProcessors ( + OUT UINTN *NumberOfProcessors, OPTIONAL + OUT UINTN *NumberOfEnabledProcessors OPTIONAL + ) +{ + return EFI_UNSUPPORTED; +} diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.h b/UefiCpuPkg/Library/MpInitLib/MpLib.h new file mode 100644 index 0000000..66425d3 --- /dev/null +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.h @@ -0,0 +1,40 @@ +/** @file + Common header file for MP Initialize Library. + + Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> + This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +**/ + +#ifndef _MP_LIB_H_ +#define _MP_LIB_H_ + +#include <PiPei.h> + +#include <Register/Cpuid.h> +#include <Register/Msr.h> +#include <Register/LocalApic.h> +#include <Register/Microcode.h> + +#include <Library/MpInitLib.h> +#include <Library/BaseLib.h> +#include <Library/BaseMemoryLib.h> +#include <Library/MemoryAllocationLib.h> +#include <Library/DebugLib.h> +#include <Library/LocalApicLib.h> +#include <Library/CpuLib.h> +#include <Library/UefiCpuLib.h> +#include <Library/TimerLib.h> +#include <Library/SynchronizationLib.h> +#include <Library/MtrrLib.h> +#include <Library/HobLib.h> + + +#endif + diff --git a/UefiCpuPkg/CpuMpPei/CpuMpPei.inf b/UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf similarity index 54% copy from UefiCpuPkg/CpuMpPei/CpuMpPei.inf copy to UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf index 5f45662..014a248 100644 --- a/UefiCpuPkg/CpuMpPei/CpuMpPei.inf +++ b/UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf @@ -1,7 +1,7 @@ ## @file -# CPU driver installs CPU PI Multi-processor PPI. +# MP Initialize Library instance for PEI driver. # -# Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR> +# Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> # This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at @@ -14,12 +14,12 @@ [Defines] INF_VERSION = 0x00010005 - BASE_NAME = CpuMpPei - MODULE_UNI_FILE = CpuMpPei.uni - FILE_GUID = EDADEB9D-DDBA-48BD-9D22-C1C169C8C5C6 + BASE_NAME = PeiMpInitLib + MODULE_UNI_FILE = PeiMpInitLib.uni + FILE_GUID = B00F6090-7739-4830-B906-E0032D388987 MODULE_TYPE = PEIM - VERSION_STRING = 1.0 - ENTRY_POINT = CpuMpPeimInit + VERSION_STRING = 1.1 + LIBRARY_CLASS = MpInitLib|PEIM # # The following information is for reference only and not required by the build tools. @@ -27,55 +27,28 @@ [Defines] # VALID_ARCHITECTURES = IA32 X64 # -[Sources] - CpuMpPei.h - CpuMpPei.c - CpuBist.c - Microcode.h - Microcode.c - PeiMpServices.h - PeiMpServices.c - -[Sources.IA32] - Ia32/MpEqu.inc - Ia32/MpFuncs.asm - Ia32/MpFuncs.nasm - -[Sources.X64] - X64/MpEqu.inc - X64/MpFuncs.asm - X64/MpFuncs.nasm +[Sources.common] + PeiMpLib.c + MpLib.c + MpLib.h [Packages] MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec UefiCpuPkg/UefiCpuPkg.dec [LibraryClasses] BaseLib - BaseMemoryLib - DebugLib - HobLib LocalApicLib - MtrrLib - PcdLib - PeimEntryPoint + MemoryAllocationLib + HobLib PeiServicesLib - ReportStatusCodeLib - SynchronizationLib - TimerLib - UefiCpuLib + MtrrLib CpuLib - CpuExceptionHandlerLib + UefiCpuLib + SynchronizationLib [Ppis] - gEfiPeiMpServicesPpiGuid ## PRODUCES gEfiEndOfPeiSignalPpiGuid ## NOTIFY - gEfiSecPlatformInformationPpiGuid ## SOMETIMES_CONSUMES - ## SOMETIMES_CONSUMES - ## SOMETIMES_PRODUCES - gEfiSecPlatformInformation2PpiGuid - gEfiVectorHandoffInfoPpiGuid ## SOMETIMES_CONSUMES [Pcd] gUefiCpuPkgTokenSpaceGuid.PcdCpuMaxLogicalProcessorNumber ## CONSUMES @@ -86,9 +59,3 @@ [Pcd] gUefiCpuPkgTokenSpaceGuid.PcdCpuApLoopMode ## CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuApTargetCstate ## SOMETIMES_CONSUMES -[Depex] - gEfiPeiMemoryDiscoveredPpiGuid - -[UserExtensions.TianoCore."ExtraFiles"] - CpuMpPeiExtra.uni - diff --git a/MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferExtraDxe.uni b/UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.uni similarity index 60% copy from MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferExtraDxe.uni copy to UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.uni index 14b3a69..d16f306 100644 --- a/MdeModulePkg/Universal/SmmCommunicationBufferDxe/SmmCommunicationBufferExtraDxe.uni +++ b/UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.uni @@ -1,5 +1,7 @@ // /** @file -// SmmCommunicationBuffer Localized Strings and Content +// MP Initialize Library instance for PEI driver. +// +// MP Initialize Library instance for PEI driver. // // Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> // @@ -13,6 +15,8 @@ // // **/ -#string STR_PROPERTIES_MODULE_NAME -#language en-US -"SMM Communication Buffer DXE Driver" + +#string STR_MODULE_ABSTRACT #language en-US "MP Initialize Library instance for PEI driver." + +#string STR_MODULE_DESCRIPTION #language en-US "MP Initialize Library instance for PEI driver." + diff --git a/UefiCpuPkg/Include/Library/MpInitLib.h b/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c similarity index 78% copy from UefiCpuPkg/Include/Library/MpInitLib.h copy to UefiCpuPkg/Library/MpInitLib/PeiMpLib.c index 3e19382..a7e9fb8 100644 --- a/UefiCpuPkg/Include/Library/MpInitLib.h +++ b/UefiCpuPkg/Library/MpInitLib/PeiMpLib.c @@ -1,5 +1,5 @@ /** @file - Multiple-Processor initialization Library. + MP initialize support functions for PEI phase. Copyright (c) 2016, Intel Corporation. All rights reserved.<BR> This program and the accompanying materials @@ -12,82 +12,7 @@ **/ -#ifndef __MP_INIT_LIB_H__ -#define __MP_INIT_LIB_H__ - -#include <Ppi/SecPlatformInformation.h> -#include <Protocol/MpService.h> - -/** - MP Initialize Library initialization. - - This service will allocate AP reset vector and wakeup all APs to do APs - initialization. - - This service must be invoked before all other MP Initialize Library - service are invoked. - - @retval EFI_SUCCESS MP initialization succeeds. - @retval Others MP initialization fails. - -**/ -EFI_STATUS -EFIAPI -MpInitLibInitialize ( - VOID - ); - -/** - 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 -EFIAPI -MpInitLibGetNumberOfProcessors ( - OUT UINTN *NumberOfProcessors, OPTIONAL - OUT UINTN *NumberOfEnabledProcessors OPTIONAL - ); - -/** - 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 -EFIAPI -MpInitLibGetProcessorInfo ( - IN UINTN ProcessorNumber, - OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer, - OUT EFI_HEALTH_FLAGS *HealthData OPTIONAL - ); +#include "MpLib.h" /** This service executes a caller provided function on all enabled APs. @@ -173,7 +98,10 @@ MpInitLibStartupAllAPs ( IN UINTN TimeoutInMicroseconds, IN VOID *ProcedureArgument OPTIONAL, OUT UINTN **FailedCpuList OPTIONAL - ); + ) +{ + return EFI_UNSUPPORTED; +} /** This service lets the caller get one enabled AP to execute a caller-provided @@ -255,7 +183,10 @@ MpInitLibStartupThisAP ( IN UINTN TimeoutInMicroseconds, IN VOID *ProcedureArgument OPTIONAL, OUT BOOLEAN *Finished OPTIONAL - ); + ) +{ + return EFI_UNSUPPORTED; +} /** This service switches the requested AP to be the BSP from that point onward. @@ -287,8 +218,11 @@ EFI_STATUS EFIAPI MpInitLibSwitchBSP ( IN UINTN ProcessorNumber, - IN BOOLEAN EnableOldBSP - ); + IN BOOLEAN EnableOldBSP + ) +{ + return EFI_UNSUPPORTED; +} /** This service lets the caller enable or disable an AP from this point onward. @@ -326,28 +260,9 @@ MpInitLibEnableDisableAP ( IN UINTN ProcessorNumber, IN BOOLEAN EnableAP, IN UINT32 *HealthFlag OPTIONAL - ); - -/** - This return the handle number for the calling processor. This service may be - called from the BSP and APs. + ) +{ + return EFI_UNSUPPORTED; +} - @param[out] ProcessorNumber Pointer to the handle number of AP. - The range is from 0 to the total number of - logical processors minus 1. The total number of - logical processors can be retrieved by - MpInitLibGetNumberOfProcessors(). - - @retval EFI_SUCCESS The current processor handle number was returned - in ProcessorNumber. - @retval EFI_INVALID_PARAMETER ProcessorNumber is NULL. - @retval EFI_NOT_READY MP Initialize Library is not initialized. - -**/ -EFI_STATUS -EFIAPI -MpInitLibWhoAmI ( - OUT UINTN *ProcessorNumber - ); -#endif diff --git a/UefiCpuPkg/UefiCpuPkg.dsc b/UefiCpuPkg/UefiCpuPkg.dsc index b35f41b..598c797 100644 --- a/UefiCpuPkg/UefiCpuPkg.dsc +++ b/UefiCpuPkg/UefiCpuPkg.dsc @@ -114,7 +114,8 @@ [Components.IA32, Components.X64] UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeCpuExceptionHandlerLib.inf UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuExceptionHandlerLib.inf UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmCpuExceptionHandlerLib.inf - UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuExceptionHandlerLib.inf + UefiCpuPkg/Library/MpInitLib/PeiMpInitLib.inf + UefiCpuPkg/Library/MpInitLib/DxeMpInitLib.inf UefiCpuPkg/Library/MtrrLib/MtrrLib.inf UefiCpuPkg/Library/PlatformSecLibNull/PlatformSecLibNull.inf UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.inf -- 2.7.4.windows.1 |
|