Hi Julien,

> On 12 Aug 2022, at 20:24, Julien Grall <jul...@xen.org> wrote:
> 
> From: Julien Grall <jgr...@amazon.com>
> 
> Unlike arm64, on arm32 there are no extra information dumped (e.g.
> page table walk) for hypervisor data abort.

The code in arch/arm/traps.c has nothing arm32 specific like that so
could you explain this statement ?

Here the arm32 code will call the generic function which has only
something specific for BRK handling but the rest is generic.

> 
> For data abort, the HSR will be set properly and so replace the call
> to do_unexpected_trap() with do_trap_hyp_sync() to dispatch the error.

I agree with that, I just do not understand your previous statement here.

Cheers
Bertrand


> 
> Signed-off-by: Julien Grall <jgr...@amazon.com>
> ---
> xen/arch/arm/arm32/traps.c       | 2 +-
> xen/arch/arm/include/asm/traps.h | 1 +
> 2 files changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/xen/arch/arm/arm32/traps.c b/xen/arch/arm/arm32/traps.c
> index a4ce2b92d904..a2fc1c22cbc9 100644
> --- a/xen/arch/arm/arm32/traps.c
> +++ b/xen/arch/arm/arm32/traps.c
> @@ -81,7 +81,7 @@ void do_trap_data_abort(struct cpu_user_regs *regs)
>     if ( VABORT_GEN_BY_GUEST(regs) )
>         do_trap_guest_serror(regs);
>     else
> -        do_unexpected_trap("Data Abort", regs);
> +        do_trap_hyp_sync(regs);
> }
> 
> void finalize_instr_emulation(const struct instr_details *instr)
> diff --git a/xen/arch/arm/include/asm/traps.h 
> b/xen/arch/arm/include/asm/traps.h
> index 08bc0b484c75..883dae368eac 100644
> --- a/xen/arch/arm/include/asm/traps.h
> +++ b/xen/arch/arm/include/asm/traps.h
> @@ -73,6 +73,7 @@ int do_bug_frame(const struct cpu_user_regs *regs, vaddr_t 
> pc);
> 
> void noreturn do_unexpected_trap(const char *msg,
>                                  const struct cpu_user_regs *regs);
> +void do_trap_hyp_sync(struct cpu_user_regs *regs);
> 
> /* Functions for pending virtual abort checking window. */
> void abort_guest_exit_start(void);
> -- 
> 2.37.1
> 


Reply via email to