mirror of https://github.com/acidanthera/audk.git
ArmVirtualizationPkg: add padding to FDT allocation
Our primary user QEMU/mach-virt presents us with a FDT blob padded to 64 KB with plenty of room to set additional properties. However, in the general case, we should only add properties after making sure there is enough room available. Contributed-under: TianoCore Contribution Agreement 1.0 Reviewed-by: Laszlo Ersek <lersek@redhat.com> Reviewed-by: Olivier Martin <olivier.martin@arm.com> Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Signed-off-by: Laszlo Ersek <lersek@redhat.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16960 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
cc667df08a
commit
616ea9daea
|
@ -43,6 +43,12 @@
|
|||
#
|
||||
gArmVirtualizationTokenSpaceGuid.PcdDeviceTreeInitialBaseAddress|0x0|UINT64|0x00000001
|
||||
|
||||
#
|
||||
# Padding in bytes to add to the device tree allocation, so that the DTB can
|
||||
# be modified in place (default: 256 bytes)
|
||||
#
|
||||
gArmVirtualizationTokenSpaceGuid.PcdDeviceTreeAllocationPadding|256|UINT32|0x00000002
|
||||
|
||||
[PcdsDynamic, PcdsFixedAtBuild]
|
||||
#
|
||||
# ARM PSCI function invocations can be done either through hypervisor
|
||||
|
|
|
@ -33,6 +33,7 @@ PlatformPeim (
|
|||
VOID *Base;
|
||||
VOID *NewBase;
|
||||
UINTN FdtSize;
|
||||
UINTN FdtPages;
|
||||
UINT64 *FdtHobData;
|
||||
UINT64 *UartHobData;
|
||||
INT32 Node, Prev;
|
||||
|
@ -47,10 +48,11 @@ PlatformPeim (
|
|||
ASSERT (Base != NULL);
|
||||
ASSERT (fdt_check_header (Base) == 0);
|
||||
|
||||
FdtSize = fdt_totalsize (Base);
|
||||
NewBase = AllocatePages (EFI_SIZE_TO_PAGES (FdtSize));
|
||||
FdtSize = fdt_totalsize (Base) + PcdGet32 (PcdDeviceTreeAllocationPadding);
|
||||
FdtPages = EFI_SIZE_TO_PAGES (FdtSize);
|
||||
NewBase = AllocatePages (FdtPages);
|
||||
ASSERT (NewBase != NULL);
|
||||
CopyMem (NewBase, Base, FdtSize);
|
||||
fdt_open_into (Base, NewBase, EFI_PAGES_TO_SIZE (FdtPages));
|
||||
|
||||
FdtHobData = BuildGuidHob (&gFdtHobGuid, sizeof *FdtHobData);
|
||||
ASSERT (FdtHobData != NULL);
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
gArmTokenSpaceGuid.PcdFvBaseAddress
|
||||
gArmTokenSpaceGuid.PcdFvSize
|
||||
gArmVirtualizationTokenSpaceGuid.PcdDeviceTreeInitialBaseAddress
|
||||
gArmVirtualizationTokenSpaceGuid.PcdDeviceTreeAllocationPadding
|
||||
|
||||
[Guids]
|
||||
gEarlyPL011BaseAddressGuid
|
||||
|
|
Loading…
Reference in New Issue