On Fri, 19 Apr 2024 19:50:13 +0200 Ard Biesheuvel <ardb+...@google.com> wrote:
> From: Ard Biesheuvel <a...@kernel.org> > > The optimization that enabled entry with MMU and caches enabled at EL1 > removed the strict alignment requirement for XIP code (roughly, any code > that might execute with the MMU and caches off, which means SEC and PEI > phase modules but also *all* BASE libraries), on the basis that QEMU can > only run guest payloads at EL2 in TCG emulation, which used to ignore > alignment violations, and execution at EL1 would always occur with the > MMU enabled. > > This assumption no longer holds: not only does QEMU now enforce strict > alignment for memory accesses with device semantics, there are also > cases where this code might execute at EL2 under virtualization (i.e., > under NV2 nested virtualization) where the strict alignment is required > too. > > The latter case could be optimized too, by enabling VHE and pretending > execution is occurring at EL1, which would allow the existing logic for > entry with the MMU enabled to be reused. However, this would leave > non-VHE CPUs behind. > > So in summary, strict alignment needs to be enforced for any code that > may execute with the MMU off, so drop the override that sets the XIP > flags to the empty string. > > Cc: Jonathan Cameron <jonathan.came...@huawei.com> > Cc: Richard Henderson <richard.hender...@linaro.org> > Cc: Philippe Mathieu-Daud� <phi...@linaro.org> > Cc: Idan Horowitz <idan.horow...@gmail.com> > Cc: qemu-...@nongnu.org > Signed-off-by: Ard Biesheuvel <a...@kernel.org> This matches what I was testing with locally. Thanks sorting this out. Tested-by: Jonathan Cameron <jonathan.came...@huawei.com> Reviewed-by: Jonathan Cameron <jonathan.came...@huawei.com> > --- > ArmVirtPkg/ArmVirtQemu.dsc | 2 -- > 1 file changed, 2 deletions(-) > > diff --git a/ArmVirtPkg/ArmVirtQemu.dsc b/ArmVirtPkg/ArmVirtQemu.dsc > index e48c75b5e99f..f6f78359552d 100644 > --- a/ArmVirtPkg/ArmVirtQemu.dsc > +++ b/ArmVirtPkg/ArmVirtQemu.dsc > @@ -124,8 +124,6 @@ [LibraryClasses.common.UEFI_DRIVER] > [BuildOptions] > > !if $(CAVIUM_ERRATUM_27456) == TRUE > > GCC:*_*_AARCH64_PP_FLAGS = -DCAVIUM_ERRATUM_27456 > > -!else > > - GCC:*_*_AARCH64_CC_XIPFLAGS == > > !endif > > > > !include NetworkPkg/NetworkBuildOptions.dsc.inc > > -- > 2.44.0.769.g3c40516874-goog > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#118080): https://edk2.groups.io/g/devel/message/118080 Mute This Topic: https://groups.io/mt/105630615/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-