Rename the MpHandOff parameter to FirstMpHandOff. Add a loop so the function inspects all HOBs present in the system.
Signed-off-by: Gerd Hoffmann <kra...@redhat.com> --- UefiCpuPkg/Library/MpInitLib/MpLib.c | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c index e764bc9e4228..8f198ff6d817 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -1894,26 +1894,33 @@ CheckAllAPs ( /** This function Get BspNumber. - @param[in] MpHandOff Pointer to MpHandOff + @param[in] FirstMpHandOff Pointer to first MpHandOff HOB. @return BspNumber **/ UINT32 GetBspNumber ( - IN CONST MP_HAND_OFF *MpHandOff + IN CONST MP_HAND_OFF *FirstMpHandOff ) { - UINT32 ApicId; - UINT32 BspNumber; - UINT32 Index; + UINT32 ApicId; + UINT32 BspNumber; + UINT32 Index; + CONST MP_HAND_OFF *MpHandOff; // // Get the processor number for the BSP // BspNumber = MAX_UINT32; ApicId = GetInitialApicId (); - for (Index = 0; Index < MpHandOff->CpuCount; Index++) { - if (MpHandOff->Info[Index].ApicId == ApicId) { - BspNumber = Index; + + for (MpHandOff = FirstMpHandOff; + MpHandOff != NULL; + MpHandOff = GetNextMpHandOffHob (MpHandOff)) + { + for (Index = 0; Index < MpHandOff->CpuCount; Index++) { + if (MpHandOff->Info[Index].ApicId == ApicId) { + BspNumber = MpHandOff->ProcessorIndex + Index; + } } } -- 2.43.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#115668): https://edk2.groups.io/g/devel/message/115668 Mute This Topic: https://groups.io/mt/104472310/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-