0c79471 OvmfPkg/PlatformPei: handle non-power-of-two spare size for emu variables

Authored and Committed by lersek 7 years ago
    OvmfPkg/PlatformPei: handle non-power-of-two spare size for emu variables
    
    In commit b24fca05751f ("OvmfPkg: introduce 4MB flash image (mainly) for
    Windows HCK", 2017-04-29), I changed PcdFlashNvStorageFtwSpareSize to
    264KB, in the then-new default 4MB build.
    
    While PcdFlashNvStorageFtwSpareSize remains exactly half of the entire
    non-volatile store (which is 528KB), 264KB isn't itself a power of two.
    This triggers an assertion failure in AllocateAlignedRuntimePages() when
    PlatformPei calls it from the ReserveEmuVariableNvStore() function,
    passing PcdFlashNvStorageFtwSpareSize as the Alignment parameter:
    
    > ASSERT MdePkg/Library/PeiMemoryAllocationLib/MemoryAllocationLib.c(196):
    > (Alignment & (Alignment - 1)) == 0
    
    Round up the alignment to the next power of two if necessary.
    
    Fixes: b24fca05751f8222acf264853709012e0ab7bf49
    Contributed-under: TianoCore Contribution Agreement 1.0
    Signed-off-by: Laszlo Ersek <lersek@redhat.com>
    Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>