UefiCpuPkg/PiSmmCpuDxeSmm: Impl IsSmmCommBufferForbiddenAddress for MM
Since all accessible NON-MMRAM memory shall be in ResourceDescriptor HOBs, check the ResourceDescriptor HOBs to return if the Address is forbidden or not for MM CPU. Signed-off-by: Jiaxin Wu <jiaxin.wu@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Star Zeng <star.zeng@intel.com> Cc: Dun Tan <dun.tan@intel.com> Cc: Hongbin1 Zhang <hongbin1.zhang@intel.com> Cc: Wei6 Xu <wei6.xu@intel.com> Cc: Yuanhao Xie <yuanhao.xie@intel.com>
This commit is contained in:
parent
9ee5334796
commit
167e902624
|
@ -46,6 +46,34 @@ GetSmmProfileData (
|
|||
return SmmProfileDataHob.MemoryAllocation->AllocDescriptor.MemoryBaseAddress;
|
||||
}
|
||||
|
||||
/**
|
||||
Return if the Address is forbidden as SMM communication buffer.
|
||||
|
||||
@param[in] Address the address to be checked
|
||||
|
||||
@return TRUE The address is forbidden as SMM communication buffer.
|
||||
@return FALSE The address is allowed as SMM communication buffer.
|
||||
**/
|
||||
BOOLEAN
|
||||
IsSmmCommBufferForbiddenAddress (
|
||||
IN UINT64 Address
|
||||
)
|
||||
{
|
||||
EFI_PEI_HOB_POINTERS Hob;
|
||||
|
||||
Hob.Raw = GetFirstHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR);
|
||||
while (Hob.Raw != NULL) {
|
||||
if ((Address >= Hob.ResourceDescriptor->PhysicalStart) && (Address < Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength)) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
Hob.Raw = GET_NEXT_HOB (Hob);
|
||||
Hob.Raw = GetNextHob (EFI_HOB_TYPE_RESOURCE_DESCRIPTOR, Hob.Raw);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
Build Memory Region from ResourceDescriptor HOBs by excluding Logging attribute range.
|
||||
|
||||
|
|
Loading…
Reference in New Issue