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 >