diff --git a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c index 64768f7a74..4e558e9fee 100644 --- a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c +++ b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c @@ -1,7 +1,7 @@ /** @file CPU Register Table Library functions. - Copyright (c) 2016 - 2019, Intel Corporation. All rights reserved.
+ Copyright (c) 2016 - 2020, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -11,7 +11,6 @@ #include #include #include -#include #include #include "RegisterCpuFeatures.h" @@ -75,10 +74,10 @@ GetMpService ( MP_SERVICES MpService; // - // Get MP Services Protocol + // Get MP Services2 Ppi // Status = PeiServicesLocatePpi ( - &gEfiPeiMpServicesPpiGuid, + &gEdkiiPeiMpServices2PpiGuid, 0, NULL, (VOID **)&MpService.Ppi @@ -100,17 +99,17 @@ GetProcessorIndex ( ) { EFI_STATUS Status; - EFI_PEI_MP_SERVICES_PPI *CpuMpPpi; + EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi; UINTN ProcessorIndex; - CpuMpPpi = CpuFeaturesData->MpService.Ppi; + CpuMp2Ppi = CpuFeaturesData->MpService.Ppi; // // For two reasons which use NULL for WhoAmI: // 1. This function will be called by APs and AP should not use PeiServices Table // 2. Check WhoAmI implementation, this parameter will not be used. // - Status = CpuMpPpi->WhoAmI(NULL, CpuMpPpi, &ProcessorIndex); + Status = CpuMp2Ppi->WhoAmI (CpuMp2Ppi, &ProcessorIndex); ASSERT_EFI_ERROR (Status); return ProcessorIndex; } @@ -131,16 +130,15 @@ GetProcessorInformation ( OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer ) { - EFI_PEI_MP_SERVICES_PPI *CpuMpPpi; + EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi; EFI_STATUS Status; CPU_FEATURES_DATA *CpuFeaturesData; CpuFeaturesData = GetCpuFeaturesData (); - CpuMpPpi = CpuFeaturesData->MpService.Ppi; + CpuMp2Ppi = CpuFeaturesData->MpService.Ppi; - Status = CpuMpPpi->GetProcessorInfo ( - GetPeiServicesTablePointer(), - CpuMpPpi, + Status = CpuMp2Ppi->GetProcessorInfo ( + CpuMp2Ppi, ProcessorNumber, ProcessorInfoBuffer ); @@ -162,18 +160,17 @@ StartupAllAPsWorker ( ) { EFI_STATUS Status; - EFI_PEI_MP_SERVICES_PPI *CpuMpPpi; + EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi; CPU_FEATURES_DATA *CpuFeaturesData; CpuFeaturesData = GetCpuFeaturesData (); - CpuMpPpi = CpuFeaturesData->MpService.Ppi; + CpuMp2Ppi = CpuFeaturesData->MpService.Ppi; // // Wakeup all APs for data collection. // - Status = CpuMpPpi->StartupAllAPs ( - GetPeiServicesTablePointer (), - CpuMpPpi, + Status = CpuMp2Ppi->StartupAllAPs ( + CpuMp2Ppi, Procedure, FALSE, 0, @@ -203,17 +200,7 @@ StartupAllCPUsWorker ( // // Get MP Services2 Ppi // - Status = PeiServicesLocatePpi ( - &gEdkiiPeiMpServices2PpiGuid, - 0, - NULL, - (VOID **)&CpuMp2Ppi - ); - ASSERT_EFI_ERROR (Status); - - // - // Wakeup all APs for data collection. - // + CpuMp2Ppi = CpuFeaturesData->MpService.Ppi; Status = CpuMp2Ppi->StartupAllCPUs ( CpuMp2Ppi, Procedure, @@ -234,18 +221,17 @@ SwitchNewBsp ( ) { EFI_STATUS Status; - EFI_PEI_MP_SERVICES_PPI *CpuMpPpi; + EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi; CPU_FEATURES_DATA *CpuFeaturesData; CpuFeaturesData = GetCpuFeaturesData (); - CpuMpPpi = CpuFeaturesData->MpService.Ppi; + CpuMp2Ppi = CpuFeaturesData->MpService.Ppi; // // Wakeup all APs for data collection. // - Status = CpuMpPpi->SwitchBSP ( - GetPeiServicesTablePointer (), - CpuMpPpi, + Status = CpuMp2Ppi->SwitchBSP ( + CpuMp2Ppi, ProcessorNumber, TRUE ); @@ -269,18 +255,17 @@ GetNumberOfProcessor ( ) { EFI_STATUS Status; - EFI_PEI_MP_SERVICES_PPI *CpuMpPpi; + EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi; CPU_FEATURES_DATA *CpuFeaturesData; CpuFeaturesData = GetCpuFeaturesData (); - CpuMpPpi = CpuFeaturesData->MpService.Ppi; + CpuMp2Ppi = CpuFeaturesData->MpService.Ppi; // // Get the number of CPUs // - Status = CpuMpPpi->GetNumberOfProcessors ( - GetPeiServicesTablePointer (), - CpuMpPpi, + Status = CpuMp2Ppi->GetNumberOfProcessors ( + CpuMp2Ppi, NumberOfCpus, NumberOfEnabledProcessors ); diff --git a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.inf b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.inf index 61f922bf63..196c72eb85 100644 --- a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.inf +++ b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.inf @@ -1,7 +1,7 @@ ## @file # Register CPU Features Library PEI instance. # -# Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.
+# Copyright (c) 2017 - 2020, Intel Corporation. All rights reserved.
# SPDX-License-Identifier: BSD-2-Clause-Patent # ## @@ -45,7 +45,6 @@ IoLib [Ppis] - gEfiPeiMpServicesPpiGuid ## CONSUMES gEdkiiPeiMpServices2PpiGuid ## CONSUMES [Pcd] @@ -55,4 +54,4 @@ gUefiCpuPkgTokenSpaceGuid.PcdCpuFeaturesSetting ## CONSUMES ## PRODUCES [Depex] - gEfiPeiMpServicesPpiGuid AND gEdkiiCpuFeaturesSetDoneGuid + gEdkiiPeiMpServices2PpiGuid AND gEdkiiCpuFeaturesSetDoneGuid diff --git a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h index 53cb340b4c..e8a4aa644d 100644 --- a/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h +++ b/UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h @@ -10,7 +10,7 @@ #define _REGISTER_CPU_FEATURES_H_ #include #include -#include +#include #include #include @@ -64,8 +64,8 @@ typedef struct { } PROGRAM_CPU_REGISTER_FLAGS; typedef union { - EFI_MP_SERVICES_PROTOCOL *Protocol; - EFI_PEI_MP_SERVICES_PPI *Ppi; + EFI_MP_SERVICES_PROTOCOL *Protocol; + EDKII_PEI_MP_SERVICES2_PPI *Ppi; } MP_SERVICES; typedef struct {