On 2/15/24 10:31, Gerd Hoffmann wrote: > This allows to specify which HOB should be returned in case multiple > MP_HAND_OFF HOBs are present in the system. > > 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 | 20 +++++++++++++------- > 2 files changed, 25 insertions(+), 7 deletions(-) > > diff --git a/UefiCpuPkg/Library/MpInitLib/MpLib.h > b/UefiCpuPkg/Library/MpInitLib/MpLib.h > index a96a6389c17d..7e409cceaddf 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 MP_HAND_OFF GUIDed HOB, starting with ProcessorIndex > + > + @param[in] ProcessorIndex. > + > + @return The pointer to MP_HAND_OFF structure. > +**/ > +MP_HAND_OFF * > +GetMpHandOffHob ( > + IN UINT32 ProcessorIndex > + ); > + > /** > 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..e0a2366073a7 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 MP_HAND_OFF GUIDed HOB, starting with ProcessorIndex > + > + @param[in] ProcessorIndex. > > @return The pointer to MP_HAND_OFF structure. > **/ > MP_HAND_OFF * > GetMpHandOffHob ( > - VOID > + IN UINT32 ProcessorIndex > ) > { > EFI_HOB_GUID_TYPE *GuidHob; > MP_HAND_OFF *MpHandOff; > > - MpHandOff = NULL; > - GuidHob = GetFirstGuidHob (&mMpHandOffGuid); > - if (GuidHob != NULL) { > + for (GuidHob = GetFirstGuidHob (&mMpHandOffGuid); > + GuidHob != NULL; > + GuidHob = GetNextGuidHob (&mMpHandOffGuid, GET_NEXT_HOB (GuidHob))) > + { > MpHandOff = (MP_HAND_OFF *)GET_GUID_HOB_DATA (GuidHob); > + if (MpHandOff->ProcessorIndex == ProcessorIndex) { > + return MpHandOff; > + } > } > > - return MpHandOff; > + return NULL; > } > > /** > @@ -2020,7 +2026,7 @@ MpInitLibInitialize ( > UINTN BackupBufferAddr; > UINTN ApIdtBase; > > - MpHandOff = GetMpHandOffHob (); > + MpHandOff = GetMpHandOffHob (0); > if (MpHandOff == NULL) { > MaxLogicalProcessorNumber = PcdGet32 (PcdCpuMaxLogicalProcessorNumber); > } else {
Seems to do what it says on the tin; not sure what it's going to be good for, though. Reviewed-by: Laszlo Ersek <ler...@redhat.com> -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#115591): https://edk2.groups.io/g/devel/message/115591 Mute This Topic: https://groups.io/mt/104369841/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-