mirror of https://github.com/acidanthera/audk.git
UefiCpuPkg/MpInitLib: Add support for multiple HOBs to GetMpHandOffHob
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 <kraxel@redhat.com> Message-Id: <20240222160106.686484-2-kraxel@redhat.com> Reviewed-by: Ray Ni <ray.ni@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
parent
1f161a7915
commit
a3ee1eea96
|
@ -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 {
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
Loading…
Reference in New Issue