Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

x86/tracing, x86/mm: Remove redundant trace_pagefault_key

trace_pagefault_key is used to optimize the pagefault tracepoints when it
is disabled. However, tracepoints already have built-in static_key for this
exact purpose.

Remove this redundant key.

Signed-off-by: Nam Cao <namcao@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Gabriele Monaco <gmonaco@redhat.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Cc: John Ogness <john.ogness@linutronix.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: linux-trace-kernel@vger.kernel.org
Link: https://lore.kernel.org/r/827c7666d2989f08742a4fb869b1ed5bfaaf1dbf.1747046848.git.namcao@linutronix.de

authored by

Nam Cao and committed by
Ingo Molnar
d49ae417 82f2b0b9

+6 -50
-12
arch/x86/include/asm/trace/common.h
··· 1 - #ifndef _ASM_TRACE_COMMON_H 2 - #define _ASM_TRACE_COMMON_H 3 - 4 - #ifdef CONFIG_TRACING 5 - DECLARE_STATIC_KEY_FALSE(trace_pagefault_key); 6 - #define trace_pagefault_enabled() \ 7 - static_branch_unlikely(&trace_pagefault_key) 8 - #else 9 - static inline bool trace_pagefault_enabled(void) { return false; } 10 - #endif 11 - 12 - #endif
+6 -12
arch/x86/include/asm/trace/exceptions.h
··· 6 6 #define _TRACE_PAGE_FAULT_H 7 7 8 8 #include <linux/tracepoint.h> 9 - #include <asm/trace/common.h> 10 - 11 - extern int trace_pagefault_reg(void); 12 - extern void trace_pagefault_unreg(void); 13 9 14 10 DECLARE_EVENT_CLASS(x86_exceptions, 15 11 ··· 30 34 (void *)__entry->address, (void *)__entry->ip, 31 35 __entry->error_code) ); 32 36 33 - #define DEFINE_PAGE_FAULT_EVENT(name) \ 34 - DEFINE_EVENT_FN(x86_exceptions, name, \ 35 - TP_PROTO(unsigned long address, struct pt_regs *regs, \ 36 - unsigned long error_code), \ 37 - TP_ARGS(address, regs, error_code), \ 38 - trace_pagefault_reg, trace_pagefault_unreg); 37 + DEFINE_EVENT(x86_exceptions, page_fault_user, 38 + TP_PROTO(unsigned long address, struct pt_regs *regs, unsigned long error_code), 39 + TP_ARGS(address, regs, error_code)); 39 40 40 - DEFINE_PAGE_FAULT_EVENT(page_fault_user); 41 - DEFINE_PAGE_FAULT_EVENT(page_fault_kernel); 41 + DEFINE_EVENT(x86_exceptions, page_fault_kernel, 42 + TP_PROTO(unsigned long address, struct pt_regs *regs, unsigned long error_code), 43 + TP_ARGS(address, regs, error_code)); 42 44 43 45 #undef TRACE_INCLUDE_PATH 44 46 #undef TRACE_INCLUDE_FILE
-1
arch/x86/include/asm/trace/irq_vectors.h
··· 6 6 #define _TRACE_IRQ_VECTORS_H 7 7 8 8 #include <linux/tracepoint.h> 9 - #include <asm/trace/common.h> 10 9 11 10 #ifdef CONFIG_X86_LOCAL_APIC 12 11
-1
arch/x86/kernel/Makefile
··· 141 141 obj-$(CONFIG_UPROBES) += uprobes.o 142 142 143 143 obj-$(CONFIG_PERF_EVENTS) += perf_regs.o 144 - obj-$(CONFIG_TRACING) += tracepoint.o 145 144 obj-$(CONFIG_SCHED_MC_PRIO) += itmt.o 146 145 obj-$(CONFIG_X86_UMIP) += umip.o 147 146
-21
arch/x86/kernel/tracepoint.c
··· 1 - // SPDX-License-Identifier: GPL-2.0 2 - /* 3 - * Copyright (C) 2013 Seiji Aguchi <seiji.aguchi@hds.com> 4 - */ 5 - #include <linux/jump_label.h> 6 - #include <linux/atomic.h> 7 - 8 - #include <asm/trace/exceptions.h> 9 - 10 - DEFINE_STATIC_KEY_FALSE(trace_pagefault_key); 11 - 12 - int trace_pagefault_reg(void) 13 - { 14 - static_branch_inc(&trace_pagefault_key); 15 - return 0; 16 - } 17 - 18 - void trace_pagefault_unreg(void) 19 - { 20 - static_branch_dec(&trace_pagefault_key); 21 - }
-3
arch/x86/mm/fault.c
··· 1455 1455 trace_page_fault_entries(struct pt_regs *regs, unsigned long error_code, 1456 1456 unsigned long address) 1457 1457 { 1458 - if (!trace_pagefault_enabled()) 1459 - return; 1460 - 1461 1458 if (user_mode(regs)) 1462 1459 trace_page_fault_user(address, regs, error_code); 1463 1460 else