28 return &mCpuFeaturesData;
47 Status =
gBS->LocateProtocol (
48 &gEfiMpServiceProtocolGuid,
50 (VOID **)&MpService.Protocol
73 MpServices = CpuFeaturesData->MpService.Protocol;
74 Status = MpServices->WhoAmI (MpServices, &ProcessorIndex);
76 return ProcessorIndex;
100 MpServices = CpuFeaturesData->MpService.Protocol;
102 Status = MpServices->GetProcessorInfo (
129 MpServices = CpuFeaturesData->MpService.Protocol;
134 Status = MpServices->StartupAllAPs (
161 MpServices = CpuFeaturesData->MpService.Protocol;
166 Status = MpServices->SwitchBSP (
187 OUT UINTN *NumberOfEnabledProcessors
195 MpServices = CpuFeaturesData->MpService.Protocol;
200 Status = MpServices->GetNumberOfProcessors (
203 NumberOfEnabledProcessors
230 CpuFeaturesData->BspNumber = OldBspNumber;
238 if (CpuFeaturesData->NumberOfCpus > 1) {
239 Status =
gBS->CreateEvent (
259 if (CpuFeaturesData->NumberOfCpus > 1) {
264 Status =
gBS->CheckEvent (MpEvent);
265 }
while (Status == EFI_NOT_READY);
273 if (CpuFeaturesData->BspNumber != OldBspNumber) {
VOID EFIAPI SetProcessorRegister(IN OUT VOID *Buffer)
UINTN GetProcessorIndex(IN CPU_FEATURES_DATA *CpuFeaturesData)
CPU_FEATURES_DATA * GetCpuFeaturesData(VOID)
VOID SwitchNewBsp(IN UINTN ProcessorNumber)
VOID GetNumberOfProcessor(OUT UINTN *NumberOfCpus, OUT UINTN *NumberOfEnabledProcessors)
EFI_STATUS GetProcessorInformation(IN UINTN ProcessorNumber, OUT EFI_PROCESSOR_INFORMATION *ProcessorInfoBuffer)
VOID EFIAPI CpuFeaturesInitialize(VOID)
VOID StartupAllAPsWorker(IN EFI_AP_PROCEDURE Procedure, IN EFI_EVENT MpEvent)
MP_SERVICES GetMpService(VOID)
#define ASSERT_EFI_ERROR(StatusParameter)
#define CPU_V2_EXTENDED_TOPOLOGY
VOID(EFIAPI * EFI_AP_PROCEDURE)(IN OUT VOID *Buffer)
VOID EFIAPI EfiEventEmptyFunction(IN EFI_EVENT Event, IN VOID *Context)