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]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to