Vlv2TbltDevicePkg/PlatformInitPei: Better SMRAM size alignment
authorMichael Kinney <michael.d.kinney@intel.com>
Fri, 2 Dec 2016 16:40:20 +0000 (08:40 -0800)
committerMichael Kinney <michael.d.kinney@intel.com>
Wed, 7 Dec 2016 16:57:06 +0000 (08:57 -0800)
commitc497dcc8e5a3af7b00a85013ec5fec9ee0b2699d
tree85f0850003e2973b2786e0c3f74542e4cb39e838
parenta42e6d448d1777dd948de699dd7037ea701987b7
Vlv2TbltDevicePkg/PlatformInitPei: Better SMRAM size alignment

https://bugzilla.tianocore.org/show_bug.cgi?id=260

Update workaround to be more generic.

* Search for the largest region between 1MB and 4GB
* Find all adjacent regions to compute total size
* Minimum aligned size if 4KB
* Mark extended region to align size as EFI_ALLOCATED
* If an adjacent EFI_ALLOCATED region is present, then
  increase the size of the adjacent region.
* If adjacent EFI_ALLOCATED region is not present, then
  allocate a new HOB with one extra entry to describe
  the extended region to align the total size.  Preserve
  the last entry in the descriptor list for compatibility.

This is a workaround until the binary module that produces the
gEfiSmmPeiSmramMemoryReserveGuid HOB is updated

Cc: Jiewen Yao <jiewen.yao@intel.com>
Cc: David Wei <david.wei@intel.com>
Cc: Mang Guo <mang.guo@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Michael Kinney <michael.d.kinney@intel.com>
Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Vlv2TbltDevicePkg/PlatformInitPei/PlatformEarlyInit.c