StandaloneMmPkg/MmIpl : Check if MM FV HOB was built
Skip MM FV HOB build if MM platform HOB list already has the HOB. Signed-off-by: Hongbin1 Zhang <hongbin1.zhang@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Jiaxin Wu <jiaxin.wu@intel.com> Cc: Wei6 Xu <wei6.xu@intel.com> Cc: Sami Mujawar <sami.mujawar@arm.com> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Supreeth Venkatesh <supreeth.venkatesh@arm.com>
This commit is contained in:
parent
e8ce6c5189
commit
8279e49aae
|
@ -803,6 +803,49 @@ GetRemainingHobSize (
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Check if FV HOB was created.
|
||||
|
||||
Check if FV HOB was created on HOB list,
|
||||
if yes, skip building MM Core FV HOB,
|
||||
if No, continue to build MM Core FV HOB
|
||||
|
||||
@param[in] HobList HOB list.
|
||||
@param[in] HobSize HOB size.
|
||||
|
||||
@retval TRUE Skip building MM Core FV HOB.
|
||||
FALSE Continue to build MM Core FV HOB.
|
||||
**/
|
||||
BOOLEAN
|
||||
IsFvHobExist (
|
||||
IN UINT8 *HobList,
|
||||
IN UINTN HobSize
|
||||
)
|
||||
{
|
||||
EFI_PEI_HOB_POINTERS Hob;
|
||||
UINTN HobLength;
|
||||
|
||||
if ((HobList == NULL) || (HobSize == 0)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Hob.Raw = (UINT8 *)HobList;
|
||||
HobLength = GET_HOB_LENGTH (Hob);
|
||||
//
|
||||
// Parse the HOB list until end of list or matching type is found.
|
||||
//
|
||||
while (HobLength <= HobSize) {
|
||||
if (Hob.Header->HobType == EFI_HOB_TYPE_FV) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
Hob.Raw = GET_NEXT_HOB (Hob);
|
||||
HobLength += GET_HOB_LENGTH (Hob);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
Create the MM foundation specific HOB list which StandaloneMm Core needed.
|
||||
|
||||
|
@ -892,11 +935,16 @@ CreateMmFoundationHobList (
|
|||
UsedSize += HobLength;
|
||||
|
||||
//
|
||||
// BFV address for StandaloneMm Core
|
||||
// Skip to report FV that contains MmCore when Platform reports FV
|
||||
//
|
||||
HobLength = GetRemainingHobSize (*FoundationHobSize, UsedSize);
|
||||
MmIplBuildFvHob (FoundationHobList + UsedSize, &HobLength, MmFvBase, MmFvSize);
|
||||
UsedSize += HobLength;
|
||||
if (!IsFvHobExist (PlatformHobList, PlatformHobSize)) {
|
||||
//
|
||||
// BFV address for StandaloneMm Core
|
||||
//
|
||||
HobLength = GetRemainingHobSize (*FoundationHobSize, UsedSize);
|
||||
MmIplBuildFvHob (FoundationHobList + UsedSize, &HobLength, MmFvBase, MmFvSize);
|
||||
UsedSize += HobLength;
|
||||
}
|
||||
|
||||
//
|
||||
// Build MM ACPI S3 Enable HOB
|
||||
|
|
Loading…
Reference in New Issue