mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-24 06:04:52 +02:00
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.
|
Create the MM foundation specific HOB list which StandaloneMm Core needed.
|
||||||
|
|
||||||
@ -892,11 +935,16 @@ CreateMmFoundationHobList (
|
|||||||
UsedSize += HobLength;
|
UsedSize += HobLength;
|
||||||
|
|
||||||
//
|
//
|
||||||
// BFV address for StandaloneMm Core
|
// Skip to report FV that contains MmCore when Platform reports FV
|
||||||
//
|
//
|
||||||
HobLength = GetRemainingHobSize (*FoundationHobSize, UsedSize);
|
if (!IsFvHobExist (PlatformHobList, PlatformHobSize)) {
|
||||||
MmIplBuildFvHob (FoundationHobList + UsedSize, &HobLength, MmFvBase, MmFvSize);
|
//
|
||||||
UsedSize += HobLength;
|
// BFV address for StandaloneMm Core
|
||||||
|
//
|
||||||
|
HobLength = GetRemainingHobSize (*FoundationHobSize, UsedSize);
|
||||||
|
MmIplBuildFvHob (FoundationHobList + UsedSize, &HobLength, MmFvBase, MmFvSize);
|
||||||
|
UsedSize += HobLength;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Build MM ACPI S3 Enable HOB
|
// Build MM ACPI S3 Enable HOB
|
||||||
|
Loading…
x
Reference in New Issue
Block a user