All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org, patches@linaro.org
Subject: Re: [Qemu-devel] [PATCH 4/5] target-arm: Enable the AArch32 ATS12NSO ops
Date: Mon, 17 Aug 2015 15:31:10 +0200	[thread overview]
Message-ID: <20150817133110.GH16713@toto> (raw)
In-Reply-To: <1437751263-21913-5-git-send-email-peter.maydell@linaro.org>

On Fri, Jul 24, 2015 at 04:21:02PM +0100, Peter Maydell wrote:
> Apply the correct conditions in the ats_access() function for
> the ATS12NSO* address translation operations:
>  * succeed at EL2 or EL3
>  * normal UNDEF trap from NS EL1
>  * trap to EL3 from S EL1 (only possible if EL3 is AArch64)
> 
> (This change means they're now available in our EL3-supporting
> CPUs when they would previously always UNDEF.)
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>


Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>


> ---
>  target-arm/helper.c | 16 +++++++++++-----
>  1 file changed, 11 insertions(+), 5 deletions(-)
> 
> diff --git a/target-arm/helper.c b/target-arm/helper.c
> index 1974fa6..67d108e 100644
> --- a/target-arm/helper.c
> +++ b/target-arm/helper.c
> @@ -1477,12 +1477,17 @@ static void par_write(CPUARMState *env, const ARMCPRegInfo *ri, uint64_t value)
>  static CPAccessResult ats_access(CPUARMState *env, const ARMCPRegInfo *ri)
>  {
>      if (ri->opc2 & 4) {
> -        /* Other states are only available with TrustZone; in
> -         * a non-TZ implementation these registers don't exist
> -         * at all, which is an Uncategorized trap. This underdecoding
> -         * is safe because the reginfo is NO_RAW.
> +        /* The ATS12NSO* operations must trap to EL3 if executed in
> +         * Secure EL1 (which can only happen if EL3 is AArch64).
> +         * They are simply UNDEF if executed from NS EL1.
> +         * They function normally from EL2 or EL3.
>           */
> -        return CP_ACCESS_TRAP_UNCATEGORIZED;
> +        if (arm_current_el(env) == 1) {
> +            if (arm_is_secure_below_el3(env)) {
> +                return CP_ACCESS_TRAP_UNCATEGORIZED_EL3;
> +            }
> +            return CP_ACCESS_TRAP_UNCATEGORIZED;
> +        }
>      }
>      return CP_ACCESS_OK;
>  }
> @@ -1657,6 +1662,7 @@ static const ARMCPRegInfo vapa_cp_reginfo[] = {
>                               offsetoflow32(CPUARMState, cp15.par_ns) },
>        .writefn = par_write },
>  #ifndef CONFIG_USER_ONLY
> +    /* This underdecoding is safe because the reginfo is NO_RAW. */
>      { .name = "ATS", .cp = 15, .crn = 7, .crm = 8, .opc1 = 0, .opc2 = CP_ANY,
>        .access = PL1_W, .accessfn = ats_access,
>        .writefn = ats_write, .type = ARM_CP_NO_RAW },
> -- 
> 1.9.1
> 

  reply	other threads:[~2015-08-17 13:31 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-24 15:20 [Qemu-devel] [PATCH 0/5] Wire up various EL2/EL3 address translation ops Peter Maydell
2015-07-24 15:20 ` [Qemu-devel] [PATCH 1/5] target-arm: there is no TTBR1 for 32-bit EL2 stage 1 translations Peter Maydell
2015-08-17  1:38   ` Edgar E. Iglesias
2015-07-24 15:21 ` [Qemu-devel] [PATCH 2/5] target-arm: Wire up AArch64 EL2 and EL3 address translation ops Peter Maydell
2015-08-17  1:51   ` Edgar E. Iglesias
2015-07-24 15:21 ` [Qemu-devel] [PATCH 3/5] target-arm: Add CP_ACCESS_TRAP_UNCATEGORIZED_EL2, 3 Peter Maydell
2015-08-17  1:52   ` Edgar E. Iglesias
2015-07-24 15:21 ` [Qemu-devel] [PATCH 4/5] target-arm: Enable the AArch32 ATS12NSO ops Peter Maydell
2015-08-17 13:31   ` Edgar E. Iglesias [this message]
2015-07-24 15:21 ` [Qemu-devel] [PATCH 5/5] target-arm: Implement AArch32 ATS1H* operations Peter Maydell
2015-08-17 13:36   ` Edgar E. Iglesias
2015-08-14 10:10 ` [Qemu-devel] [PATCH 0/5] Wire up various EL2/EL3 address translation ops Peter Maydell

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=20150817133110.GH16713@toto \
    --to=edgar.iglesias@gmail.com \
    --cc=patches@linaro.org \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.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 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.