The do_trace_write_msr(), do_trace_read_msr(), and do_trace_rdpmc() wrappers exist to break the header dependency from asm/msr.h which cannot include trace headers directly. Their callers in asm/msr.h already guard calls with tracepoint_enabled() checks, so the trace_foo() calls inside these wrappers perform a redundant static_branch_unlikely() re-evaluation.
Replace trace_write_msr(), trace_read_msr(), and trace_rdpmc() with their trace_call__##name() variants to call the tracepoint callbacks directly without the redundant static branch check. Suggested-by: Steven Rostedt <[email protected]> Suggested-by: Peter Zijlstra <[email protected]> Signed-off-by: Vineeth Pillai (Google) <[email protected]> --- arch/x86/lib/msr.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arch/x86/lib/msr.c b/arch/x86/lib/msr.c index dfdd1da89f366..14785fe5e07b5 100644 --- a/arch/x86/lib/msr.c +++ b/arch/x86/lib/msr.c @@ -125,21 +125,21 @@ EXPORT_SYMBOL_FOR_KVM(msr_clear_bit); #ifdef CONFIG_TRACEPOINTS void do_trace_write_msr(u32 msr, u64 val, int failed) { - trace_write_msr(msr, val, failed); + trace_call__write_msr(msr, val, failed); } EXPORT_SYMBOL(do_trace_write_msr); EXPORT_TRACEPOINT_SYMBOL(write_msr); void do_trace_read_msr(u32 msr, u64 val, int failed) { - trace_read_msr(msr, val, failed); + trace_call__read_msr(msr, val, failed); } EXPORT_SYMBOL(do_trace_read_msr); EXPORT_TRACEPOINT_SYMBOL(read_msr); void do_trace_rdpmc(u32 msr, u64 val, int failed) { - trace_rdpmc(msr, val, failed); + trace_call__rdpmc(msr, val, failed); } EXPORT_SYMBOL(do_trace_rdpmc); EXPORT_TRACEPOINT_SYMBOL(rdpmc); -- 2.53.0
