Merge tag 'pull-target-arm-20260407' of https://gitlab.com/pm215/qemu into staging

target-arm queue:
 * docs/system: remove extraneous sentence
 * target/arm: fix fault_s1ns for stage 2 faults
 * target/arm: do_ats_write(): avoid assertion when ptw failed

# -----BEGIN PGP SIGNATURE-----
#
# iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmnVRJIZHHBldGVyLm1h
# eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3iy2EACmribMFgzcPttAFU9Tx3VG
# SZ6jvm3xexspyh0bQe/P47gV2oZgvTepEYzteM0b6b6hOfiDFHCFzXXjyfcTqhxU
# LkeDXysB54zKjnHThihTnD3065JndwSYQdIQx+P3hk1Lcq3uGvZNLHjMRT++N0xv
# Jtp9SLKD9LtJZcEAXtPEy3gxoZwA/3hXp03EooO9TpZHDEdhTFxTmP9DVLeaAU9T
# zH1CwIPvZv2g1ep82fKuVM2TNNazPC60RIy4jiyiMAKAFgWLdp2bpes8MfXu24Au
# mAFdZJirVI8/oBQn+WaM1o9zVcIPuXqpK1AfFa9KRxYJx35dS3fUEC80vhdcL7gO
# HQP0ZmnKqWxB2CN8b7sEAjLyLjScE5GMqWbbTUckfJoFdQF1jcmfxRpl8t5VI/p/
# /2lCIwFjSerRiRrqwbUMss1ue37IpwZ8dWUkpKPhwnlBUe/Ts41DMZeQ9Cf/HieZ
# 6RgfcXszTQWwUESOPooy593Smw2pwKfB3Gmpq7khwIPtu5WLMhDKiQhTA1t4r7YM
# /BmNXUCAoiTIN2S8IXxe23ORXcPlQ4EyFDDBh0h4gAeX0eQCgUAcfkmDlRZb7Rbj
# sIVuAFOd1YW8sz3AHoXXH4bq0oPeh5MeWZJwcp1djTV3j1Cdyz9L9I0eFF+OWtj/
# MNvSBK7/IIapbLenws8GHg==
# =eIR5
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue Apr  7 18:53:22 2026 BST
# gpg:                using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE
# gpg:                issuer "peter.maydell@linaro.org"
# gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [ultimate]
# gpg:                 aka "Peter Maydell <pmaydell@gmail.com>" [ultimate]
# gpg:                 aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [ultimate]
# gpg:                 aka "Peter Maydell <peter@archaic.org.uk>" [ultimate]
# Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83  15CF 3C25 25ED 1436 0CDE

* tag 'pull-target-arm-20260407' of https://gitlab.com/pm215/qemu:
  docs/system: remove extraneous sentence
  target/arm: fix fault_s1ns for stage 2 faults
  target/arm: do_ats_write(): avoid assertion when ptw failed

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell
2026-04-07 18:55:04 +01:00
4 changed files with 15 additions and 11 deletions

View File

@@ -165,10 +165,8 @@ names so we can override the defaults later.
-m 4096 \
We then define the 4 vCPUs using the ``max`` option which gives us all
the Arm features QEMU is capable of emulating. We enable a more
emulation friendly implementation of Arm's pointer authentication
algorithm. We explicitly specify TCG acceleration even though QEMU
would default to it anyway.
the Arm features QEMU is capable of emulating. We explicitly specify
TCG acceleration even though QEMU would default to it anyway.
.. code::

View File

@@ -740,7 +740,10 @@ typedef enum ARMGPCF {
* @paddr_space: physical address space that caused a fault for gpc
* @stage2: True if we faulted at stage 2
* @s1ptw: True if we faulted at stage 2 while doing a stage 1 page-table walk
* @s1ns: True if we faulted on a non-secure IPA while in secure state
* @s1ns: True if we faulted on a non-secure IPA. Note that (unlike the
* HPFAR_EL2.NS bit) this is set for any stage 2 fault for an NS IPA, so
* code must check that this is for a fault taken to Secure EL2 before
* propagating s1ns to HPFAR_EL2.NS.
* @ea: True if we should set the EA (external abort type) bit in syndrome
*/
typedef struct ARMMMUFaultInfo ARMMMUFaultInfo;

View File

@@ -611,12 +611,14 @@ static ARMSecuritySpace S2_security_space(ARMSecuritySpace s1_space,
static bool fault_s1ns(ARMSecuritySpace space, ARMMMUIdx s2_mmu_idx)
{
/*
* For stage 2 faults in Secure EL22, S1NS indicates
* whether the faulting IPA is in the Secure or NonSecure
* IPA space. For all other kinds of fault, it is false.
* For stage 2 faults, S1NS indicates whether the faulting IPA is
* in the Non-Secure (true) or Secure (false) IPA space. For all
* other kinds of fault, it is false. Note that we do not
* distinguish "s2 fault on NS IPA taken to Secure EL2" from
* "s2 fault on NS IPA taken to NS EL2 or Realm EL2" here, but
* instead do that when setting HPFAR_EL2.NS.
*/
return space == ARMSS_Secure && regime_is_stage2(s2_mmu_idx)
&& s2_mmu_idx == ARMMMUIdx_Stage2_S;
return space == ARMSS_NonSecure && regime_is_stage2(s2_mmu_idx);
}
/* Translate a S1 pagetable walk through S2 if needed. */

View File

@@ -37,8 +37,9 @@ static uint64_t do_ats_write(CPUARMState *env, uint64_t value,
/*
* ATS operations only do S1 or S1+S2 translations, so we never
* have to deal with the ARMCacheAttrs format for S2 only.
* (Note that res fields are only valid on ptw success.)
*/
assert(!res.cacheattrs.is_s2_format);
assert(ret || !res.cacheattrs.is_s2_format);
if (ret) {
/*