Rename the function to GetNextMpHandOffHob(), add MP_HAND_OFF parameter. When called with NULL pointer return the first HOB, otherwise return the next in the chain.
Also add the function prototype to the MpLib.h header file. Signed-off-by: Gerd Hoffmann <kra...@redhat.com> --- UefiCpuPkg/Library/MpInitLib/MpLib.h | 12 ++++++++++++ UefiCpuPkg/Library/MpInitLib/MpLib.c | 26 ++++++++++++++++---------- 2 files changed, 28 insertions(+), 10 deletions(-) diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.h b/UefiCpuPkg/Library/MpInitLib/MpLib.h index a96a6389c17d..bc2a0232291d 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.h +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.h @@ -485,6 +485,18 @@ SwitchApContext ( IN MP_HAND_OFF *MpHandOff ); +/** + Get pointer to next MP_HAND_OFF GUIDed HOB. + + @param[in] MpHandOff Previous HOB. Pass NULL to get the first HOB. + + @return The pointer to MP_HAND_OFF structure. +**/ +MP_HAND_OFF * +GetNextMpHandOffHob ( + IN CONST MP_HAND_OFF *MpHandOff + ); + /** Get available EfiBootServicesCode memory below 4GB by specified size. diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.c b/UefiCpuPkg/Library/MpInitLib/MpLib.c index cdfb570e61a0..e764bc9e4228 100644 --- a/UefiCpuPkg/Library/MpInitLib/MpLib.c +++ b/UefiCpuPkg/Library/MpInitLib/MpLib.c @@ -1961,25 +1961,31 @@ SwitchApContext ( } /** - Get pointer to MP_HAND_OFF GUIDed HOB. + Get pointer to next MP_HAND_OFF GUIDed HOB. + + @param[in] MpHandOff Previous HOB. Pass NULL to get the first HOB. @return The pointer to MP_HAND_OFF structure. **/ MP_HAND_OFF * -GetMpHandOffHob ( - VOID +GetNextMpHandOffHob ( + IN CONST MP_HAND_OFF *MpHandOff ) { EFI_HOB_GUID_TYPE *GuidHob; - MP_HAND_OFF *MpHandOff; - MpHandOff = NULL; - GuidHob = GetFirstGuidHob (&mMpHandOffGuid); - if (GuidHob != NULL) { - MpHandOff = (MP_HAND_OFF *)GET_GUID_HOB_DATA (GuidHob); + if (MpHandOff == NULL) { + GuidHob = GetFirstGuidHob (&mMpHandOffGuid); + } else { + GuidHob = (VOID *)(((UINT8 *)MpHandOff) - sizeof (EFI_HOB_GUID_TYPE)); + GuidHob = GetNextGuidHob (&mMpHandOffGuid, GET_NEXT_HOB (GuidHob)); } - return MpHandOff; + if (GuidHob == NULL) { + return NULL; + } + + return (MP_HAND_OFF *)GET_GUID_HOB_DATA (GuidHob); } /** @@ -2020,7 +2026,7 @@ MpInitLibInitialize ( UINTN BackupBufferAddr; UINTN ApIdtBase; - MpHandOff = GetMpHandOffHob (); + MpHandOff = GetNextMpHandOffHob (NULL); if (MpHandOff == NULL) { MaxLogicalProcessorNumber = PcdGet32 (PcdCpuMaxLogicalProcessorNumber); } else { -- 2.43.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#115667): https://edk2.groups.io/g/devel/message/115667 Mute This Topic: https://groups.io/mt/104472308/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-