From c8ad610bc3d41482f620af4df502e6f07126930f Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Tue, 26 May 2015 15:22:01 -0400 Subject: [PATCH] Fix: remove regmap instrumentation for kernels < 4.1 Modifications to regmap.h instrumentation in mainline Linux kernel has been no less than erratic. First, the public instrumentation header regmap.h include a private driver header in Linux 4.0. Then, regmap.h is moved to the private driver directory in Linux 4.1. To make things worse, the 4.0 commit has been picked into stable branches of the Linux kernel. Since this does not appear to be an instrumentation of utmost importance, only build this instrumentation probe if the private header is found in the driver directory (need full kernel sources). This removes regmap instrumentation for older kernels. Signed-off-by: Mathieu Desnoyers --- instrumentation/events/lttng-module/regmap.h | 172 ------------------- probes/Makefile | 22 +-- probes/lttng-probe-regmap.c | 5 - 3 files changed, 2 insertions(+), 197 deletions(-) diff --git a/instrumentation/events/lttng-module/regmap.h b/instrumentation/events/lttng-module/regmap.h index e1a27e73..72949878 100644 --- a/instrumentation/events/lttng-module/regmap.h +++ b/instrumentation/events/lttng-module/regmap.h @@ -14,7 +14,6 @@ struct device; struct regmap; #endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,4)) /* * Log register events */ @@ -57,52 +56,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_reg, regmap_reg_read, TP_ARGS(map, reg, val) ) -#else -/* - * Log register events - */ -LTTNG_TRACEPOINT_EVENT_CLASS(regmap_reg, - - TP_PROTO(struct device *dev, unsigned int reg, - unsigned int val), - - TP_ARGS(dev, reg, val), - - TP_STRUCT__entry( - __string( name, dev_name(dev) ) - __field( unsigned int, reg ) - __field( unsigned int, val ) - ), - - TP_fast_assign( - tp_strcpy(name, dev_name(dev)) - tp_assign(reg, reg) - tp_assign(val, val) - ), - - TP_printk("%s reg=%x val=%x", __get_str(name), - (unsigned int)__entry->reg, - (unsigned int)__entry->val) -) - -LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_reg, regmap_reg_write, - - TP_PROTO(struct device *dev, unsigned int reg, - unsigned int val), - - TP_ARGS(dev, reg, val) -) - -LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_reg, regmap_reg_read, - - TP_PROTO(struct device *dev, unsigned int reg, - unsigned int val), - TP_ARGS(dev, reg, val) -) -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,4)) LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_reg, regmap_reg_read_cache, TP_PROTO(struct regmap *map, unsigned int reg, @@ -110,17 +64,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_reg, regmap_reg_read_cache, TP_ARGS(map, reg, val) ) -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0)) -LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_reg, regmap_reg_read_cache, - - TP_PROTO(struct device *dev, unsigned int reg, - unsigned int val), - - TP_ARGS(dev, reg, val) -) -#endif -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,4)) LTTNG_TRACEPOINT_EVENT_CLASS(regmap_block, TP_PROTO(struct regmap *map, unsigned int reg, int count), @@ -171,60 +115,7 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_block, regmap_hw_write_done, TP_ARGS(map, reg, count) ) -#else -LTTNG_TRACEPOINT_EVENT_CLASS(regmap_block, - - TP_PROTO(struct device *dev, unsigned int reg, int count), - - TP_ARGS(dev, reg, count), - - TP_STRUCT__entry( - __string( name, dev_name(dev) ) - __field( unsigned int, reg ) - __field( int, count ) - ), - - TP_fast_assign( - tp_strcpy(name, dev_name(dev)) - tp_assign(reg, reg) - tp_assign(count, count) - ), - - TP_printk("%s reg=%x count=%d", __get_str(name), - (unsigned int)__entry->reg, - (int)__entry->count) -) - -LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_block, regmap_hw_read_start, - - TP_PROTO(struct device *dev, unsigned int reg, int count), - - TP_ARGS(dev, reg, count) -) -LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_block, regmap_hw_read_done, - - TP_PROTO(struct device *dev, unsigned int reg, int count), - - TP_ARGS(dev, reg, count) -) - -LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_block, regmap_hw_write_start, - - TP_PROTO(struct device *dev, unsigned int reg, int count), - - TP_ARGS(dev, reg, count) -) - -LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_block, regmap_hw_write_done, - - TP_PROTO(struct device *dev, unsigned int reg, int count), - - TP_ARGS(dev, reg, count) -) -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,4)) LTTNG_TRACEPOINT_EVENT(regcache_sync, TP_PROTO(struct regmap *map, const char *type, @@ -247,33 +138,7 @@ LTTNG_TRACEPOINT_EVENT(regcache_sync, TP_printk("%s type=%s status=%s", __get_str(name), __get_str(type), __get_str(status)) ) -#else -LTTNG_TRACEPOINT_EVENT(regcache_sync, - - TP_PROTO(struct device *dev, const char *type, - const char *status), - - TP_ARGS(dev, type, status), - - TP_STRUCT__entry( - __string( name, dev_name(dev) ) - __string( status, status ) - __string( type, type ) - ), - - TP_fast_assign( - tp_strcpy(name, dev_name(dev)) - tp_strcpy(status, status) - tp_strcpy(type, type) - ), - - TP_printk("%s type=%s status=%s", __get_str(name), - __get_str(type), __get_str(status)) -) -#endif - -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,19,4)) LTTNG_TRACEPOINT_EVENT_CLASS(regmap_bool, TP_PROTO(struct regmap *map, bool flag), @@ -307,43 +172,6 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_bool, regmap_cache_bypass, TP_ARGS(map, flag) ) -#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) -LTTNG_TRACEPOINT_EVENT_CLASS(regmap_bool, - - TP_PROTO(struct device *dev, bool flag), - - TP_ARGS(dev, flag), - - TP_STRUCT__entry( - __string( name, dev_name(dev) ) - __field( int, flag ) - ), - - TP_fast_assign( - tp_strcpy(name, dev_name(dev)) - tp_assign(flag, flag) - ), - - TP_printk("%s flag=%d", __get_str(name), - (int)__entry->flag) -) - -LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_bool, regmap_cache_only, - - TP_PROTO(struct device *dev, bool flag), - - TP_ARGS(dev, flag) - -) - -LTTNG_TRACEPOINT_EVENT_INSTANCE(regmap_bool, regmap_cache_bypass, - - TP_PROTO(struct device *dev, bool flag), - - TP_ARGS(dev, flag) - -) -#endif #endif /* LTTNG_TRACE_REGMAP_H */ diff --git a/probes/Makefile b/probes/Makefile index 3272b9f8..4de157b3 100644 --- a/probes/Makefile +++ b/probes/Makefile @@ -192,29 +192,11 @@ obj-m += $(shell \ echo "lttng-probe-rcu.o" ; fi;) ifneq ($(CONFIG_REGMAP),) -regmap_dep_3_x = $(srctree)/include/trace/events/regmap.h -regmap_dep_4_0 = $(srctree)/drivers/base/regmap/internal.h regmap_dep_4_1 = $(srctree)/drivers/base/regmap/trace.h - ifneq ($(wildcard $(regmap_dep_4_1)),) -obj-m += $(shell \ - if [ $(VERSION) -ge 5 \ - -o \( $(VERSION) -eq 4 -a $(PATCHLEVEL) -ge 1 \) ] ; then \ - echo "lttng-probe-regmap.o" ; fi;) -else -ifneq ($(wildcard $(regmap_dep_4_0)),) -obj-m += $(shell \ - if [ $(VERSION) -eq 4 -a $(PATCHLEVEL) -eq 0 ] ; then \ - echo "lttng-probe-regmap.o" ; fi;) +obj-m += lttng-probe-regmap.o else -ifneq ($(wildcard $(regmap_dep_3_x)),) -obj-m += $(shell \ - if [ $(VERSION) -eq 3 -a $(PATCHLEVEL) -ge 2 ] ; then \ - echo "lttng-probe-regmap.o" ; fi;) -else -$(warning Either of files $(regmap_dep_4_1), $(regmap_dep_4_0), or $(regmap_dep_3_x) not found. Probe "regmap" is disabled. Use full kernel source tree to enable it.) -endif -endif +$(warning File $(regmap_dep_4_1) not found. Probe "regmap" is disabled. Need Linux 4.1+ kernel source tree to enable it.) endif endif diff --git a/probes/lttng-probe-regmap.c b/probes/lttng-probe-regmap.c index c51924a0..f6856658 100644 --- a/probes/lttng-probe-regmap.c +++ b/probes/lttng-probe-regmap.c @@ -30,16 +30,11 @@ * Create the tracepoint static inlines from the kernel to validate that our * trace event macros match the kernel we run on. */ -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)) #include <../../drivers/base/regmap/trace.h> #undef TRACE_INCLUDE_PATH #undef TRACE_INCLUDE_FILE -#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)) */ -#include -#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,1,0)) */ - /* * Create LTTng tracepoint probes. */ -- 2.34.1