diff --git a/UefiCpuPkg/CpuDxe/CpuMp.c b/UefiCpuPkg/CpuDxe/CpuMp.c index 2bc9f70bbb..f864de1f6f 100644 --- a/UefiCpuPkg/CpuDxe/CpuMp.c +++ b/UefiCpuPkg/CpuDxe/CpuMp.c @@ -20,6 +20,7 @@ UINTN gApStackSize; UINTN gPollInterval = 100; // 100 microseconds MP_SYSTEM_DATA mMpSystemData; +EFI_HANDLE mMpServiceHandle = NULL; VOID *mCommonStack = 0; VOID *mTopOfApCommonStack = 0; @@ -1472,6 +1473,8 @@ InitializeMpSupport ( VOID ) { + EFI_STATUS Status; + gMaxLogicalProcessorNumber = (UINTN) PcdGet32 (PcdCpuMaxLogicalProcessorNumber); if (gMaxLogicalProcessorNumber < 1) { DEBUG ((DEBUG_ERROR, "Setting PcdCpuMaxLogicalProcessorNumber should be more than zero.\n")); @@ -1516,6 +1519,13 @@ InitializeMpSupport ( mAPsAlreadyInitFinished = TRUE; + Status = gBS->InstallMultipleProtocolInterfaces ( + &mMpServiceHandle, + &gEfiMpServiceProtocolGuid, &mMpServicesTemplate, + NULL + ); + ASSERT_EFI_ERROR (Status); + if (mMpSystemData.NumberOfProcessors < gMaxLogicalProcessorNumber) { FreePages (mApStackStart, EFI_SIZE_TO_PAGES ( (gMaxLogicalProcessorNumber - mMpSystemData.NumberOfProcessors) *