Rename the function to GetNextMpHandOffHob(), add MP_HAND_OFF parameter. When called with NULL pointer return the body of 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..fab2b2d493ca 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 body. + + @param[in] MpHandOff Previous HOB body. 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..16fc7dc066fd 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 body. + + @param[in] MpHandOff Previous HOB body. 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 (#115828): https://edk2.groups.io/g/devel/message/115828 Mute This Topic: https://groups.io/mt/104510907/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-