summaryrefslogtreecommitdiffstats
path: root/ArmVirtPkg/ArmVirtQemu.dsc
diff options
context:
space:
mode:
authorArd Biesheuvel <ard.biesheuvel@linaro.org>2016-02-18 09:59:09 +0100
committerArd Biesheuvel <ard.biesheuvel@linaro.org>2016-02-18 12:00:10 +0100
commitca6d61b22658e6d13b4a73589f5e5df0b0e7ba03 (patch)
treeb0cc40c73596e1af21d18c01616bc18c151d6033 /ArmVirtPkg/ArmVirtQemu.dsc
parent9eec4d38c027e9eb95c545875a1f847f0cb3dcbf (diff)
downloadedk2-ca6d61b22658e6d13b4a73589f5e5df0b0e7ba03.tar.gz
edk2-ca6d61b22658e6d13b4a73589f5e5df0b0e7ba03.tar.bz2
edk2-ca6d61b22658e6d13b4a73589f5e5df0b0e7ba03.zip
ArmVirtPkg: ArmVirtQemu: expose only 64-bit entry point for v3.0+ SMBIOS
The legacy 32-bit SMBIOS entry point has little use on AARCH64 systems, since many such systems have no 32-bit addressable physical RAM, and so OSes that implement SMBIOS will have to be able to deal with the 64-bit entry point anyway. Given that the OS will map main memory in 1 GB chunks if it can, and that punching a page sized hole (e.g., for SMBIOS data) into it will result in the whole 1 GB chunk being mapped using 2 MB and 4 KB blocks instead, it is important to group memory reservations from the OS as much as we can, and allocating below 4 GB for no good reason interferes with that. This is especially important under virtualization, considering that each *level* of lookup at stage 1 (the guest virtual page table) will result in a full page table walk at stage 2 (the guest PA to host PA mapping). So expose only the 64-bit entry point when the SMBIOS tables adhere to version 3.0 or later. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheuvel@linaro.org> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Diffstat (limited to 'ArmVirtPkg/ArmVirtQemu.dsc')
-rw-r--r--ArmVirtPkg/ArmVirtQemu.dsc8
1 files changed, 8 insertions, 0 deletions
diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc
index e6440ec5da..e2641fd2c2 100644
--- a/ArmVirtPkg/ArmVirtQemu.dsc
+++ b/ArmVirtPkg/ArmVirtQemu.dsc
@@ -169,6 +169,14 @@
# support anything bigger, even if the host hardware does
gEmbeddedTokenSpaceGuid.PcdPrePiCpuMemorySize|40
+ # Clearing BIT0 in this PCD prevents installing a 32-bit SMBIOS entry point,
+ # if the entry point version is >= 3.0. AARCH64 OSes cannot assume the
+ # presence of the 32-bit entry point anyway (because many AARCH64 systems
+ # don't have 32-bit addressable physical RAM), and the additional allocations
+ # below 4 GB needlessly fragment the memory map. So expose the 64-bit entry
+ # point only, for entry point versions >= 3.0.
+ gEfiMdeModulePkgTokenSpaceGuid.PcdSmbiosEntryPointProvideMethod|0x2
+
[PcdsDynamicDefault.common]
## If TRUE, OvmfPkg/AcpiPlatformDxe will not wait for PCI
# enumeration to complete before installing ACPI tables.