Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1721092
| From | Thomas Gleixner <tglx@linutronix.de> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [patch V3 21/44] x86/tracing: Build tracepoints only when they are used |
| Date | 2017-08-28 09:00 +0200 |
| Message-ID | <ujmbH-2dY-69@gated-at.bofh.it> (permalink) |
| References | <ujmbD-2dY-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
The tracepoint macro magic emits code for all tracepoints in a event header file. That code stays around even if the tracepoint is not used at all. The linker does not discard it. Build the various irq_vector tracepoints dependent on the appropriate CONFIG switches. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- arch/x86/include/asm/trace/irq_vectors.h | 36 ++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 12 deletions(-) --- a/arch/x86/include/asm/trace/irq_vectors.h +++ b/arch/x86/include/asm/trace/irq_vectors.h @@ -7,6 +7,8 @@ #include <linux/tracepoint.h> #include <asm/trace/common.h> +#ifdef CONFIG_X86_LOCAL_APIC + extern int trace_resched_ipi_reg(void); extern void trace_resched_ipi_unreg(void); @@ -53,18 +55,6 @@ DEFINE_EVENT_FN(x86_irq_vector, name##_e DEFINE_IRQ_VECTOR_EVENT(local_timer); /* - * The ifdef is required because that tracepoint macro hell emits tracepoint - * code in files which include this header even if the tracepoint is not - * enabled. Brilliant stuff that. - */ -#ifdef CONFIG_SMP -/* - * reschedule - called when entering/exiting a reschedule vector handler - */ -DEFINE_RESCHED_IPI_EVENT(reschedule); -#endif - -/* * spurious_apic - called when entering/exiting a spurious apic vector handler */ DEFINE_IRQ_VECTOR_EVENT(spurious_apic); @@ -80,6 +70,7 @@ DEFINE_IRQ_VECTOR_EVENT(error_apic); */ DEFINE_IRQ_VECTOR_EVENT(x86_platform_ipi); +#ifdef CONFIG_IRQ_WORK /* * irq_work - called when entering/exiting a irq work interrupt * vector handler @@ -96,6 +87,18 @@ DEFINE_IRQ_VECTOR_EVENT(irq_work); * 4) goto 1 */ TRACE_EVENT_PERF_PERM(irq_work_exit, is_sampling_event(p_event) ? -EPERM : 0); +#endif + +/* + * The ifdef is required because that tracepoint macro hell emits tracepoint + * code in files which include this header even if the tracepoint is not + * enabled. Brilliant stuff that. + */ +#ifdef CONFIG_SMP +/* + * reschedule - called when entering/exiting a reschedule vector handler + */ +DEFINE_RESCHED_IPI_EVENT(reschedule); /* * call_function - called when entering/exiting a call function interrupt @@ -108,24 +111,33 @@ DEFINE_IRQ_VECTOR_EVENT(call_function); * single interrupt vector handler */ DEFINE_IRQ_VECTOR_EVENT(call_function_single); +#endif +#ifdef CONFIG_X86_MCE_THRESHOLD /* * threshold_apic - called when entering/exiting a threshold apic interrupt * vector handler */ DEFINE_IRQ_VECTOR_EVENT(threshold_apic); +#endif +#ifdef CONFIG_X86_MCE_AMD /* * deferred_error_apic - called when entering/exiting a deferred apic interrupt * vector handler */ DEFINE_IRQ_VECTOR_EVENT(deferred_error_apic); +#endif +#ifdef CONFIG_X86_THERMAL_VECTOR /* * thermal_apic - called when entering/exiting a thermal apic interrupt * vector handler */ DEFINE_IRQ_VECTOR_EVENT(thermal_apic); +#endif + +#endif /* CONFIG_X86_LOCAL_APIC */ #undef TRACE_INCLUDE_PATH #define TRACE_INCLUDE_PATH .
Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread
[patch V3 21/44] x86/tracing: Build tracepoints only when they are used Thomas Gleixner <tglx@linutronix.de> - 2017-08-28 09:00 +0200 [tip:x86/apic] x86/tracing: Build tracepoints only when they are used tip-bot for Thomas Gleixner <tipbot@zytor.com> - 2017-08-29 13:20 +0200
csiph-web