From: Thomas Huth <thuth@redhat.com>
To: Peter Maydell <peter.maydell@linaro.org>,
qemu-devel@nongnu.org, qemu-arm <qemu-arm@nongnu.org>
Cc: Richard Henderson <richard.henderson@linaro.org>
Subject: Re: [PULL 4/4] target/arm: Fix usage of MMU indexes when EL3 is AArch32
Date: Fri, 25 Oct 2024 14:54:36 +0200 [thread overview]
Message-ID: <b090fac1-85df-4727-a382-8a934bd02f33@redhat.com> (raw)
In-Reply-To: <20240813152054.2445099-5-peter.maydell@linaro.org>
On 13/08/2024 17.20, Peter Maydell wrote:
> Our current usage of MMU indexes when EL3 is AArch32 is confused.
> Architecturally, when EL3 is AArch32, all Secure code runs under the
> Secure PL1&0 translation regime:
> * code at EL3, which might be Mon, or SVC, or any of the
> other privileged modes (PL1)
> * code at EL0 (Secure PL0)
>
> This is different from when EL3 is AArch64, in which case EL3 is its
> own translation regime, and EL1 and EL0 (whether AArch32 or AArch64)
> have their own regime.
>
> We claimed to be mapping Secure PL1 to our ARMMMUIdx_EL3, but didn't
> do anything special about Secure PL0, which meant it used the same
> ARMMMUIdx_EL10_0 that NonSecure PL0 does. This resulted in a bug
> where arm_sctlr() incorrectly picked the NonSecure SCTLR as the
> controlling register when in Secure PL0, which meant we were
> spuriously generating alignment faults because we were looking at the
> wrong SCTLR control bits.
>
> The use of ARMMMUIdx_EL3 for Secure PL1 also resulted in the bug that
> we wouldn't honour the PAN bit for Secure PL1, because there's no
> equivalent _PAN mmu index for it.
>
> We could fix this in one of two ways:
> * The most straightforward is to add new MMU indexes EL30_0,
> EL30_3, EL30_3_PAN to correspond to "Secure PL1&0 at PL0",
> "Secure PL1&0 at PL1", and "Secure PL1&0 at PL1 with PAN".
> This matches how we use indexes for the AArch64 regimes, and
> preserves propirties like being able to determine the privilege
> level from an MMU index without any other information. However
> it would add two MMU indexes (we can share one with ARMMMUIdx_EL3),
> and we are already using 14 of the 16 the core TLB code permits.
>
> * The more complicated approach is the one we take here. We use
> the same MMU indexes (E10_0, E10_1, E10_1_PAN) for Secure PL1&0
> than we do for NonSecure PL1&0. This saves on MMU indexes, but
> means we need to check in some places whether we're in the
> Secure PL1&0 regime or not before we interpret an MMU index.
>
> The changes in this commit were created by auditing all the places
> where we use specific ARMMMUIdx_ values, and checking whether they
> needed to be changed to handle the new index value usage.
Hi Peter,
this commit caused a regression with one of the Avocado tests:
AVOCADO_ALLOW_LARGE_STORAGE=1 avocado run
tests/avocado/boot_linux_console.py:BootLinuxConsole.test_arm_bpim2u_openwrt_22_03_3
is failing now. It works still fine before this commit. Could you please
have a look?
Thanks,
Thomas
next prev parent reply other threads:[~2024-10-25 12:55 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-13 15:20 [PULL 0/4] target-arm queue Peter Maydell
2024-08-13 15:20 ` [PULL 1/4] hw/misc/stm32l4x5_rcc: Add validation for MCOPRE and MCOSEL values Peter Maydell
2024-08-13 15:20 ` [PULL 2/4] target/arm: Clear high SVE elements in handle_vec_simd_wshli Peter Maydell
2024-08-13 15:20 ` [PULL 3/4] target/arm: Update translation regime comment for new features Peter Maydell
2024-08-13 15:20 ` [PULL 4/4] target/arm: Fix usage of MMU indexes when EL3 is AArch32 Peter Maydell
2024-10-25 12:54 ` Thomas Huth [this message]
2024-10-28 13:24 ` Peter Maydell
2024-10-29 15:02 ` Richard Henderson
2024-08-14 2:53 ` [PULL 0/4] target-arm queue Richard Henderson
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=b090fac1-85df-4727-a382-8a934bd02f33@redhat.com \
--to=thuth@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).