mirror of
https://git.yoctoproject.org/poky
synced 2026-05-09 17:39:31 +00:00
lttng-modules: fix compilation for 3.17-rcX
Updating the lttng-modules 2.5 recipe with backports from the master branch to enable builds on 3.17 based kernels. (From OE-Core rev: cc2ef9b0f6371837faa5e430c0b6c48bf24a8c4c) Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
e107239181
commit
73ef4032a9
+130
@@ -0,0 +1,130 @@
|
|||||||
|
Upstream-Status: Backport
|
||||||
|
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
|
||||||
|
|
||||||
|
From d3de7f1468be0b18145ff85b3c1a7c7fb1d48c15 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||||
|
Date: Fri, 25 Jul 2014 12:30:43 -0400
|
||||||
|
Subject: [PATCH 1/3] Fix: noargs probes should calculate alignment and event
|
||||||
|
length
|
||||||
|
|
||||||
|
A noargs probe could have event fields. noargs just means that the probe
|
||||||
|
does not receive any argument as parameter. However, it could very well
|
||||||
|
serialize data into fields (global variables, constants, etc).
|
||||||
|
|
||||||
|
It just happens that LTTng does not serialize any data in noargs events
|
||||||
|
at the moment, but this may very well change.
|
||||||
|
|
||||||
|
The if (0) with (void) variable access strategy to stop compiler from
|
||||||
|
complaining from unused variables does not seem to work as expected with
|
||||||
|
gcc 4.9.1. Use "unused" attribute instead.
|
||||||
|
|
||||||
|
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||||
|
---
|
||||||
|
probes/lttng-events.h | 49 +++++++++++++++++++++++++++++++++++--------------
|
||||||
|
1 file changed, 35 insertions(+), 14 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/probes/lttng-events.h b/probes/lttng-events.h
|
||||||
|
index 596b70608584..ba9563b15cf9 100644
|
||||||
|
--- a/probes/lttng-events.h
|
||||||
|
+++ b/probes/lttng-events.h
|
||||||
|
@@ -456,10 +456,19 @@ static __used struct lttng_probe_desc TP_ID(__probe_desc___, TRACE_SYSTEM) = {
|
||||||
|
static inline size_t __event_get_size__##_name(size_t *__dynamic_len, _proto) \
|
||||||
|
{ \
|
||||||
|
size_t __event_len = 0; \
|
||||||
|
- unsigned int __dynamic_len_idx = 0; \
|
||||||
|
+ unsigned int __dynamic_len_idx __attribute__((unused)) = 0; \
|
||||||
|
+ \
|
||||||
|
+ _tstruct \
|
||||||
|
+ return __event_len; \
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+#undef DECLARE_EVENT_CLASS_NOARGS
|
||||||
|
+#define DECLARE_EVENT_CLASS_NOARGS(_name, _tstruct, _assign, _print) \
|
||||||
|
+static inline size_t __event_get_size__##_name(size_t *__dynamic_len) \
|
||||||
|
+{ \
|
||||||
|
+ size_t __event_len = 0; \
|
||||||
|
+ unsigned int __dynamic_len_idx __attribute__((unused)) = 0; \
|
||||||
|
\
|
||||||
|
- if (0) \
|
||||||
|
- (void) __dynamic_len_idx; /* don't warn if unused */ \
|
||||||
|
_tstruct \
|
||||||
|
return __event_len; \
|
||||||
|
}
|
||||||
|
@@ -514,6 +523,15 @@ static inline size_t __event_get_align__##_name(_proto) \
|
||||||
|
return __event_align; \
|
||||||
|
}
|
||||||
|
|
||||||
|
+#undef DECLARE_EVENT_CLASS_NOARGS
|
||||||
|
+#define DECLARE_EVENT_CLASS_NOARGS(_name, _tstruct, _assign, _print) \
|
||||||
|
+static inline size_t __event_get_align__##_name(void) \
|
||||||
|
+{ \
|
||||||
|
+ size_t __event_align = 1; \
|
||||||
|
+ _tstruct \
|
||||||
|
+ return __event_align; \
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -553,12 +571,16 @@ static inline size_t __event_get_align__##_name(_proto) \
|
||||||
|
#undef TP_STRUCT__entry
|
||||||
|
#define TP_STRUCT__entry(args...) args
|
||||||
|
|
||||||
|
-#undef DECLARE_EVENT_CLASS
|
||||||
|
-#define DECLARE_EVENT_CLASS(_name, _proto, _args, _tstruct, _assign, _print) \
|
||||||
|
+#undef DECLARE_EVENT_CLASS_NOARGS
|
||||||
|
+#define DECLARE_EVENT_CLASS_NOARGS(_name, _tstruct, _assign, _print) \
|
||||||
|
struct __event_typemap__##_name { \
|
||||||
|
_tstruct \
|
||||||
|
};
|
||||||
|
|
||||||
|
+#undef DECLARE_EVENT_CLASS
|
||||||
|
+#define DECLARE_EVENT_CLASS(_name, _proto, _args, _tstruct, _assign, _print) \
|
||||||
|
+ DECLARE_EVENT_CLASS_NOARGS(_name, _tstruct, _assign, _print)
|
||||||
|
+
|
||||||
|
#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
|
||||||
|
|
||||||
|
|
||||||
|
@@ -760,15 +782,11 @@ static void __event_probe__##_name(void *__data, _proto) \
|
||||||
|
struct lttng_channel *__chan = __event->chan; \
|
||||||
|
struct lib_ring_buffer_ctx __ctx; \
|
||||||
|
size_t __event_len, __event_align; \
|
||||||
|
- size_t __dynamic_len_idx = 0; \
|
||||||
|
- size_t __dynamic_len[2 * ARRAY_SIZE(__event_fields___##_name)]; \
|
||||||
|
- struct __event_typemap__##_name __typemap; \
|
||||||
|
+ size_t __dynamic_len_idx __attribute__((unused)) = 0; \
|
||||||
|
+ size_t __dynamic_len[2 * ARRAY_SIZE(__event_fields___##_name)] __attribute__((unused)); \
|
||||||
|
+ struct __event_typemap__##_name __typemap __attribute__((unused)); \
|
||||||
|
int __ret; \
|
||||||
|
\
|
||||||
|
- if (0) { \
|
||||||
|
- (void) __dynamic_len_idx; /* don't warn if unused */ \
|
||||||
|
- (void) __typemap; /* don't warn if unused */ \
|
||||||
|
- } \
|
||||||
|
if (!_TP_SESSION_CHECK(session, __chan->session)) \
|
||||||
|
return; \
|
||||||
|
if (unlikely(!ACCESS_ONCE(__chan->session->active))) \
|
||||||
|
@@ -800,6 +818,9 @@ static void __event_probe__##_name(void *__data) \
|
||||||
|
struct lttng_channel *__chan = __event->chan; \
|
||||||
|
struct lib_ring_buffer_ctx __ctx; \
|
||||||
|
size_t __event_len, __event_align; \
|
||||||
|
+ size_t __dynamic_len_idx __attribute__((unused)) = 0; \
|
||||||
|
+ size_t __dynamic_len[2 * ARRAY_SIZE(__event_fields___##_name)] __attribute__((unused)); \
|
||||||
|
+ struct __event_typemap__##_name __typemap __attribute__((unused)); \
|
||||||
|
int __ret; \
|
||||||
|
\
|
||||||
|
if (!_TP_SESSION_CHECK(session, __chan->session)) \
|
||||||
|
@@ -810,8 +831,8 @@ static void __event_probe__##_name(void *__data) \
|
||||||
|
return; \
|
||||||
|
if (unlikely(!ACCESS_ONCE(__event->enabled))) \
|
||||||
|
return; \
|
||||||
|
- __event_len = 0; \
|
||||||
|
- __event_align = 1; \
|
||||||
|
+ __event_len = __event_get_size__##_name(__dynamic_len); \
|
||||||
|
+ __event_align = __event_get_align__##_name(); \
|
||||||
|
lib_ring_buffer_ctx_init(&__ctx, __chan->chan, __event, __event_len, \
|
||||||
|
__event_align, -1); \
|
||||||
|
__ret = __chan->ops->event_reserve(&__ctx, __event->id); \
|
||||||
|
--
|
||||||
|
1.8.1.2
|
||||||
|
|
||||||
+46
@@ -0,0 +1,46 @@
|
|||||||
|
Upstream-Status: Backport
|
||||||
|
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
|
||||||
|
|
||||||
|
From 458c2022e992c057bd21d02e4c77bcc7d4d6cd6c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||||
|
Date: Thu, 21 Aug 2014 11:15:50 -0400
|
||||||
|
Subject: [PATCH 3/3] Update kvm instrumentation: compile on 3.17-rc1
|
||||||
|
|
||||||
|
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||||
|
---
|
||||||
|
instrumentation/events/lttng-module/arch/x86/kvm/trace.h | 12 +++++++++++-
|
||||||
|
1 file changed, 11 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/instrumentation/events/lttng-module/arch/x86/kvm/trace.h b/instrumentation/events/lttng-module/arch/x86/kvm/trace.h
|
||||||
|
index 2354884074eb..3c299c58a1cf 100644
|
||||||
|
--- a/instrumentation/events/lttng-module/arch/x86/kvm/trace.h
|
||||||
|
+++ b/instrumentation/events/lttng-module/arch/x86/kvm/trace.h
|
||||||
|
@@ -724,7 +724,7 @@ TRACE_EVENT(kvm_emulate_insn,
|
||||||
|
tp_memcpy(insn,
|
||||||
|
vcpu->arch.emulate_ctxt.decode.fetch.data,
|
||||||
|
15)
|
||||||
|
-#else
|
||||||
|
+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0))
|
||||||
|
tp_assign(rip, vcpu->arch.emulate_ctxt.fetch.start)
|
||||||
|
tp_assign(csbase, kvm_x86_ops->get_segment_base(vcpu, VCPU_SREG_CS))
|
||||||
|
tp_assign(len, vcpu->arch.emulate_ctxt._eip
|
||||||
|
@@ -732,6 +732,16 @@ TRACE_EVENT(kvm_emulate_insn,
|
||||||
|
tp_memcpy(insn,
|
||||||
|
vcpu->arch.emulate_ctxt.fetch.data,
|
||||||
|
15)
|
||||||
|
+#else
|
||||||
|
+ tp_assign(rip, vcpu->arch.emulate_ctxt._eip -
|
||||||
|
+ (vcpu->arch.emulate_ctxt.fetch.ptr -
|
||||||
|
+ vcpu->arch.emulate_ctxt.fetch.data))
|
||||||
|
+ tp_assign(csbase, kvm_x86_ops->get_segment_base(vcpu, VCPU_SREG_CS))
|
||||||
|
+ tp_assign(len, vcpu->arch.emulate_ctxt.fetch.ptr -
|
||||||
|
+ vcpu->arch.emulate_ctxt.fetch.data)
|
||||||
|
+ tp_memcpy(insn,
|
||||||
|
+ vcpu->arch.emulate_ctxt.fetch.data,
|
||||||
|
+ 15)
|
||||||
|
#endif
|
||||||
|
tp_assign(flags, kei_decode_mode(vcpu->arch.emulate_ctxt.mode))
|
||||||
|
tp_assign(failed, failed)
|
||||||
|
--
|
||||||
|
1.8.1.2
|
||||||
|
|
||||||
+70
@@ -0,0 +1,70 @@
|
|||||||
|
Upstream-Status: Backport
|
||||||
|
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
|
||||||
|
|
||||||
|
From 4ba1f53c5aebb4433fedc25d65af010274985043 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||||
|
Date: Thu, 21 Aug 2014 10:53:12 -0400
|
||||||
|
Subject: [PATCH 2/3] Update statedump to 3.17 nsproxy locking
|
||||||
|
|
||||||
|
This Linux upstream commit introduces locking strategy back and forth:
|
||||||
|
|
||||||
|
commit 728dba3a39c66b3d8ac889ddbe38b5b1c264aec3
|
||||||
|
Author: Eric W. Biederman <ebiederm@xmission.com>
|
||||||
|
Date: Mon Feb 3 19:13:49 2014 -0800
|
||||||
|
|
||||||
|
namespaces: Use task_lock and not rcu to protect nsproxy
|
||||||
|
|
||||||
|
Use the task lock starting from kernel 3.17 rather than RCU to access
|
||||||
|
the task nsproxy.
|
||||||
|
|
||||||
|
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||||
|
---
|
||||||
|
lttng-statedump-impl.c | 15 +++++++++++++++
|
||||||
|
1 file changed, 15 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/lttng-statedump-impl.c b/lttng-statedump-impl.c
|
||||||
|
index dad51ddaa250..e4caa488e436 100644
|
||||||
|
--- a/lttng-statedump-impl.c
|
||||||
|
+++ b/lttng-statedump-impl.c
|
||||||
|
@@ -378,6 +378,9 @@ int lttng_list_interrupts(struct lttng_session *session)
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+/*
|
||||||
|
+ * Called with task lock held.
|
||||||
|
+ */
|
||||||
|
static
|
||||||
|
void lttng_statedump_process_ns(struct lttng_session *session,
|
||||||
|
struct task_struct *p,
|
||||||
|
@@ -389,8 +392,18 @@ void lttng_statedump_process_ns(struct lttng_session *session,
|
||||||
|
struct nsproxy *proxy;
|
||||||
|
struct pid_namespace *pid_ns;
|
||||||
|
|
||||||
|
+ /*
|
||||||
|
+ * Back and forth on locking strategy within Linux upstream for nsproxy.
|
||||||
|
+ * See Linux upstream commit 728dba3a39c66b3d8ac889ddbe38b5b1c264aec3
|
||||||
|
+ * "namespaces: Use task_lock and not rcu to protect nsproxy"
|
||||||
|
+ * for details.
|
||||||
|
+ */
|
||||||
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0))
|
||||||
|
rcu_read_lock();
|
||||||
|
proxy = task_nsproxy(p);
|
||||||
|
+#else /* #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)) */
|
||||||
|
+ proxy = p->nsproxy;
|
||||||
|
+#endif /* #else #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)) */
|
||||||
|
if (proxy) {
|
||||||
|
pid_ns = lttng_get_proxy_pid_ns(proxy);
|
||||||
|
do {
|
||||||
|
@@ -402,7 +415,9 @@ void lttng_statedump_process_ns(struct lttng_session *session,
|
||||||
|
trace_lttng_statedump_process_state(session,
|
||||||
|
p, type, mode, submode, status, NULL);
|
||||||
|
}
|
||||||
|
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0))
|
||||||
|
rcu_read_unlock();
|
||||||
|
+#endif /* #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,17,0)) */
|
||||||
|
}
|
||||||
|
|
||||||
|
static
|
||||||
|
--
|
||||||
|
1.8.1.2
|
||||||
|
|
||||||
@@ -18,6 +18,9 @@ SRC_URI = "git://git.lttng.org/lttng-modules.git;branch=stable-2.5 \
|
|||||||
file://lttng-modules-replace-KERNELDIR-with-KERNEL_SRC.patch \
|
file://lttng-modules-replace-KERNELDIR-with-KERNEL_SRC.patch \
|
||||||
file://Update-compaction-instrumentation-to-3.16-kernel.patch \
|
file://Update-compaction-instrumentation-to-3.16-kernel.patch \
|
||||||
file://Update-vmscan-instrumentation-to-3.16-kernel.patch \
|
file://Update-vmscan-instrumentation-to-3.16-kernel.patch \
|
||||||
|
file://Fix-noargs-probes-should-calculate-alignment-and-eve.patch \
|
||||||
|
file://Update-statedump-to-3.17-nsproxy-locking.patch \
|
||||||
|
file://Update-kvm-instrumentation-compile-on-3.17-rc1.patch \
|
||||||
"
|
"
|
||||||
|
|
||||||
export INSTALL_MOD_DIR="kernel/lttng-modules"
|
export INSTALL_MOD_DIR="kernel/lttng-modules"
|
||||||
|
|||||||
Reference in New Issue
Block a user