Branch: refs/heads/master Home: https://github.com/tianocore/edk2 Commit: 2997ae38739756ecba9b0de19e86032ebc689ef9 https://github.com/tianocore/edk2/commit/2997ae38739756ecba9b0de19e86032ebc689ef9 Author: Ard Biesheuvel <a...@kernel.org> Date: 2022-10-26 (Wed, 26 Oct 2022)
Changed paths: M ArmVirtPkg/ArmVirt.dsc.inc Log Message: ----------- ArmVirtPkg: make EFI_LOADER_DATA non-executable When the memory protections were implemented and enabled on ArmVirtQemu 5+ years ago, we had to work around the fact that GRUB at the time expected EFI_LOADER_DATA to be executable, as that is the memory type it allocates when loading its modules. This has been fixed in GRUB in August 2017, so by now, we should be able to tighten this, and remove execute permissions from EFI_LOADER_DATA allocations. Signed-off-by: Ard Biesheuvel <a...@kernel.org> Commit: 9ca2dc7bec4dc8672953ae644a32749ad1516640 https://github.com/tianocore/edk2/commit/9ca2dc7bec4dc8672953ae644a32749ad1516640 Author: Ard Biesheuvel <a...@kernel.org> Date: 2022-10-26 (Wed, 26 Oct 2022) Changed paths: M ArmVirtPkg/ArmVirtQemu.dsc Log Message: ----------- ArmVirtPkg/ArmVirtQemu: wire up timeout PCD to Timeout variable Use the appropriate PCD definition in the ArmVirtQemu DSC so that the boot timeout is taken from the Timeout variable automatically, which is what Linux tools such as efibootmgr expect. Signed-off-by: Ard Biesheuvel <a...@kernel.org> Commit: 2eff4ddc77874b8e5088b08c52f2e94491f745f2 https://github.com/tianocore/edk2/commit/2eff4ddc77874b8e5088b08c52f2e94491f745f2 Author: Ard Biesheuvel <a...@kernel.org> Date: 2022-10-26 (Wed, 26 Oct 2022) Changed paths: A ArmVirtPkg/Library/ArmPlatformLibQemu/AArch64/ArmPlatformHelper.S A ArmVirtPkg/Library/ArmPlatformLibQemu/ArmPlatformLibQemu.c A ArmVirtPkg/Library/ArmPlatformLibQemu/ArmPlatformLibQemu.inf A ArmVirtPkg/Library/ArmPlatformLibQemu/IdMap.S Log Message: ----------- ArmVirtPkg/ArmVirtQemu: implement ArmPlatformLib with static ID map To substantially reduce the amount of processing that takes place with the MMU and caches off, implement a version of ArmPlatformLib specific for QEMU/mach-virt in AArch64 mode that carries a statically allocated and populated ID map that covers the NOR flash and device region, and 128 MiB of DRAM at the base of memory (0x4000_0000). Note that 128 MiB has always been the minimum amount of DRAM we support for this configuration, and the existing code already ASSERT()s in DEBUG mode when booting with less. Signed-off-by: Ard Biesheuvel <a...@kernel.org> Commit: a26050f74dfe865fb4e7bd39d412250d6eabb8e8 https://github.com/tianocore/edk2/commit/a26050f74dfe865fb4e7bd39d412250d6eabb8e8 Author: Ard Biesheuvel <a...@kernel.org> Date: 2022-10-26 (Wed, 26 Oct 2022) Changed paths: A ArmVirtPkg/MemoryInitPei/MemoryInitPeim.c A ArmVirtPkg/MemoryInitPei/MemoryInitPeim.inf Log Message: ----------- ArmVirtPkg/ArmVirtQemu: use first 128 MiB as permanent PEI memory In order to allow booting with the MMU and caches enabled really early, we need to ensure that the code that populates the page tables can access those page tables with the statically defined ID map active. So let's put the permanent PEI RAM in the first 128 MiB of memory, which we will cover with this initial ID map (as it is the minimum supported DRAM size for ArmVirtQemu). Signed-off-by: Ard Biesheuvel <a...@kernel.org> Commit: 07be1d34d95460a238fcd0f6693efb747c28b329 https://github.com/tianocore/edk2/commit/07be1d34d95460a238fcd0f6693efb747c28b329 Author: Ard Biesheuvel <a...@kernel.org> Date: 2022-10-26 (Wed, 26 Oct 2022) Changed paths: M ArmVirtPkg/ArmVirtQemu.dsc M ArmVirtPkg/ArmVirtQemu.fdf Log Message: ----------- ArmVirtPkg/ArmVirtQemu: enable initial ID map at early boot Now that we have all the pieces in place, switch the AArch64 version of ArmVirtQemu to a mode where the first thing it does out of reset is enable a preliminary ID map that covers the NOR flash and sufficient DRAM to create the UEFI page tables as usual. The advantage of this is that no manipulation of memory occurs any longer before the MMU is enabled, which removes the need for explicit coherency management, which is cumbersome and bad for performance. It also means we no longer need to build all components that may execute with the MMU off (including BASE libraries) with strict alignment. Signed-off-by: Ard Biesheuvel <a...@kernel.org> Commit: 75d2be4a37955b2fe164e89524e9d6d2d61a4eac https://github.com/tianocore/edk2/commit/75d2be4a37955b2fe164e89524e9d6d2d61a4eac Author: Ard Biesheuvel <a...@kernel.org> Date: 2022-10-26 (Wed, 26 Oct 2022) Changed paths: M ArmVirtPkg/ArmVirtQemu.dsc M ArmVirtPkg/ArmVirtQemu.fdf Log Message: ----------- ArmVirtPkg/ArmVirtQemu: Drop unused variable PEIM The variable PEIM is included in the build but its runtime prerequisites are absent so it is never dispatched. Just drop it. Signed-off-by: Ard Biesheuvel <a...@kernel.org> Commit: fead469a3b3174fbf9ec2df97f54f3ebcc786ca5 https://github.com/tianocore/edk2/commit/fead469a3b3174fbf9ec2df97f54f3ebcc786ca5 Author: Ard Biesheuvel <a...@kernel.org> Date: 2022-10-26 (Wed, 26 Oct 2022) Changed paths: M ArmVirtPkg/ArmVirtQemu.dsc Log Message: ----------- ArmVirtPkg/ArmVirtQemu: avoid shadowing PEIMs unless necessary Some PEIMs register for shadow execution explicitly, but others exist that don't care and can happily execute in place. Since the emulated NOR flash is just RAM, shadowing has no performance benefits so let's only do this if needed. Signed-off-by: Ard Biesheuvel <a...@kernel.org> Commit: 7136d5491e225c57f1d73e4a1b7ac27ed656ff72 https://github.com/tianocore/edk2/commit/7136d5491e225c57f1d73e4a1b7ac27ed656ff72 Author: Ard Biesheuvel <a...@kernel.org> Date: 2022-10-26 (Wed, 26 Oct 2022) Changed paths: M ArmVirtPkg/ArmVirtPkg.dec M ArmVirtPkg/ArmVirtQemu.dsc M ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.c M ArmVirtPkg/Library/ArmVirtMemoryInitPeiLib/ArmVirtMemoryInitPeiLib.inf M ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.c M ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoLib.inf M ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLib.inf M ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLibConstructor.c Log Message: ----------- ArmVirtPkg/QemuVirtMemInfoLib: use HOB not PCD to record the memory size Due to the way we inherited the formerly fixed PCDs to describe the system memory base and size from ArmPlatformPkg, we ended up with a MemoryInit PEIM that relies on dynamic PCDs to communicate the size of system memory between the constructor of one of its library dependencies and the core module. This is unnecessary, and forces us to incorporate the PCD PEIM as well, for no good reason. So instead, let's use a HOB. Signed-off-by: Ard Biesheuvel <a...@kernel.org> Commit: b6efc505e4d6eb2055a39afd0a1ee67846a1e5f9 https://github.com/tianocore/edk2/commit/b6efc505e4d6eb2055a39afd0a1ee67846a1e5f9 Author: Ard Biesheuvel <a...@kernel.org> Date: 2022-10-26 (Wed, 26 Oct 2022) Changed paths: M ArmVirtPkg/ArmVirtQemu.dsc M ArmVirtPkg/ArmVirtQemu.fdf Log Message: ----------- ArmVirtPkg/ArmVirtQemu: omit PCD PEIM unless TPM support is enabled The TPM discovery code relies on a dynamic PCD to communicate the TPM base address to other components. But no other code relies on dynamic PCDs in the PEI phase so let's drop the PCD PEIM when TPM support is not enabled. Signed-off-by: Ard Biesheuvel <a...@kernel.org> Compare: https://github.com/tianocore/edk2/compare/9e2c88b16ed3...b6efc505e4d6 _______________________________________________ edk2-commits mailing list edk2-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-commits