On Mon, May 12, 2025 at 12:51:00PM +0200, Nam Cao wrote: > diff --git a/arch/arm64/mm/fault.c b/arch/arm64/mm/fault.c > index ec0a337891dd..55094030e377 100644 > --- a/arch/arm64/mm/fault.c > +++ b/arch/arm64/mm/fault.c > @@ -44,6 +44,9 @@ > #include <asm/tlbflush.h> > #include <asm/traps.h> > > +#define CREATE_TRACE_POINTS > +#include <trace/events/exceptions.h> > + > struct fault_info { > int (*fn)(unsigned long far, unsigned long esr, > struct pt_regs *regs); > @@ -559,6 +562,11 @@ static int __kprobes do_page_fault(unsigned long far, > unsigned long esr, > if (kprobe_page_fault(regs, esr)) > return 0; > > + if (user_mode(regs)) > + trace_page_fault_user(addr, regs, esr); > + else > + trace_page_fault_kernel(addr, regs, esr);
What are the semantics for these tracepoints? When are they supposed to be called? In the RV context context I guess you only care about the benign, recoverable faults that would affect timing. These tracepoints were generalised from the x86 code but I don't know enough about it to tell when they would be invoked. For arm64, we also have the do_translation_fault() path for example that may or may not need to log such trace events. -- Catalin