From: Jonathan Cameron via <qemu-arm@nongnu.org>
To: Ard Biesheuvel <ardb+git@google.com>
Cc: <devel@edk2.groups.io>, <quic_llindhol@quicinc.com>,
Ard Biesheuvel <ardb@kernel.org>,
Richard Henderson <richard.henderson@linaro.org>,
Philippe Mathieu-Daud_ <philmd@linaro.org>,
Idan Horowitz <idan.horowitz@gmail.com>, <qemu-arm@nongnu.org>,
<salil.mehta@huawei.com>
Subject: Re: [PATCH] ArmVirtPkg/ArmVirtQemu: always build XIP code with strict alignment
Date: Mon, 22 Apr 2024 10:30:37 +0100 [thread overview]
Message-ID: <20240422103037.00000a96@Huawei.com> (raw)
In-Reply-To: <20240419175013.3983824-1-ardb+git@google.com>
On Fri, 19 Apr 2024 19:50:13 +0200
Ard Biesheuvel <ardb+git@google.com> wrote:
> From: Ard Biesheuvel <ardb@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.Cameron@huawei.com>
> Cc: Richard Henderson <richard.henderson@linaro.org>
> Cc: Philippe Mathieu-Daud� <philmd@linaro.org>
> Cc: Idan Horowitz <idan.horowitz@gmail.com>
> Cc: qemu-arm@nongnu.org
> Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
This matches what I was testing with locally. Thanks sorting this
out.
Tested-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@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
>
prev parent reply other threads:[~2024-04-22 9:31 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-19 17:50 [PATCH] ArmVirtPkg/ArmVirtQemu: always build XIP code with strict alignment Ard Biesheuvel
2024-04-22 9:30 ` Jonathan Cameron via [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240422103037.00000a96@Huawei.com \
--to=qemu-arm@nongnu.org \
--cc=Jonathan.Cameron@Huawei.com \
--cc=ardb+git@google.com \
--cc=ardb@kernel.org \
--cc=devel@edk2.groups.io \
--cc=idan.horowitz@gmail.com \
--cc=philmd@linaro.org \
--cc=quic_llindhol@quicinc.com \
--cc=richard.henderson@linaro.org \
--cc=salil.mehta@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.