diff options
author | Olivier Martin <olivier.martin@arm.com> | 2014-12-12 19:15:37 +0000 |
---|---|---|
committer | oliviermartin <oliviermartin@Edk2> | 2014-12-12 19:15:37 +0000 |
commit | 85774874bcd13dba0ed8886ab5eb36b1ccdc44c1 (patch) | |
tree | f742a0a76ff163a882eaf0682bf9f133b6959779 /ArmPkg | |
parent | 061568e2d5f21aeafa942891b15768c57fa0ffac (diff) | |
download | edk2-85774874bcd13dba0ed8886ab5eb36b1ccdc44c1.tar.gz edk2-85774874bcd13dba0ed8886ab5eb36b1ccdc44c1.tar.bz2 edk2-85774874bcd13dba0ed8886ab5eb36b1ccdc44c1.zip |
ArmPkg/BdsLib: Update the size of the Device Tree before booting Linux
The memory reserved to load the device tree is over-allocated when
UEFI loads the blob to update the device tree with additional
information such as the command line, the initrd, etc.
This change ensures the total size declared by the device tree matches
the actual data (and not the over-allocated size value).
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Olivier Martin <olivier.martin@arm.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16517 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPkg')
-rw-r--r-- | ArmPkg/Library/BdsLib/BdsLinuxFdt.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/ArmPkg/Library/BdsLib/BdsLinuxFdt.c b/ArmPkg/Library/BdsLib/BdsLinuxFdt.c index fb7bd5646e..e3795527f2 100644 --- a/ArmPkg/Library/BdsLib/BdsLinuxFdt.c +++ b/ArmPkg/Library/BdsLib/BdsLinuxFdt.c @@ -554,6 +554,9 @@ PrepareFdt ( // If we succeeded to generate the new Device Tree then free the old Device Tree
gBS->FreePages (*FdtBlobBase, EFI_SIZE_TO_PAGES (*FdtBlobSize));
+ // Update the real size of the Device Tree
+ fdt_pack ((VOID*)(UINTN)(NewFdtBlobBase));
+
*FdtBlobBase = NewFdtBlobBase;
*FdtBlobSize = (UINTN)fdt_totalsize ((VOID*)(UINTN)(NewFdtBlobBase));
return EFI_SUCCESS;
|