/** @file\r
Definitions to install Multiple Processor PPI.\r
\r
- Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR>\r
- This program and the accompanying materials\r
- are licensed and made available under the terms and conditions of the BSD License\r
- which accompanies this distribution. The full text of the license may be found at\r
- http://opensource.org/licenses/bsd-license.php\r
-\r
- THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+ Copyright (c) 2015 - 2021, Intel Corporation. All rights reserved.<BR>\r
+ SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
\r
#include <Ppi/SecPlatformInformation.h>\r
#include <Ppi/SecPlatformInformation2.h>\r
#include <Ppi/EndOfPeiPhase.h>\r
+#include <Ppi/MpServices2.h>\r
\r
#include <Library/BaseLib.h>\r
#include <Library/DebugLib.h>\r
#include <Library/CpuExceptionHandlerLib.h>\r
#include <Library/MpInitLib.h>\r
#include <Library/BaseMemoryLib.h>\r
+#include <Library/MemoryAllocationLib.h>\r
\r
-extern EFI_PEI_PPI_DESCRIPTOR mPeiCpuMpPpiDesc;\r
+extern EFI_PEI_PPI_DESCRIPTOR mPeiCpuMpPpiDesc;\r
\r
/**\r
This service retrieves the number of logical processor in the platform\r
EFI_STATUS\r
EFIAPI\r
PeiGetNumberOfProcessors (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_MP_SERVICES_PPI *This,\r
- OUT UINTN *NumberOfProcessors,\r
- OUT UINTN *NumberOfEnabledProcessors\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_MP_SERVICES_PPI *This,\r
+ OUT UINTN *NumberOfProcessors,\r
+ OUT UINTN *NumberOfEnabledProcessors\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
PeiStartupAllAPs (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_MP_SERVICES_PPI *This,\r
- IN EFI_AP_PROCEDURE Procedure,\r
- IN BOOLEAN SingleThread,\r
- IN UINTN TimeoutInMicroSeconds,\r
- IN VOID *ProcedureArgument OPTIONAL\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_MP_SERVICES_PPI *This,\r
+ IN EFI_AP_PROCEDURE Procedure,\r
+ IN BOOLEAN SingleThread,\r
+ IN UINTN TimeoutInMicroSeconds,\r
+ IN VOID *ProcedureArgument OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
PeiStartupThisAP (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_MP_SERVICES_PPI *This,\r
- IN EFI_AP_PROCEDURE Procedure,\r
- IN UINTN ProcessorNumber,\r
- IN UINTN TimeoutInMicroseconds,\r
- IN VOID *ProcedureArgument OPTIONAL\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_MP_SERVICES_PPI *This,\r
+ IN EFI_AP_PROCEDURE Procedure,\r
+ IN UINTN ProcessorNumber,\r
+ IN UINTN TimeoutInMicroseconds,\r
+ IN VOID *ProcedureArgument OPTIONAL\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
PeiEnableDisableAP (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_MP_SERVICES_PPI *This,\r
- IN UINTN ProcessorNumber,\r
- IN BOOLEAN EnableAP,\r
- IN UINT32 *HealthFlag OPTIONAL\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_MP_SERVICES_PPI *This,\r
+ IN UINTN ProcessorNumber,\r
+ IN BOOLEAN EnableAP,\r
+ IN UINT32 *HealthFlag OPTIONAL\r
);\r
\r
/**\r
**/\r
VOID\r
CollectBistDataFromPpi (\r
- IN CONST EFI_PEI_SERVICES **PeiServices\r
+ IN CONST EFI_PEI_SERVICES **PeiServices\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
SecPlatformInformation2 (\r
- IN CONST EFI_PEI_SERVICES **PeiServices,\r
- IN OUT UINT64 *StructureSize,\r
- OUT EFI_SEC_PLATFORM_INFORMATION_RECORD2 *PlatformInformationRecord2\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
+ IN OUT UINT64 *StructureSize,\r
+ OUT EFI_SEC_PLATFORM_INFORMATION_RECORD2 *PlatformInformationRecord2\r
+ );\r
+\r
+/**\r
+ Migrates the Global Descriptor Table (GDT) to permanent memory.\r
+\r
+ @retval EFI_SUCCESS The GDT was migrated successfully.\r
+ @retval EFI_OUT_OF_RESOURCES The GDT could not be migrated due to lack of available memory.\r
+\r
+**/\r
+EFI_STATUS\r
+MigrateGdt (\r
+ VOID\r
);\r
\r
/**\r
**/\r
EFI_STATUS\r
InitializeCpuMpWorker (\r
- IN CONST EFI_PEI_SERVICES **PeiServices\r
+ IN CONST EFI_PEI_SERVICES **PeiServices\r
);\r
\r
/**\r
- Enabl/setup stack guard for each processor if PcdCpuStackGuard is set to TRUE.\r
+ Enable/setup stack guard for each processor if PcdCpuStackGuard is set to TRUE.\r
\r
Doing this in the memory-discovered callback is to make sure the Stack Guard\r
feature to cover as most PEI code as possible.\r