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-arm@nongnu.org, qemu-devel@nongnu.org, patches@linaro.org,
	Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [Qemu-arm] [PATCH 7/8] target/arm: Allow deliver_fault() caller to specify EA bit
Date: Sat, 5 Aug 2017 03:45:07 +0200	[thread overview]
Message-ID: <20170805014507.GG4859@toto> (raw)
In-Reply-To: <1501867249-1924-8-git-send-email-peter.maydell@linaro.org>

On Fri, Aug 04, 2017 at 06:20:48PM +0100, Peter Maydell wrote:
> For external aborts, we will want to be able to specify the EA
> (external abort type) bit in the syndrome field.  Allow callers of
> deliver_fault() to do that by adding a field to ARMMMUFaultInfo which
> we use when constructing the syndrome values.
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

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


> ---
>  target/arm/internals.h |  2 ++
>  target/arm/op_helper.c | 10 +++++-----
>  2 files changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/target/arm/internals.h b/target/arm/internals.h
> index 1f6efef..a3adbd8 100644
> --- a/target/arm/internals.h
> +++ b/target/arm/internals.h
> @@ -448,12 +448,14 @@ void arm_handle_psci_call(ARMCPU *cpu);
>   * @s2addr: Address that caused a fault at stage 2
>   * @stage2: True if we faulted at stage 2
>   * @s1ptw: True if we faulted at stage 2 while doing a stage 1 page-table walk
> + * @ea: True if we should set the EA (external abort type) bit in syndrome
>   */
>  typedef struct ARMMMUFaultInfo ARMMMUFaultInfo;
>  struct ARMMMUFaultInfo {
>      target_ulong s2addr;
>      bool stage2;
>      bool s1ptw;
> +    bool ea;
>  };
>  
>  /* Do a page table walk and add page to TLB if possible */
> diff --git a/target/arm/op_helper.c b/target/arm/op_helper.c
> index aa52a98..7eac272 100644
> --- a/target/arm/op_helper.c
> +++ b/target/arm/op_helper.c
> @@ -80,7 +80,7 @@ uint32_t HELPER(neon_tbl)(CPUARMState *env, uint32_t ireg, uint32_t def,
>  
>  static inline uint32_t merge_syn_data_abort(uint32_t template_syn,
>                                              unsigned int target_el,
> -                                            bool same_el,
> +                                            bool same_el, bool ea,
>                                              bool s1ptw, bool is_write,
>                                              int fsc)
>  {
> @@ -99,7 +99,7 @@ static inline uint32_t merge_syn_data_abort(uint32_t template_syn,
>       */
>      if (!(template_syn & ARM_EL_ISV) || target_el != 2 || s1ptw) {
>          syn = syn_data_abort_no_iss(same_el,
> -                                    0, 0, s1ptw, is_write, fsc);
> +                                    ea, 0, s1ptw, is_write, fsc);
>      } else {
>          /* Fields: IL, ISV, SAS, SSE, SRT, SF and AR come from the template
>           * syndrome created at translation time.
> @@ -107,7 +107,7 @@ static inline uint32_t merge_syn_data_abort(uint32_t template_syn,
>           */
>          syn = syn_data_abort_with_iss(same_el,
>                                        0, 0, 0, 0, 0,
> -                                      0, 0, s1ptw, is_write, fsc,
> +                                      ea, 0, s1ptw, is_write, fsc,
>                                        false);
>          /* Merge the runtime syndrome with the template syndrome.  */
>          syn |= template_syn;
> @@ -141,11 +141,11 @@ static void deliver_fault(ARMCPU *cpu, vaddr addr, MMUAccessType access_type,
>      }
>  
>      if (access_type == MMU_INST_FETCH) {
> -        syn = syn_insn_abort(same_el, 0, fi->s1ptw, fsc);
> +        syn = syn_insn_abort(same_el, fi->ea, fi->s1ptw, fsc);
>          exc = EXCP_PREFETCH_ABORT;
>      } else {
>          syn = merge_syn_data_abort(env->exception.syndrome, target_el,
> -                                   same_el, fi->s1ptw,
> +                                   same_el, fi->ea, fi->s1ptw,
>                                     access_type == MMU_DATA_STORE,
>                                     fsc);
>          if (access_type == MMU_DATA_STORE
> -- 
> 2.7.4
> 
> 

WARNING: multiple messages have this Message-ID (diff)
From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-arm@nongnu.org, qemu-devel@nongnu.org,
	Richard Henderson <rth@twiddle.net>,
	patches@linaro.org
Subject: Re: [Qemu-devel] [Qemu-arm] [PATCH 7/8] target/arm: Allow deliver_fault() caller to specify EA bit
Date: Sat, 5 Aug 2017 03:45:07 +0200	[thread overview]
Message-ID: <20170805014507.GG4859@toto> (raw)
In-Reply-To: <1501867249-1924-8-git-send-email-peter.maydell@linaro.org>

On Fri, Aug 04, 2017 at 06:20:48PM +0100, Peter Maydell wrote:
> For external aborts, we will want to be able to specify the EA
> (external abort type) bit in the syndrome field.  Allow callers of
> deliver_fault() to do that by adding a field to ARMMMUFaultInfo which
> we use when constructing the syndrome values.
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

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


> ---
>  target/arm/internals.h |  2 ++
>  target/arm/op_helper.c | 10 +++++-----
>  2 files changed, 7 insertions(+), 5 deletions(-)
> 
> diff --git a/target/arm/internals.h b/target/arm/internals.h
> index 1f6efef..a3adbd8 100644
> --- a/target/arm/internals.h
> +++ b/target/arm/internals.h
> @@ -448,12 +448,14 @@ void arm_handle_psci_call(ARMCPU *cpu);
>   * @s2addr: Address that caused a fault at stage 2
>   * @stage2: True if we faulted at stage 2
>   * @s1ptw: True if we faulted at stage 2 while doing a stage 1 page-table walk
> + * @ea: True if we should set the EA (external abort type) bit in syndrome
>   */
>  typedef struct ARMMMUFaultInfo ARMMMUFaultInfo;
>  struct ARMMMUFaultInfo {
>      target_ulong s2addr;
>      bool stage2;
>      bool s1ptw;
> +    bool ea;
>  };
>  
>  /* Do a page table walk and add page to TLB if possible */
> diff --git a/target/arm/op_helper.c b/target/arm/op_helper.c
> index aa52a98..7eac272 100644
> --- a/target/arm/op_helper.c
> +++ b/target/arm/op_helper.c
> @@ -80,7 +80,7 @@ uint32_t HELPER(neon_tbl)(CPUARMState *env, uint32_t ireg, uint32_t def,
>  
>  static inline uint32_t merge_syn_data_abort(uint32_t template_syn,
>                                              unsigned int target_el,
> -                                            bool same_el,
> +                                            bool same_el, bool ea,
>                                              bool s1ptw, bool is_write,
>                                              int fsc)
>  {
> @@ -99,7 +99,7 @@ static inline uint32_t merge_syn_data_abort(uint32_t template_syn,
>       */
>      if (!(template_syn & ARM_EL_ISV) || target_el != 2 || s1ptw) {
>          syn = syn_data_abort_no_iss(same_el,
> -                                    0, 0, s1ptw, is_write, fsc);
> +                                    ea, 0, s1ptw, is_write, fsc);
>      } else {
>          /* Fields: IL, ISV, SAS, SSE, SRT, SF and AR come from the template
>           * syndrome created at translation time.
> @@ -107,7 +107,7 @@ static inline uint32_t merge_syn_data_abort(uint32_t template_syn,
>           */
>          syn = syn_data_abort_with_iss(same_el,
>                                        0, 0, 0, 0, 0,
> -                                      0, 0, s1ptw, is_write, fsc,
> +                                      ea, 0, s1ptw, is_write, fsc,
>                                        false);
>          /* Merge the runtime syndrome with the template syndrome.  */
>          syn |= template_syn;
> @@ -141,11 +141,11 @@ static void deliver_fault(ARMCPU *cpu, vaddr addr, MMUAccessType access_type,
>      }
>  
>      if (access_type == MMU_INST_FETCH) {
> -        syn = syn_insn_abort(same_el, 0, fi->s1ptw, fsc);
> +        syn = syn_insn_abort(same_el, fi->ea, fi->s1ptw, fsc);
>          exc = EXCP_PREFETCH_ABORT;
>      } else {
>          syn = merge_syn_data_abort(env->exception.syndrome, target_el,
> -                                   same_el, fi->s1ptw,
> +                                   same_el, fi->ea, fi->s1ptw,
>                                     access_type == MMU_DATA_STORE,
>                                     fsc);
>          if (access_type == MMU_DATA_STORE
> -- 
> 2.7.4
> 
> 

  parent reply	other threads:[~2017-08-05  1:46 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-04 17:20 [Qemu-arm] [PATCH 0/8] Implement ARM external abort handling Peter Maydell
2017-08-04 17:20 ` [Qemu-devel] " Peter Maydell
2017-08-04 17:20 ` [Qemu-arm] [PATCH 1/8] memory.h: Move MemTxResult type to memattrs.h Peter Maydell
2017-08-04 17:20   ` [Qemu-devel] " Peter Maydell
2017-08-04 17:47   ` [Qemu-arm] " Richard Henderson
2017-08-04 17:47     ` [Qemu-devel] " Richard Henderson
2017-08-05  0:59   ` [Qemu-arm] " Edgar E. Iglesias
2017-08-05  0:59     ` [Qemu-devel] " Edgar E. Iglesias
2017-08-07 23:11     ` [Qemu-arm] [Qemu-devel] " Alistair Francis
2017-08-07 23:11       ` [Qemu-devel] [Qemu-arm] " Alistair Francis
2017-08-04 17:20 ` [Qemu-arm] [PATCH 2/8] cpu: Define new cpu_transaction_failed() hook Peter Maydell
2017-08-04 17:20   ` [Qemu-devel] " Peter Maydell
2017-08-04 18:42   ` [Qemu-arm] " Richard Henderson
2017-08-04 18:42     ` [Qemu-devel] " Richard Henderson
2017-08-05  1:06   ` [Qemu-arm] " Edgar E. Iglesias
2017-08-05  1:06     ` [Qemu-devel] " Edgar E. Iglesias
2017-08-05 16:51     ` Peter Maydell
2017-08-05 16:51       ` [Qemu-devel] " Peter Maydell
2017-08-05  1:12   ` Edgar E. Iglesias
2017-08-05  1:12     ` [Qemu-devel] " Edgar E. Iglesias
2017-08-05 17:18     ` Peter Maydell
2017-08-05 17:18       ` [Qemu-devel] " Peter Maydell
2017-08-04 17:20 ` [Qemu-arm] [PATCH 3/8] cputlb: Support generating CPU exceptions on memory transaction failures Peter Maydell
2017-08-04 17:20   ` [Qemu-devel] " Peter Maydell
2017-08-05  1:15   ` [Qemu-arm] " Edgar E. Iglesias
2017-08-05  1:15     ` [Qemu-devel] " Edgar E. Iglesias
2017-12-13 16:39   ` Peter Maydell
2017-12-13 16:39     ` [Qemu-devel] " Peter Maydell
2017-12-14  9:03     ` Paolo Bonzini
2017-12-14  9:03       ` [Qemu-devel] " Paolo Bonzini
2017-08-04 17:20 ` [Qemu-arm] [PATCH 4/8] boards.h: Define new flag ignore_memory_transaction_failures Peter Maydell
2017-08-04 17:20   ` [Qemu-devel] " Peter Maydell
2017-08-04 18:09   ` [Qemu-arm] " Philippe Mathieu-Daudé
2017-08-04 18:09     ` [Qemu-devel] " Philippe Mathieu-Daudé
2017-08-04 19:23     ` Richard Henderson
2017-08-05 10:13       ` Peter Maydell
2017-08-05 10:13         ` Peter Maydell
2017-08-17 10:25         ` Peter Maydell
2017-08-17 10:25           ` [Qemu-devel] " Peter Maydell
2017-08-22  3:45           ` Philippe Mathieu-Daudé
2017-08-22  3:45             ` [Qemu-devel] " Philippe Mathieu-Daudé
2017-08-22  8:36             ` Peter Maydell
2017-08-22  8:36               ` [Qemu-devel] " Peter Maydell
     [not found]               ` <CAFEAcA_rSqsrfd_qJijtPFRe1qKEA=JiyHE+3J5atAgxAX8NBg@mail.gmail.com>
2017-08-24 20:28                 ` Richard Henderson
2017-08-25 12:02                   ` Peter Maydell
2017-08-05 10:29     ` Peter Maydell
2017-08-05 10:29       ` [Qemu-devel] " Peter Maydell
2017-08-05  1:23   ` Edgar E. Iglesias
2017-08-05  1:23     ` [Qemu-devel] " Edgar E. Iglesias
2017-08-04 17:20 ` [Qemu-arm] [PATCH 5/8] hw/arm: Set ignore_memory_transaction_failures for most ARM boards Peter Maydell
2017-08-04 17:20   ` [Qemu-devel] " Peter Maydell
2017-08-05  1:24   ` [Qemu-arm] " Edgar E. Iglesias
2017-08-05  1:24     ` [Qemu-devel] " Edgar E. Iglesias
2017-08-04 17:20 ` [Qemu-arm] [PATCH 6/8] target/arm: Factor out fault delivery code Peter Maydell
2017-08-04 17:20   ` [Qemu-devel] " Peter Maydell
2017-08-04 20:10   ` [Qemu-arm] " Richard Henderson
2017-08-04 20:10     ` [Qemu-devel] " Richard Henderson
2017-08-05  1:40   ` [Qemu-arm] " Edgar E. Iglesias
2017-08-05  1:40     ` [Qemu-devel] " Edgar E. Iglesias
2017-08-04 17:20 ` [Qemu-arm] [PATCH 7/8] target/arm: Allow deliver_fault() caller to specify EA bit Peter Maydell
2017-08-04 17:20   ` [Qemu-devel] " Peter Maydell
2017-08-04 20:15   ` [Qemu-arm] " Richard Henderson
2017-08-04 20:15     ` [Qemu-devel] " Richard Henderson
2017-08-05  1:45   ` Edgar E. Iglesias [this message]
2017-08-05  1:45     ` [Qemu-devel] [Qemu-arm] " Edgar E. Iglesias
2017-08-04 17:20 ` [Qemu-arm] [PATCH 8/8] target/arm: Implement new do_transaction_failed hook Peter Maydell
2017-08-04 17:20   ` [Qemu-devel] " Peter Maydell
2017-08-04 20:26   ` [Qemu-arm] " Richard Henderson
2017-08-04 20:26     ` [Qemu-devel] " Richard Henderson
2017-08-05  1:44   ` [Qemu-arm] " Edgar E. Iglesias
2017-08-05  1:44     ` [Qemu-devel] " Edgar E. Iglesias

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=20170805014507.GG4859@toto \
    --to=edgar.iglesias@gmail.com \
    --cc=patches@linaro.org \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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.