Message ID | 20181003002957.7711-1-anton@ozlabs.org (mailing list archive) |
---|---|
State | Changes Requested |
Headers | show |
Series | powerpc: Add doorbell tracepoints | expand |
Context | Check | Description |
---|---|---|
snowpatch_ozlabs/apply_patch | success | next/apply_patch Successfully applied |
snowpatch_ozlabs/checkpatch | warning | Test checkpatch on branch next |
snowpatch_ozlabs/build-ppc64le | fail | Test build-ppc64le on branch next |
snowpatch_ozlabs/build-ppc64be | fail | Test build-ppc64be on branch next |
snowpatch_ozlabs/build-ppc64e | fail | Test build-ppc64e on branch next |
snowpatch_ozlabs/build-ppc32 | success | Test build-ppc32 on branch next |
On Wed, 3 Oct 2018 10:29:57 +1000 Anton Blanchard <anton@ozlabs.org> wrote: > When analysing sources of OS jitter, I noticed that doorbells cannot be > traced. > > Signed-off-by: Anton Blanchard <anton@ozlabs.org> Acked-by: Nicholas Piggin <npiggin@gmail.com> > --- > arch/powerpc/include/asm/trace.h | 16 ++++++++++++++++ > arch/powerpc/kernel/dbell.c | 3 +++ > 2 files changed, 19 insertions(+) > > diff --git a/arch/powerpc/include/asm/trace.h b/arch/powerpc/include/asm/trace.h > index d018e8602694..eb9aa0f1561e 100644 > --- a/arch/powerpc/include/asm/trace.h > +++ b/arch/powerpc/include/asm/trace.h > @@ -54,6 +54,22 @@ DEFINE_EVENT(ppc64_interrupt_class, timer_interrupt_exit, > TP_ARGS(regs) > ); > > +#ifdef CONFIG_PPC_DOORBELL > +DEFINE_EVENT(ppc64_interrupt_class, doorbell_exception_entry, > + > + TP_PROTO(struct pt_regs *regs), > + > + TP_ARGS(regs) > +); > + > +DEFINE_EVENT(ppc64_interrupt_class, doorbell_exception_exit, > + > + TP_PROTO(struct pt_regs *regs), > + > + TP_ARGS(regs) > +); > +#endif > + > #ifdef CONFIG_PPC_PSERIES > extern int hcall_tracepoint_regfunc(void); > extern void hcall_tracepoint_unregfunc(void); > diff --git a/arch/powerpc/kernel/dbell.c b/arch/powerpc/kernel/dbell.c > index b6fe883b1016..5ec3b3835925 100644 > --- a/arch/powerpc/kernel/dbell.c > +++ b/arch/powerpc/kernel/dbell.c > @@ -18,6 +18,7 @@ > #include <asm/dbell.h> > #include <asm/irq_regs.h> > #include <asm/kvm_ppc.h> > +#include <asm/trace.h> > > #ifdef CONFIG_SMP > > @@ -81,6 +82,7 @@ void doorbell_exception(struct pt_regs *regs) > struct pt_regs *old_regs = set_irq_regs(regs); > > irq_enter(); > + trace_doorbell_entry(regs); > > ppc_msgsync(); > > @@ -91,6 +93,7 @@ void doorbell_exception(struct pt_regs *regs) > > smp_ipi_demux_relaxed(); /* already performed the barrier */ > > + trace_doorbell_exit(regs); > irq_exit(); > set_irq_regs(old_regs); > } > -- > 2.17.1 >
On Wed, 2018-10-03 at 10:29 +1000, Anton Blanchard wrote: > When analysing sources of OS jitter, I noticed that doorbells cannot be > traced. > > Signed-off-by: Anton Blanchard <anton@ozlabs.org> Hi Anton, snowpatch builds failed for this patch on all 64-bit configurations (ppc64e, ppc64 and ppc64le) with the following: arch/powerpc/kernel/dbell.c:85:9: error: undefined identifier 'trace_doorbell_entry' arch/powerpc/kernel/dbell.c:96:9: error: undefined identifier 'trace_doorbell_exit' ./arch/powerpc/include/asm/spinlock.h:171:9: warning: context imbalance in 'key_user_put' - unexpected unlock arch/powerpc/kernel/dbell.c: In function 'doorbell_exception': arch/powerpc/kernel/dbell.c:85:2: error: implicit declaration of function 'trace_doorbell_entry'; did you mean 'trace_irq_entry'? [-Werror=implicit- function-declaration] trace_doorbell_entry(regs); ^~~~~~~~~~~~~~~~~~~~ trace_irq_entry arch/powerpc/kernel/dbell.c:96:2: error: implicit declaration of function 'trace_doorbell_exit'; did you mean 'trace_irq_exit'? [-Werror=implicit-function- declaration] trace_doorbell_exit(regs); ^~~~~~~~~~~~~~~~~~~ trace_irq_exit cc1: all warnings being treated as errors scripts/Makefile.build:305: recipe for target 'arch/powerpc/kernel/dbell.o' failed make[1]: *** [arch/powerpc/kernel/dbell.o] Error 1 Makefile:1060: recipe for target 'arch/powerpc/kernel' failed So does something else need to check for CONFIG_PPC_DOORBELL maybe? You can see the failures here: http://patchwork.ozlabs.org/patch/978088/ - output in build_new.log (I know it's not pretty in there yet, you can search for "Error 1" to find the build failure) - Russell
Hi Russell, > snowpatch builds failed for this patch on all 64-bit configurations > (ppc64e, ppc64 and ppc64le) with the following: Thanks! Stupid bug on my part, need more quilt ref. Update to follow. Anton > arch/powerpc/kernel/dbell.c:85:9: error: undefined identifier > 'trace_doorbell_entry' > arch/powerpc/kernel/dbell.c:96:9: error: undefined identifier > 'trace_doorbell_exit' > ./arch/powerpc/include/asm/spinlock.h:171:9: warning: context > imbalance in 'key_user_put' - unexpected unlock > arch/powerpc/kernel/dbell.c: In function 'doorbell_exception': > arch/powerpc/kernel/dbell.c:85:2: error: implicit declaration of > function 'trace_doorbell_entry'; did you mean 'trace_irq_entry'? > [-Werror=implicit- function-declaration] > trace_doorbell_entry(regs); > ^~~~~~~~~~~~~~~~~~~~ > trace_irq_entry > arch/powerpc/kernel/dbell.c:96:2: error: implicit declaration of > function 'trace_doorbell_exit'; did you mean 'trace_irq_exit'? > [-Werror=implicit-function- declaration] > trace_doorbell_exit(regs); > ^~~~~~~~~~~~~~~~~~~ > trace_irq_exit > cc1: all warnings being treated as errors > scripts/Makefile.build:305: recipe for target > 'arch/powerpc/kernel/dbell.o' failed make[1]: *** > [arch/powerpc/kernel/dbell.o] Error 1 Makefile:1060: recipe for > target 'arch/powerpc/kernel' failed > > So does something else need to check for CONFIG_PPC_DOORBELL maybe? > > You can see the failures here: > http://patchwork.ozlabs.org/patch/978088/ - output in build_new.log > (I know it's not pretty in there yet, you can search for "Error 1" to > find the build failure) > > - Russell > >
diff --git a/arch/powerpc/include/asm/trace.h b/arch/powerpc/include/asm/trace.h index d018e8602694..eb9aa0f1561e 100644 --- a/arch/powerpc/include/asm/trace.h +++ b/arch/powerpc/include/asm/trace.h @@ -54,6 +54,22 @@ DEFINE_EVENT(ppc64_interrupt_class, timer_interrupt_exit, TP_ARGS(regs) ); +#ifdef CONFIG_PPC_DOORBELL +DEFINE_EVENT(ppc64_interrupt_class, doorbell_exception_entry, + + TP_PROTO(struct pt_regs *regs), + + TP_ARGS(regs) +); + +DEFINE_EVENT(ppc64_interrupt_class, doorbell_exception_exit, + + TP_PROTO(struct pt_regs *regs), + + TP_ARGS(regs) +); +#endif + #ifdef CONFIG_PPC_PSERIES extern int hcall_tracepoint_regfunc(void); extern void hcall_tracepoint_unregfunc(void); diff --git a/arch/powerpc/kernel/dbell.c b/arch/powerpc/kernel/dbell.c index b6fe883b1016..5ec3b3835925 100644 --- a/arch/powerpc/kernel/dbell.c +++ b/arch/powerpc/kernel/dbell.c @@ -18,6 +18,7 @@ #include <asm/dbell.h> #include <asm/irq_regs.h> #include <asm/kvm_ppc.h> +#include <asm/trace.h> #ifdef CONFIG_SMP @@ -81,6 +82,7 @@ void doorbell_exception(struct pt_regs *regs) struct pt_regs *old_regs = set_irq_regs(regs); irq_enter(); + trace_doorbell_entry(regs); ppc_msgsync(); @@ -91,6 +93,7 @@ void doorbell_exception(struct pt_regs *regs) smp_ipi_demux_relaxed(); /* already performed the barrier */ + trace_doorbell_exit(regs); irq_exit(); set_irq_regs(old_regs); }
When analysing sources of OS jitter, I noticed that doorbells cannot be traced. Signed-off-by: Anton Blanchard <anton@ozlabs.org> --- arch/powerpc/include/asm/trace.h | 16 ++++++++++++++++ arch/powerpc/kernel/dbell.c | 3 +++ 2 files changed, 19 insertions(+)