On Fri, Aug 25, 2017 at 11:49:47AM -0400, Steven Rostedt wrote: > On Fri, 25 Aug 2017 12:31:13 +0200 > Thomas Gleixner <t...@linutronix.de> wrote: > > > The error and the spurious interrupt are really rare events and not at all > > so performance sensitive that two NOP5s can not be tolerated when tracing > > is disabled. > > Just a note. I'm sure if we disassembled it, it may be a little more > work done than just two NOPs, as parameter passing to the tracepoints > sometimes leak out of the static jump block. It's moot on this patch, > but other irqs with fast paths may need to be looked at.
Is that something we can fix with the trace macros? They have a general shape of: #define trace_foo(args...) if (static_branch_unlikely(&foo_enabled)) { __trace_foo(args...); } Right? And I suppose I see why the compiler would want to sometimes lift stuff out of the branch block, but we'd really like it not to do that. Would putting a barrier() in front of __trace_foo() help?