From f30ae671364af1a69a5c5ad562e10a38c1bbaf2e Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Wed, 27 May 2015 12:19:01 -0400 Subject: [PATCH] Fix: add RHEL version macros RHEL 7.1 has backported upstream patches that change the kvm.h tracepoint prototype. Add version check specific to RHEL to handle this case. RHEL 7.x has the required fixes backported that allow removing the 3.10 blacklist check for them, so take this into account. Signed-off-by: Mathieu Desnoyers --- instrumentation/events/lttng-module/kvm.h | 3 ++- lttng-kernel-version.h | 17 +++++++++++++++++ wrapper/trace-clock.h | 3 ++- 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/instrumentation/events/lttng-module/kvm.h b/instrumentation/events/lttng-module/kvm.h index eefa20df..87d605cb 100644 --- a/instrumentation/events/lttng-module/kvm.h +++ b/instrumentation/events/lttng-module/kvm.h @@ -197,7 +197,8 @@ LTTNG_TRACEPOINT_EVENT_INSTANCE(kvm_async_pf_nopresent_ready, kvm_async_pf_ready TP_ARGS(token, gva) ) -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,13,0) \ + || LTTNG_RHEL_KERNEL_RANGE(3,10,0,7,1, 3,11,0,0,0)) LTTNG_TRACEPOINT_EVENT( kvm_async_pf_completed, diff --git a/lttng-kernel-version.h b/lttng-kernel-version.h index 1afdcd34..f98a1925 100644 --- a/lttng-kernel-version.h +++ b/lttng-kernel-version.h @@ -73,4 +73,21 @@ LTTNG_DEBIAN_VERSION_CODE < \ LTTNG_DEBIAN_KERNEL_VERSION(a_high, b_high, c_high, d_high, e_high, f_high)) +#define LTTNG_RHEL_KERNEL_VERSION(a, b, c, d, e) \ + (((a) * (1ULL << 32)) + ((b) << 24) + ((c) << 16) + ((d) << 8) + (e)) + +#ifdef RHEL_RELEASE_CODE +#define LTTNG_RHEL_VERSION_CODE \ + ((LINUX_VERSION_CODE * (1ULL << 16)) + RHEL_RELEASE_CODE) +#else +#define LTTNG_RHEL_VERSION_CODE 0 +#endif + +#define LTTNG_RHEL_KERNEL_RANGE(a_low, b_low, c_low, d_low, e_low, \ + a_high, b_high, c_high, d_high, e_high) \ + (LTTNG_RHEL_VERSION_CODE >= \ + LTTNG_RHEL_KERNEL_VERSION(a_low, b_low, c_low, d_low, e_low) && \ + LTTNG_RHEL_VERSION_CODE < \ + LTTNG_RHEL_KERNEL_VERSION(a_high, b_high, c_high, d_high, e_high)) + #endif /* _LTTNG_KERNEL_VERSION_H */ diff --git a/wrapper/trace-clock.h b/wrapper/trace-clock.h index 1b2821a1..d7d18429 100644 --- a/wrapper/trace-clock.h +++ b/wrapper/trace-clock.h @@ -39,7 +39,8 @@ #include "percpu-defs.h" #include "random.h" -#if LTTNG_KERNEL_RANGE(3,10,0, 3,10,14) || LTTNG_KERNEL_RANGE(3,11,0, 3,11,3) +#if ((LTTNG_KERNEL_RANGE(3,10,0, 3,10,14) && !LTTNG_RHEL_KERNEL_RANGE(3,10,0,7,0, 3,10,14,0,0)) \ + || LTTNG_KERNEL_RANGE(3,11,0, 3,11,3)) #error "Linux kernels 3.10 and 3.11 introduce a deadlock in the timekeeping subsystem. Fixed by commit 7bd36014460f793c19e7d6c94dab67b0afcfcb7f \"timekeeping: Fix HRTICK related deadlock from ntp lock changes\" in Linux." #endif -- 2.34.1