Hi Chasel, On 09/10/20 11:02, Chasel Chiu wrote: > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2883 > > MpServices Ppi can be replaced by MpServices2 Ppi and MpServices2 > Ppi is mandatory for RegisterCpuFeaturesLib functionality, > basing on this we can drop MpServices Ppi usage from the library > and the constraint that both Ppis must be installed. > > Cc: Eric Dong <eric.d...@intel.com> > Cc: Ray Ni <ray...@intel.com> > Cc: Laszlo Ersek <ler...@redhat.com> > Cc: Rahul Kumar <rahul1.ku...@intel.com> > Cc: Nate DeSimone <nathaniel.l.desim...@intel.com> > Signed-off-by: Chasel Chiu <chasel.c...@intel.com> > --- > UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c | 61 > +++++++++++++++++++++++-------------------------------------- > UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h | 6 > +++--- > 2 files changed, 26 insertions(+), 41 deletions(-) > > 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.<BR> > + Copyright (c) 2016 - 2020, Intel Corporation. All rights reserved.<BR> > SPDX-License-Identifier: BSD-2-Clause-Patent > > **/ > @@ -11,7 +11,6 @@ > #include <Library/HobLib.h> > #include <Library/PeiServicesLib.h> > #include <Library/PeiServicesTablePointerLib.h> > -#include <Ppi/MpServices.h> > #include <Ppi/MpServices2.h> > > #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/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 <PiPei.h> > #include <PiDxe.h> > -#include <Ppi/MpServices.h> > +#include <Ppi/MpServices2.h> > #include <Protocol/MpService.h> > > #include <Library/BaseLib.h> > @@ -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 { >
I defer to Eric and Ray on this patch. Thanks Laszlo -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#65172): https://edk2.groups.io/g/devel/message/65172 Mute This Topic: https://groups.io/mt/76751890/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-