]> git.pld-linux.org Git - packages/lttng-modules.git/commitdiff
- up to 2.10.5
authorJan Rękorajski <baggins@pld-linux.org>
Fri, 6 Apr 2018 20:55:33 +0000 (22:55 +0200)
committerJan Rękorajski <baggins@pld-linux.org>
Fri, 6 Apr 2018 20:55:33 +0000 (22:55 +0200)
kernel-4.15-atomics.patch [deleted file]
kernel-4.15-timers.patch [deleted file]
kmem-update.patch [deleted file]
kvm-update.patch [deleted file]
lttng-modules.spec
sock-update.patch [deleted file]

diff --git a/kernel-4.15-atomics.patch b/kernel-4.15-atomics.patch
deleted file mode 100644 (file)
index aa095d8..0000000
+++ /dev/null
@@ -1,568 +0,0 @@
-From a8f2d0c75c9cc179fc9e7f7ca17ea3b3b3b5af41 Mon Sep 17 00:00:00 2001
-From: Michael Jeanson <mjeanson@efficios.com>
-Date: Tue, 19 Dec 2017 15:06:42 -0500
-Subject: [PATCH] Fix: ACCESS_ONCE() removed in kernel 4.15
-
-The ACCESS_ONCE() macro was removed in kernel 4.15 and should be
-replaced by READ_ONCE and WRITE_ONCE which were introduced in kernel
-3.19.
-
-This commit replaces all calls to ACCESS_ONCE() with the appropriate
-READ_ONCE or WRITE_ONCE and adds compatibility macros for kernels that
-have them.
-
-See this upstream commit:
-
-  commit b03a0fe0c5e4b46dcd400d27395b124499554a71
-  Author: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
-  Date:   Mon Oct 23 14:07:25 2017 -0700
-
-    locking/atomics, mm: Convert ACCESS_ONCE() to READ_ONCE()/WRITE_ONCE()
-
-    For several reasons, it is desirable to use {READ,WRITE}_ONCE() in
-    preference to ACCESS_ONCE(), and new code is expected to use one of the
-    former. So far, there's been no reason to change most existing uses of
-    ACCESS_ONCE(), as these aren't currently harmful.
-
-    However, for some features it is necessary to instrument reads and
-    writes separately, which is not possible with ACCESS_ONCE(). This
-    distinction is critical to correct operation.
-
-    It's possible to transform the bulk of kernel code using the Coccinelle
-    script below. However, this doesn't handle comments, leaving references
-    to ACCESS_ONCE() instances which have been removed. As a preparatory
-    step, this patch converts the mm code and comments to use
-    {READ,WRITE}_ONCE() consistently.
-
-    ----
-    virtual patch
-
-    @ depends on patch @
-    expression E1, E2;
-    @@
-
-    - ACCESS_ONCE(E1) = E2
-    + WRITE_ONCE(E1, E2)
-
-    @ depends on patch @
-    expression E;
-    @@
-
-    - ACCESS_ONCE(E)
-    + READ_ONCE(E)
-    ----
-
-Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
----
- instrumentation/events/lttng-module/i2c.h |  4 ++--
- lib/ringbuffer/backend.h                  |  2 +-
- lib/ringbuffer/backend_internal.h         |  7 ++++---
- lib/ringbuffer/frontend.h                 |  2 +-
- lib/ringbuffer/ring_buffer_frontend.c     | 10 +++++-----
- lib/ringbuffer/ring_buffer_iterator.c     |  2 +-
- lttng-clock.c                             |  6 +++---
- lttng-events.c                            | 30 +++++++++++++++---------------
- probes/lttng-ftrace.c                     | 12 ++++++------
- probes/lttng-kprobes.c                    |  6 +++---
- probes/lttng-kretprobes.c                 | 10 +++++-----
- probes/lttng-tracepoint-event-impl.h      | 12 ++++++------
- wrapper/compiler.h                        | 13 +++++++++++++
- wrapper/trace-clock.h                     | 11 ++++++-----
- 14 files changed, 71 insertions(+), 56 deletions(-)
-
-diff --git a/instrumentation/events/lttng-module/i2c.h b/instrumentation/events/lttng-module/i2c.h
-index 4088b60..dd91c9b 100644
---- a/instrumentation/events/lttng-module/i2c.h
-+++ b/instrumentation/events/lttng-module/i2c.h
-@@ -22,7 +22,7 @@ LTTNG_TRACEPOINT_EVENT_CODE(i2c_write,
-       TP_code_pre(
-               tp_locvar->extract_sensitive_payload =
--                      ACCESS_ONCE(extract_sensitive_payload);
-+                      READ_ONCE(extract_sensitive_payload);
-       ),
-       TP_FIELDS(
-@@ -77,7 +77,7 @@ LTTNG_TRACEPOINT_EVENT_CODE(i2c_reply,
-       TP_code_pre(
-               tp_locvar->extract_sensitive_payload =
--                      ACCESS_ONCE(extract_sensitive_payload);
-+                      READ_ONCE(extract_sensitive_payload);
-       ),
-       TP_FIELDS(
-diff --git a/lib/ringbuffer/backend.h b/lib/ringbuffer/backend.h
-index 9db0095..0b75de8 100644
---- a/lib/ringbuffer/backend.h
-+++ b/lib/ringbuffer/backend.h
-@@ -169,7 +169,7 @@ size_t lib_ring_buffer_do_strcpy(const struct lib_ring_buffer_config *config,
-                * Only read source character once, in case it is
-                * modified concurrently.
-                */
--              c = ACCESS_ONCE(src[count]);
-+              c = READ_ONCE(src[count]);
-               if (!c)
-                       break;
-               lib_ring_buffer_do_copy(config, &dest[count], &c, 1);
-diff --git a/lib/ringbuffer/backend_internal.h b/lib/ringbuffer/backend_internal.h
-index 2e59b68..dc69ecf 100644
---- a/lib/ringbuffer/backend_internal.h
-+++ b/lib/ringbuffer/backend_internal.h
-@@ -23,6 +23,7 @@
-  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-  */
-+#include <wrapper/compiler.h>
- #include <wrapper/ringbuffer/config.h>
- #include <wrapper/ringbuffer/backend_types.h>
- #include <wrapper/ringbuffer/frontend_types.h>
-@@ -171,7 +172,7 @@ void subbuffer_id_set_noref_offset(const struct lib_ring_buffer_config *config,
-               tmp |= offset << SB_ID_OFFSET_SHIFT;
-               tmp |= SB_ID_NOREF_MASK;
-               /* Volatile store, read concurrently by readers. */
--              ACCESS_ONCE(*id) = tmp;
-+              WRITE_ONCE(*id, tmp);
-       }
- }
-@@ -379,7 +380,7 @@ void lib_ring_buffer_clear_noref(const struct lib_ring_buffer_config *config,
-        * Performing a volatile access to read the sb_pages, because we want to
-        * read a coherent version of the pointer and the associated noref flag.
-        */
--      id = ACCESS_ONCE(bufb->buf_wsb[idx].id);
-+      id = READ_ONCE(bufb->buf_wsb[idx].id);
-       for (;;) {
-               /* This check is called on the fast path for each record. */
-               if (likely(!subbuffer_id_is_noref(config, id))) {
-@@ -448,7 +449,7 @@ int update_read_sb_index(const struct lib_ring_buffer_config *config,
-       if (config->mode == RING_BUFFER_OVERWRITE) {
-               /*
-                * Exchange the target writer subbuffer with our own unused
--               * subbuffer. No need to use ACCESS_ONCE() here to read the
-+               * subbuffer. No need to use READ_ONCE() here to read the
-                * old_wpage, because the value read will be confirmed by the
-                * following cmpxchg().
-                */
-diff --git a/lib/ringbuffer/frontend.h b/lib/ringbuffer/frontend.h
-index 909abc2..1450cb7 100644
---- a/lib/ringbuffer/frontend.h
-+++ b/lib/ringbuffer/frontend.h
-@@ -168,7 +168,7 @@ static inline
- int lib_ring_buffer_is_finalized(const struct lib_ring_buffer_config *config,
-                                struct lib_ring_buffer *buf)
- {
--      int finalized = ACCESS_ONCE(buf->finalized);
-+      int finalized = READ_ONCE(buf->finalized);
-       /*
-        * Read finalized before counters.
-        */
-diff --git a/lib/ringbuffer/ring_buffer_frontend.c b/lib/ringbuffer/ring_buffer_frontend.c
-index abd9757..0d8279b 100644
---- a/lib/ringbuffer/ring_buffer_frontend.c
-+++ b/lib/ringbuffer/ring_buffer_frontend.c
-@@ -983,7 +983,7 @@ void *channel_destroy(struct channel *chan)
-                        * Perform flush before writing to finalized.
-                        */
-                       smp_wmb();
--                      ACCESS_ONCE(buf->finalized) = 1;
-+                      WRITE_ONCE(buf->finalized, 1);
-                       wake_up_interruptible(&buf->read_wait);
-               }
-       } else {
-@@ -997,10 +997,10 @@ void *channel_destroy(struct channel *chan)
-                * Perform flush before writing to finalized.
-                */
-               smp_wmb();
--              ACCESS_ONCE(buf->finalized) = 1;
-+              WRITE_ONCE(buf->finalized, 1);
-               wake_up_interruptible(&buf->read_wait);
-       }
--      ACCESS_ONCE(chan->finalized) = 1;
-+      WRITE_ONCE(chan->finalized, 1);
-       wake_up_interruptible(&chan->hp_wait);
-       wake_up_interruptible(&chan->read_wait);
-       priv = chan->backend.priv;
-@@ -1077,7 +1077,7 @@ int lib_ring_buffer_snapshot(struct lib_ring_buffer *buf,
-       int finalized;
- retry:
--      finalized = ACCESS_ONCE(buf->finalized);
-+      finalized = READ_ONCE(buf->finalized);
-       /*
-        * Read finalized before counters.
-        */
-@@ -1248,7 +1248,7 @@ int lib_ring_buffer_get_subbuf(struct lib_ring_buffer *buf,
-               return -EBUSY;
-       }
- retry:
--      finalized = ACCESS_ONCE(buf->finalized);
-+      finalized = READ_ONCE(buf->finalized);
-       /*
-        * Read finalized before counters.
-        */
-diff --git a/lib/ringbuffer/ring_buffer_iterator.c b/lib/ringbuffer/ring_buffer_iterator.c
-index b6bec48..61eaa5b 100644
---- a/lib/ringbuffer/ring_buffer_iterator.c
-+++ b/lib/ringbuffer/ring_buffer_iterator.c
-@@ -61,7 +61,7 @@ ssize_t lib_ring_buffer_get_next_record(struct channel *chan,
-       switch (iter->state) {
-       case ITER_GET_SUBBUF:
-               ret = lib_ring_buffer_get_next_subbuf(buf);
--              if (ret && !ACCESS_ONCE(buf->finalized)
-+              if (ret && !READ_ONCE(buf->finalized)
-                   && config->alloc == RING_BUFFER_ALLOC_GLOBAL) {
-                       /*
-                        * Use "pull" scheme for global buffers. The reader
-diff --git a/lttng-clock.c b/lttng-clock.c
-index a5a7eaa..48b4be5 100644
---- a/lttng-clock.c
-+++ b/lttng-clock.c
-@@ -48,7 +48,7 @@ int lttng_clock_register_plugin(struct lttng_trace_clock *ltc,
-               goto end;
-       }
-       /* set clock */
--      ACCESS_ONCE(lttng_trace_clock) = ltc;
-+      WRITE_ONCE(lttng_trace_clock, ltc);
-       lttng_trace_clock_mod = mod;
- end:
-       mutex_unlock(&clock_mutex);
-@@ -66,7 +66,7 @@ void lttng_clock_unregister_plugin(struct lttng_trace_clock *ltc,
-       }
-       WARN_ON_ONCE(lttng_trace_clock_mod != mod);
--      ACCESS_ONCE(lttng_trace_clock) = NULL;
-+      WRITE_ONCE(lttng_trace_clock, NULL);
-       lttng_trace_clock_mod = NULL;
- end:
-       mutex_unlock(&clock_mutex);
-@@ -83,7 +83,7 @@ void lttng_clock_ref(void)
-               ret = try_module_get(lttng_trace_clock_mod);
-               if (!ret) {
-                       printk(KERN_ERR "LTTng-clock cannot get clock plugin module\n");
--                      ACCESS_ONCE(lttng_trace_clock) = NULL;
-+                      WRITE_ONCE(lttng_trace_clock, NULL);
-                       lttng_trace_clock_mod = NULL;
-               }
-       }
-diff --git a/lttng-events.c b/lttng-events.c
-index 21c4113..75c3fb1 100644
---- a/lttng-events.c
-+++ b/lttng-events.c
-@@ -186,7 +186,7 @@ void lttng_session_destroy(struct lttng_session *session)
-       int ret;
-       mutex_lock(&sessions_mutex);
--      ACCESS_ONCE(session->active) = 0;
-+      WRITE_ONCE(session->active, 0);
-       list_for_each_entry(chan, &session->chan, list) {
-               ret = lttng_syscalls_unregister(chan);
-               WARN_ON(ret);
-@@ -261,16 +261,16 @@ int lttng_session_enable(struct lttng_session *session)
-                       lib_ring_buffer_clear_quiescent_channel(chan->chan);
-       }
--      ACCESS_ONCE(session->active) = 1;
--      ACCESS_ONCE(session->been_active) = 1;
-+      WRITE_ONCE(session->active, 1);
-+      WRITE_ONCE(session->been_active, 1);
-       ret = _lttng_session_metadata_statedump(session);
-       if (ret) {
--              ACCESS_ONCE(session->active) = 0;
-+              WRITE_ONCE(session->active, 0);
-               goto end;
-       }
-       ret = lttng_statedump_start(session);
-       if (ret)
--              ACCESS_ONCE(session->active) = 0;
-+              WRITE_ONCE(session->active, 0);
- end:
-       mutex_unlock(&sessions_mutex);
-       return ret;
-@@ -286,7 +286,7 @@ int lttng_session_disable(struct lttng_session *session)
-               ret = -EBUSY;
-               goto end;
-       }
--      ACCESS_ONCE(session->active) = 0;
-+      WRITE_ONCE(session->active, 0);
-       /* Set transient enabler state to "disabled" */
-       session->tstate = 0;
-@@ -361,7 +361,7 @@ int lttng_channel_enable(struct lttng_channel *channel)
-       channel->tstate = 1;
-       lttng_session_sync_enablers(channel->session);
-       /* Set atomically the state to "enabled" */
--      ACCESS_ONCE(channel->enabled) = 1;
-+      WRITE_ONCE(channel->enabled, 1);
- end:
-       mutex_unlock(&sessions_mutex);
-       return ret;
-@@ -381,7 +381,7 @@ int lttng_channel_disable(struct lttng_channel *channel)
-               goto end;
-       }
-       /* Set atomically the state to "disabled" */
--      ACCESS_ONCE(channel->enabled) = 0;
-+      WRITE_ONCE(channel->enabled, 0);
-       /* Set transient enabler state to "enabled" */
-       channel->tstate = 0;
-       lttng_session_sync_enablers(channel->session);
-@@ -411,7 +411,7 @@ int lttng_event_enable(struct lttng_event *event)
-       case LTTNG_KERNEL_KPROBE:
-       case LTTNG_KERNEL_FUNCTION:
-       case LTTNG_KERNEL_NOOP:
--              ACCESS_ONCE(event->enabled) = 1;
-+              WRITE_ONCE(event->enabled, 1);
-               break;
-       case LTTNG_KERNEL_KRETPROBE:
-               ret = lttng_kretprobes_event_enable_state(event, 1);
-@@ -446,7 +446,7 @@ int lttng_event_disable(struct lttng_event *event)
-       case LTTNG_KERNEL_KPROBE:
-       case LTTNG_KERNEL_FUNCTION:
-       case LTTNG_KERNEL_NOOP:
--              ACCESS_ONCE(event->enabled) = 0;
-+              WRITE_ONCE(event->enabled, 0);
-               break;
-       case LTTNG_KERNEL_KRETPROBE:
-               ret = lttng_kretprobes_event_enable_state(event, 0);
-@@ -1517,7 +1517,7 @@ void lttng_session_sync_enablers(struct lttng_session *session)
-                */
-               enabled = enabled && session->tstate && event->chan->tstate;
--              ACCESS_ONCE(event->enabled) = enabled;
-+              WRITE_ONCE(event->enabled, enabled);
-               /*
-                * Sync tracepoint registration with event enabled
-                * state.
-@@ -1643,7 +1643,7 @@ int lttng_metadata_printf(struct lttng_session *session,
-       va_list ap;
-       struct lttng_metadata_stream *stream;
--      WARN_ON_ONCE(!ACCESS_ONCE(session->active));
-+      WARN_ON_ONCE(!READ_ONCE(session->active));
-       va_start(ap, fmt);
-       str = kvasprintf(GFP_KERNEL, fmt, ap);
-@@ -2230,7 +2230,7 @@ int _lttng_event_metadata_statedump(struct lttng_session *session,
- {
-       int ret = 0;
--      if (event->metadata_dumped || !ACCESS_ONCE(session->active))
-+      if (event->metadata_dumped || !READ_ONCE(session->active))
-               return 0;
-       if (chan->channel_type == METADATA_CHANNEL)
-               return 0;
-@@ -2297,7 +2297,7 @@ int _lttng_channel_metadata_statedump(struct lttng_session *session,
- {
-       int ret = 0;
--      if (chan->metadata_dumped || !ACCESS_ONCE(session->active))
-+      if (chan->metadata_dumped || !READ_ONCE(session->active))
-               return 0;
-       if (chan->channel_type == METADATA_CHANNEL)
-@@ -2454,7 +2454,7 @@ int _lttng_session_metadata_statedump(struct lttng_session *session)
-       struct lttng_event *event;
-       int ret = 0;
--      if (!ACCESS_ONCE(session->active))
-+      if (!READ_ONCE(session->active))
-               return 0;
-       if (session->metadata_dumped)
-               goto skip_session;
-diff --git a/probes/lttng-ftrace.c b/probes/lttng-ftrace.c
-index 9ec326e..50675a4 100644
---- a/probes/lttng-ftrace.c
-+++ b/probes/lttng-ftrace.c
-@@ -58,11 +58,11 @@ void lttng_ftrace_handler(unsigned long ip, unsigned long parent_ip,
-       } payload;
-       int ret;
--      if (unlikely(!ACCESS_ONCE(chan->session->active)))
-+      if (unlikely(!READ_ONCE(chan->session->active)))
-               return;
--      if (unlikely(!ACCESS_ONCE(chan->enabled)))
-+      if (unlikely(!READ_ONCE(chan->enabled)))
-               return;
--      if (unlikely(!ACCESS_ONCE(event->enabled)))
-+      if (unlikely(!READ_ONCE(event->enabled)))
-               return;
-       lib_ring_buffer_ctx_init(&ctx, chan->chan, &lttng_probe_ctx,
-@@ -94,11 +94,11 @@ void lttng_ftrace_handler(unsigned long ip, unsigned long parent_ip, void **data
-       } payload;
-       int ret;
--      if (unlikely(!ACCESS_ONCE(chan->session->active)))
-+      if (unlikely(!READ_ONCE(chan->session->active)))
-               return;
--      if (unlikely(!ACCESS_ONCE(chan->enabled)))
-+      if (unlikely(!READ_ONCE(chan->enabled)))
-               return;
--      if (unlikely(!ACCESS_ONCE(event->enabled)))
-+      if (unlikely(!READ_ONCE(event->enabled)))
-               return;
-       lib_ring_buffer_ctx_init(&ctx, chan->chan, &lttng_probe_ctx,
-diff --git a/probes/lttng-kprobes.c b/probes/lttng-kprobes.c
-index daf14ce..b58a09b 100644
---- a/probes/lttng-kprobes.c
-+++ b/probes/lttng-kprobes.c
-@@ -43,11 +43,11 @@ int lttng_kprobes_handler_pre(struct kprobe *p, struct pt_regs *regs)
-       int ret;
-       unsigned long data = (unsigned long) p->addr;
--      if (unlikely(!ACCESS_ONCE(chan->session->active)))
-+      if (unlikely(!READ_ONCE(chan->session->active)))
-               return 0;
--      if (unlikely(!ACCESS_ONCE(chan->enabled)))
-+      if (unlikely(!READ_ONCE(chan->enabled)))
-               return 0;
--      if (unlikely(!ACCESS_ONCE(event->enabled)))
-+      if (unlikely(!READ_ONCE(event->enabled)))
-               return 0;
-       lib_ring_buffer_ctx_init(&ctx, chan->chan, &lttng_probe_ctx, sizeof(data),
-diff --git a/probes/lttng-kretprobes.c b/probes/lttng-kretprobes.c
-index 498df62..49b7de8 100644
---- a/probes/lttng-kretprobes.c
-+++ b/probes/lttng-kretprobes.c
-@@ -63,11 +63,11 @@ int _lttng_kretprobes_handler(struct kretprobe_instance *krpi,
-               unsigned long parent_ip;
-       } payload;
--      if (unlikely(!ACCESS_ONCE(chan->session->active)))
-+      if (unlikely(!READ_ONCE(chan->session->active)))
-               return 0;
--      if (unlikely(!ACCESS_ONCE(chan->enabled)))
-+      if (unlikely(!READ_ONCE(chan->enabled)))
-               return 0;
--      if (unlikely(!ACCESS_ONCE(event->enabled)))
-+      if (unlikely(!READ_ONCE(event->enabled)))
-               return 0;
-       payload.ip = (unsigned long) krpi->rp->kp.addr;
-@@ -304,8 +304,8 @@ int lttng_kretprobes_event_enable_state(struct lttng_event *event,
-       }
-       lttng_krp = event->u.kretprobe.lttng_krp;
-       event_return = lttng_krp->event[EVENT_RETURN];
--      ACCESS_ONCE(event->enabled) = enable;
--      ACCESS_ONCE(event_return->enabled) = enable;
-+      WRITE_ONCE(event->enabled, enable);
-+      WRITE_ONCE(event_return->enabled, enable);
-       return 0;
- }
- EXPORT_SYMBOL_GPL(lttng_kretprobes_event_enable_state);
-diff --git a/probes/lttng-tracepoint-event-impl.h b/probes/lttng-tracepoint-event-impl.h
-index 7ec0d75..61f1c2d 100644
---- a/probes/lttng-tracepoint-event-impl.h
-+++ b/probes/lttng-tracepoint-event-impl.h
-@@ -1143,11 +1143,11 @@ static void __event_probe__##_name(void *__data, _proto)                     \
-                                                                             \
-       if (!_TP_SESSION_CHECK(session, __session))                           \
-               return;                                                       \
--      if (unlikely(!ACCESS_ONCE(__session->active)))                        \
-+      if (unlikely(!READ_ONCE(__session->active)))                          \
-               return;                                                       \
--      if (unlikely(!ACCESS_ONCE(__chan->enabled)))                          \
-+      if (unlikely(!READ_ONCE(__chan->enabled)))                            \
-               return;                                                       \
--      if (unlikely(!ACCESS_ONCE(__event->enabled)))                         \
-+      if (unlikely(!READ_ONCE(__event->enabled)))                           \
-               return;                                                       \
-       __lpf = lttng_rcu_dereference(__session->pid_tracker);                \
-       if (__lpf && likely(!lttng_pid_tracker_lookup(__lpf, current->tgid))) \
-@@ -1217,11 +1217,11 @@ static void __event_probe__##_name(void *__data)                             \
-                                                                             \
-       if (!_TP_SESSION_CHECK(session, __session))                           \
-               return;                                                       \
--      if (unlikely(!ACCESS_ONCE(__session->active)))                        \
-+      if (unlikely(!READ_ONCE(__session->active)))                          \
-               return;                                                       \
--      if (unlikely(!ACCESS_ONCE(__chan->enabled)))                          \
-+      if (unlikely(!READ_ONCE(__chan->enabled)))                            \
-               return;                                                       \
--      if (unlikely(!ACCESS_ONCE(__event->enabled)))                         \
-+      if (unlikely(!READ_ONCE(__event->enabled)))                           \
-               return;                                                       \
-       __lpf = lttng_rcu_dereference(__session->pid_tracker);                \
-       if (__lpf && likely(!lttng_pid_tracker_lookup(__lpf, current->pid)))  \
-diff --git a/wrapper/compiler.h b/wrapper/compiler.h
-index 0c01632..e4533d4 100644
---- a/wrapper/compiler.h
-+++ b/wrapper/compiler.h
-@@ -39,4 +39,17 @@
- # endif
- #endif
-+/*
-+ * READ/WRITE_ONCE were introduced in kernel 3.19 and ACCESS_ONCE
-+ * was removed in 4.15. Prefer READ/WRITE but fallback to ACCESS
-+ * when they are not available.
-+ */
-+#ifndef READ_ONCE
-+# define READ_ONCE(x)         ACCESS_ONCE(x)
-+#endif
-+
-+#ifndef WRITE_ONCE
-+# define WRITE_ONCE(x, val)   ({ ACCESS_ONCE(x) = val; })
-+#endif
-+
- #endif /* _LTTNG_WRAPPER_COMPILER_H */
-diff --git a/wrapper/trace-clock.h b/wrapper/trace-clock.h
-index 7f17ccd..08f9922 100644
---- a/wrapper/trace-clock.h
-+++ b/wrapper/trace-clock.h
-@@ -37,6 +37,7 @@
- #include <asm/local.h>
- #include <lttng-kernel-version.h>
- #include <lttng-clock.h>
-+#include <wrapper/compiler.h>
- #include <wrapper/percpu-defs.h>
- #include <wrapper/random.h>
-@@ -176,7 +177,7 @@ static inline void put_trace_clock(void)
- static inline u64 trace_clock_read64(void)
- {
--      struct lttng_trace_clock *ltc = ACCESS_ONCE(lttng_trace_clock);
-+      struct lttng_trace_clock *ltc = READ_ONCE(lttng_trace_clock);
-       if (likely(!ltc)) {
-               return trace_clock_read64_monotonic();
-@@ -188,7 +189,7 @@ static inline u64 trace_clock_read64(void)
- static inline u64 trace_clock_freq(void)
- {
--      struct lttng_trace_clock *ltc = ACCESS_ONCE(lttng_trace_clock);
-+      struct lttng_trace_clock *ltc = READ_ONCE(lttng_trace_clock);
-       if (!ltc) {
-               return trace_clock_freq_monotonic();
-@@ -200,7 +201,7 @@ static inline u64 trace_clock_freq(void)
- static inline int trace_clock_uuid(char *uuid)
- {
--      struct lttng_trace_clock *ltc = ACCESS_ONCE(lttng_trace_clock);
-+      struct lttng_trace_clock *ltc = READ_ONCE(lttng_trace_clock);
-       read_barrier_depends(); /* load ltc before content */
-       /* Use default UUID cb when NULL */
-@@ -213,7 +214,7 @@ static inline int trace_clock_uuid(char *uuid)
- static inline const char *trace_clock_name(void)
- {
--      struct lttng_trace_clock *ltc = ACCESS_ONCE(lttng_trace_clock);
-+      struct lttng_trace_clock *ltc = READ_ONCE(lttng_trace_clock);
-       if (!ltc) {
-               return trace_clock_name_monotonic();
-@@ -225,7 +226,7 @@ static inline const char *trace_clock_name(void)
- static inline const char *trace_clock_description(void)
- {
--      struct lttng_trace_clock *ltc = ACCESS_ONCE(lttng_trace_clock);
-+      struct lttng_trace_clock *ltc = READ_ONCE(lttng_trace_clock);
-       if (!ltc) {
-               return trace_clock_description_monotonic();
diff --git a/kernel-4.15-timers.patch b/kernel-4.15-timers.patch
deleted file mode 100644 (file)
index 0e412ec..0000000
+++ /dev/null
@@ -1,328 +0,0 @@
-From 1fd97f9f4f773e3e9dfc787e9c90b1418fa5a7d4 Mon Sep 17 00:00:00 2001
-From: Michael Jeanson <mjeanson@efficios.com>
-Date: Wed, 29 Nov 2017 17:03:21 -0500
-Subject: [PATCH] timer API transition for kernel 4.15
-
-The timer API changes starting from kernel 4.15.0.
-
-There's an interresting LWN article on this subject:
-
-  https://lwn.net/Articles/735887/
-
-Check these upstream commits for more details:
-
-  commit 686fef928bba6be13cabe639f154af7d72b63120
-  Author: Kees Cook <keescook@chromium.org>
-  Date:   Thu Sep 28 06:38:17 2017 -0700
-
-    timer: Prepare to change timer callback argument type
-
-    Modern kernel callback systems pass the structure associated with a
-    given callback to the callback function. The timer callback remains one
-    of the legacy cases where an arbitrary unsigned long argument continues
-    to be passed as the callback argument. This has several problems:
-
-    - This bloats the timer_list structure with a normally redundant
-      .data field.
-
-    - No type checking is being performed, forcing callbacks to do
-      explicit type casts of the unsigned long argument into the object
-      that was passed, rather than using container_of(), as done in most
-      of the other callback infrastructure.
-
-    - Neighboring buffer overflows can overwrite both the .function and
-      the .data field, providing attackers with a way to elevate from a buffer
-      overflow into a simplistic ROP-like mechanism that allows calling
-      arbitrary functions with a controlled first argument.
-
-    - For future Control Flow Integrity work, this creates a unique function
-      prototype for timer callbacks, instead of allowing them to continue to
-      be clustered with other void functions that take a single unsigned long
-      argument.
-
-    This adds a new timer initialization API, which will ultimately replace
-    the existing setup_timer(), setup_{deferrable,pinned,etc}_timer() family,
-    named timer_setup() (to mirror hrtimer_setup(), making instances of its
-    use much easier to grep for).
-
-    In order to support the migration of existing timers into the new
-    callback arguments, timer_setup() casts its arguments to the existing
-    legacy types, and explicitly passes the timer pointer as the legacy
-    data argument. Once all setup_*timer() callers have been replaced with
-    timer_setup(), the casts can be removed, and the data argument can be
-    dropped with the timer expiration code changed to just pass the timer
-    to the callback directly.
-
-:
-    Modern kernel callback systems pass the structure associated with a
-    given callback to the callback function. The timer callback remains one
-    of the legacy cases where an arbitrary unsigned long argument continues
-    to be passed as the callback argument. This has several problems:
-
-    - This bloats the timer_list structure with a normally redundant
-      .data field.
-
-    - No type checking is being performed, forcing callbacks to do
-      explicit type casts of the unsigned long argument into the object
-      that was passed, rather than using container_of(), as done in most
-      of the other callback infrastructure.
-
-    - Neighboring buffer overflows can overwrite both the .function and
-      the .data field, providing attackers with a way to elevate from a buffer
-      overflow into a simplistic ROP-like mechanism that allows calling
-      arbitrary functions with a controlled first argument.
-
-    - For future Control Flow Integrity work, this creates a unique function
-      prototype for timer callbacks, instead of allowing them to continue to
-      be clustered with other void functions that take a single unsigned long
-      argument.
-
-    This adds a new timer initialization API, which will ultimately replace
-    the existing setup_timer(), setup_{deferrable,pinned,etc}_timer() family,
-    named timer_setup() (to mirror hrtimer_setup(), making instances of its
-    use much easier to grep for).
-
-    In order to support the migration of existing timers into the new
-    callback arguments, timer_setup() casts its arguments to the existing
-    legacy types, and explicitly passes the timer pointer as the legacy
-    data argument. Once all setup_*timer() callers have been replaced with
-    timer_setup(), the casts can be removed, and the data argument can be
-    dropped with the timer expiration code changed to just pass the timer
-    to the callback directly.
-
-    Since the regular pattern of using container_of() during local variable
-    declaration repeats the need for the variable type declaration
-    to be included, this adds a helper modeled after other from_*()
-    helpers that wrap container_of(), named from_timer(). This helper uses
-    typeof(*variable), removing the type redundancy and minimizing the need
-    for line wraps in forthcoming conversions from "unsigned data long" to
-    "struct timer_list *" in the timer callbacks:
-
-    -void callback(unsigned long data)
-    +void callback(struct timer_list *t)
-    {
-    -   struct some_data_structure *local = (struct some_data_structure *)data;
-    +   struct some_data_structure *local = from_timer(local, t, timer);
-
-    Finally, in order to support the handful of timer users that perform
-    open-coded assignments of the .function (and .data) fields, provide
-    cast macros (TIMER_FUNC_TYPE and TIMER_DATA_TYPE) that can be used
-    temporarily. Once conversion has been completed, these can be globally
-    trivially removed.
-
-    ...
-
-  commit e99e88a9d2b067465adaa9c111ada99a041bef9a
-  Author: Kees Cook <keescook@chromium.org>
-  Date:   Mon Oct 16 14:43:17 2017 -0700
-
-    treewide: setup_timer() -> timer_setup()
-
-    This converts all remaining cases of the old setup_timer() API into using
-    timer_setup(), where the callback argument is the structure already
-    holding the struct timer_list. These should have no behavioral changes,
-    since they just change which pointer is passed into the callback with
-    the same available pointers after conversion. It handles the following
-    examples, in addition to some other variations.
-
-    ...
-
-  commit 185981d54a60ae90942c6ba9006b250f3348cef2
-  Author: Kees Cook <keescook@chromium.org>
-  Date:   Wed Oct 4 16:26:58 2017 -0700
-
-    timer: Remove init_timer_pinned() in favor of timer_setup()
-
-    This refactors the only users of init_timer_pinned() to use
-    the new timer_setup() and from_timer(). Drops the definition of
-    init_timer_pinned().
-
-    ...
-
-Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
----
- lib/ringbuffer/ring_buffer_frontend.c | 27 +++++++------
- wrapper/timer.h                       | 72 ++++++++++++++++++++++++++++-------
- 2 files changed, 72 insertions(+), 27 deletions(-)
-
-diff --git a/lib/ringbuffer/ring_buffer_frontend.c b/lib/ringbuffer/ring_buffer_frontend.c
-index bdd31ad..abd9757 100644
---- a/lib/ringbuffer/ring_buffer_frontend.c
-+++ b/lib/ringbuffer/ring_buffer_frontend.c
-@@ -314,9 +314,9 @@ int lib_ring_buffer_create(struct lib_ring_buffer *buf,
-       return ret;
- }
--static void switch_buffer_timer(unsigned long data)
-+static void switch_buffer_timer(LTTNG_TIMER_FUNC_ARG_TYPE t)
- {
--      struct lib_ring_buffer *buf = (struct lib_ring_buffer *)data;
-+      struct lib_ring_buffer *buf = lttng_from_timer(buf, t, switch_timer);
-       struct channel *chan = buf->backend.chan;
-       const struct lib_ring_buffer_config *config = &chan->backend.config;
-@@ -341,22 +341,22 @@ static void lib_ring_buffer_start_switch_timer(struct lib_ring_buffer *buf)
- {
-       struct channel *chan = buf->backend.chan;
-       const struct lib_ring_buffer_config *config = &chan->backend.config;
-+      unsigned int flags = 0;
-       if (!chan->switch_timer_interval || buf->switch_timer_enabled)
-               return;
-       if (config->alloc == RING_BUFFER_ALLOC_PER_CPU)
--              lttng_init_timer_pinned(&buf->switch_timer);
--      else
--              init_timer(&buf->switch_timer);
-+              flags = LTTNG_TIMER_PINNED;
--      buf->switch_timer.function = switch_buffer_timer;
-+      lttng_timer_setup(&buf->switch_timer, switch_buffer_timer, flags, buf);
-       buf->switch_timer.expires = jiffies + chan->switch_timer_interval;
--      buf->switch_timer.data = (unsigned long)buf;
-+
-       if (config->alloc == RING_BUFFER_ALLOC_PER_CPU)
-               add_timer_on(&buf->switch_timer, buf->backend.cpu);
-       else
-               add_timer(&buf->switch_timer);
-+
-       buf->switch_timer_enabled = 1;
- }
-@@ -377,9 +377,9 @@ static void lib_ring_buffer_stop_switch_timer(struct lib_ring_buffer *buf)
- /*
-  * Polling timer to check the channels for data.
-  */
--static void read_buffer_timer(unsigned long data)
-+static void read_buffer_timer(LTTNG_TIMER_FUNC_ARG_TYPE t)
- {
--      struct lib_ring_buffer *buf = (struct lib_ring_buffer *)data;
-+      struct lib_ring_buffer *buf = lttng_from_timer(buf, t, read_timer);
-       struct channel *chan = buf->backend.chan;
-       const struct lib_ring_buffer_config *config = &chan->backend.config;
-@@ -406,6 +406,7 @@ static void lib_ring_buffer_start_read_timer(struct lib_ring_buffer *buf)
- {
-       struct channel *chan = buf->backend.chan;
-       const struct lib_ring_buffer_config *config = &chan->backend.config;
-+      unsigned int flags;
-       if (config->wakeup != RING_BUFFER_WAKEUP_BY_TIMER
-           || !chan->read_timer_interval
-@@ -413,18 +414,16 @@ static void lib_ring_buffer_start_read_timer(struct lib_ring_buffer *buf)
-               return;
-       if (config->alloc == RING_BUFFER_ALLOC_PER_CPU)
--              lttng_init_timer_pinned(&buf->read_timer);
--      else
--              init_timer(&buf->read_timer);
-+              flags = LTTNG_TIMER_PINNED;
--      buf->read_timer.function = read_buffer_timer;
-+      lttng_timer_setup(&buf->read_timer, read_buffer_timer, flags, buf);
-       buf->read_timer.expires = jiffies + chan->read_timer_interval;
--      buf->read_timer.data = (unsigned long)buf;
-       if (config->alloc == RING_BUFFER_ALLOC_PER_CPU)
-               add_timer_on(&buf->read_timer, buf->backend.cpu);
-       else
-               add_timer(&buf->read_timer);
-+
-       buf->read_timer_enabled = 1;
- }
-diff --git a/wrapper/timer.h b/wrapper/timer.h
-index c1c0c95..4fc9828 100644
---- a/wrapper/timer.h
-+++ b/wrapper/timer.h
-@@ -27,30 +27,76 @@
- #include <linux/timer.h>
- #include <lttng-kernel-version.h>
-+/*
-+ * In the olden days, pinned timers were initialized normaly with init_timer()
-+ * and then modified with mod_timer_pinned().
-+ *
-+ * Then came kernel 4.8.0 and they had to be initilized as pinned with
-+ * init_timer_pinned() and then modified as regular timers with mod_timer().
-+ *
-+ * Then came kernel 4.15.0 with a new timer API where init_timer() is no more.
-+ * It's replaced by timer_setup() where pinned is now part of timer flags.
-+ */
-+
-+
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0))
-+
-+#define LTTNG_TIMER_PINNED            TIMER_PINNED
-+#define LTTNG_TIMER_FUNC_ARG_TYPE     struct timer_list *
-+
-+#define lttng_mod_timer_pinned(timer, expires) \
-+      mod_timer(timer, expires)
-+
-+#define lttng_from_timer(var, callback_timer, timer_fieldname) \
-+      from_timer(var, callback_timer, timer_fieldname)
-+
-+#define lttng_timer_setup(timer, callback, flags, unused) \
-+      timer_setup(timer, callback, flags)
-+
--#if (LTTNG_RT_VERSION_CODE >= LTTNG_RT_KERNEL_VERSION(4,6,4,8) \
-+#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0) */
-+
-+
-+# if (LTTNG_RT_VERSION_CODE >= LTTNG_RT_KERNEL_VERSION(4,6,4,8) \
-       || LINUX_VERSION_CODE >= KERNEL_VERSION(4,8,0))
--#define lttng_init_timer_pinned(timer)                                        \
-+#define lttng_init_timer_pinned(timer) \
-       init_timer_pinned(timer)
--static inline int lttng_mod_timer_pinned(struct timer_list *timer,
--              unsigned long expires)
--{
--      return mod_timer(timer, expires);
--}
-+#define lttng_mod_timer_pinned(timer, expires) \
-+      mod_timer(timer, expires)
--#else
-+# else /* LTTNG_RT_VERSION_CODE >= LTTNG_RT_KERNEL_VERSION(4,6,4,8) */
--#define lttng_init_timer_pinned(timer)                                        \
-+#define lttng_init_timer_pinned(timer) \
-       init_timer(timer)
--static inline int lttng_mod_timer_pinned(struct timer_list *timer,
--              unsigned long expires)
-+#define lttng_mod_timer_pinned(timer, expires) \
-+      mod_timer_pinned(timer, expires)
-+
-+# endif /* LTTNG_RT_VERSION_CODE >= LTTNG_RT_KERNEL_VERSION(4,6,4,8) */
-+
-+
-+#define LTTNG_TIMER_PINNED            TIMER_PINNED
-+#define LTTNG_TIMER_FUNC_ARG_TYPE     unsigned long
-+
-+/* timer_fieldname is unused prior to 4.15. */
-+#define lttng_from_timer(var, timer_data, timer_fieldname) \
-+      ((typeof(var))timer_data)
-+
-+static inline void lttng_timer_setup(struct timer_list *timer,
-+              void (*function)(LTTNG_TIMER_FUNC_ARG_TYPE),
-+              unsigned int flags, void *data)
- {
--      return mod_timer_pinned(timer, expires);
-+      if (flags & LTTNG_TIMER_PINNED)
-+              lttng_init_timer_pinned(timer);
-+      else
-+              init_timer(timer);
-+
-+      timer->function = function;
-+      timer->data = (unsigned long)data;
- }
--#endif
-+#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0) */
- #endif /* _LTTNG_WRAPPER_TIMER_H */
diff --git a/kmem-update.patch b/kmem-update.patch
deleted file mode 100644 (file)
index 0465b2f..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-From 071c76b533ed92a4107cd162826a08a18b9ff91c Mon Sep 17 00:00:00 2001
-From: Michael Jeanson <mjeanson@efficios.com>
-Date: Tue, 28 Nov 2017 16:02:45 -0500
-Subject: [PATCH] Fix: update kmem instrumentation for kernel 4.15
-
-See upstream commit:
-
-  commit 2d4894b5d2ae0fe1725ea7abd57b33bfbbe45492
-  Author: Mel Gorman <mgorman@techsingularity.net>
-  Date:   Wed Nov 15 17:37:59 2017 -0800
-
-    mm: remove cold parameter from free_hot_cold_page*
-
-Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
----
- instrumentation/events/lttng-module/kmem.h | 27 +++++++++++++++++++++++++--
- 1 file changed, 25 insertions(+), 2 deletions(-)
-
-diff --git a/instrumentation/events/lttng-module/kmem.h b/instrumentation/events/lttng-module/kmem.h
-index ad7bf77..c3fa25a 100644
---- a/instrumentation/events/lttng-module/kmem.h
-+++ b/instrumentation/events/lttng-module/kmem.h
-@@ -132,11 +132,33 @@ LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free_direct, kmem_mm_page_free_direct,
-       )
- )
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0))
-+LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free_batched, kmem_mm_page_free_batched,
-+
-+      TP_PROTO(struct page *page),
-+
-+      TP_ARGS(page),
-+
-+      TP_FIELDS(
-+              ctf_integer_hex(struct page *, page, page)
-+              ctf_integer(unsigned long, pfn, page_to_pfn(page))
-+      )
-+)
-+#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(3,3,0))
- LTTNG_TRACEPOINT_EVENT_MAP(mm_page_free_batched, kmem_mm_page_free_batched,
-+
-+      TP_PROTO(struct page *page, int cold),
-+
-+      TP_ARGS(page, cold),
-+
-+      TP_FIELDS(
-+              ctf_integer_hex(struct page *, page, page)
-+              ctf_integer(unsigned long, pfn, page_to_pfn(page))
-+              ctf_integer(int, cold, cold)
-+      )
-+)
- #else
- LTTNG_TRACEPOINT_EVENT_MAP(mm_pagevec_free, kmem_pagevec_free,
--#endif
-       TP_PROTO(struct page *page, int cold),
-@@ -148,6 +170,7 @@ LTTNG_TRACEPOINT_EVENT_MAP(mm_pagevec_free, kmem_pagevec_free,
-               ctf_integer(int, cold, cold)
-       )
- )
-+#endif
- LTTNG_TRACEPOINT_EVENT_MAP(mm_page_alloc, kmem_mm_page_alloc,
diff --git a/kvm-update.patch b/kvm-update.patch
deleted file mode 100644 (file)
index 545e0cf..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-From 33630522da97345c2b0c569c04c1d5d33ab7efa6 Mon Sep 17 00:00:00 2001
-From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Date: Tue, 26 Dec 2017 09:47:22 -0500
-Subject: [PATCH] Update kvm instrumentation for 4.15
-
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
----
- instrumentation/events/lttng-module/kvm.h | 18 ++++++++++++++++++
- 1 file changed, 18 insertions(+)
-
-diff --git a/instrumentation/events/lttng-module/kvm.h b/instrumentation/events/lttng-module/kvm.h
-index a8b3e9a..c01772c 100644
---- a/instrumentation/events/lttng-module/kvm.h
-+++ b/instrumentation/events/lttng-module/kvm.h
-@@ -84,6 +84,22 @@ LTTNG_TRACEPOINT_EVENT(kvm_ack_irq,
-       { KVM_TRACE_MMIO_READ, "read" }, \
-       { KVM_TRACE_MMIO_WRITE, "write" }
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0))
-+
-+LTTNG_TRACEPOINT_EVENT(kvm_mmio,
-+      TP_PROTO(int type, int len, u64 gpa, void *val),
-+      TP_ARGS(type, len, gpa, val),
-+
-+      TP_FIELDS(
-+              ctf_integer(u32, type, type)
-+              ctf_integer(u32, len, len)
-+              ctf_integer(u64, gpa, gpa)
-+              ctf_sequence_hex(unsigned char, val, val, u32, len)
-+      )
-+)
-+
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)) */
-+
- LTTNG_TRACEPOINT_EVENT(kvm_mmio,
-       TP_PROTO(int type, int len, u64 gpa, u64 val),
-       TP_ARGS(type, len, gpa, val),
-@@ -96,6 +112,8 @@ LTTNG_TRACEPOINT_EVENT(kvm_mmio,
-       )
- )
-+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)) */
-+
- #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
- #define kvm_fpu_load_symbol   \
-From 5ccd696806d409d5d0261b2e7e4d9618daf02e24 Mon Sep 17 00:00:00 2001
-From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Date: Tue, 2 Jan 2018 11:07:05 -0500
-Subject: [PATCH] Update: kvm instrumentation for 3.16.52 and 3.2.97
-
-Starting from 3.16.52 and 3.2.97, the 3.16 and 3.2 stable kernel
-branches backport a kvm instrumentation change introduced in 4.15 which
-affects the prototype of the kvm_mmio event.
-
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
----
- instrumentation/events/lttng-module/kvm.h | 8 +++++---
- 1 file changed, 5 insertions(+), 3 deletions(-)
-
-diff --git a/instrumentation/events/lttng-module/kvm.h b/instrumentation/events/lttng-module/kvm.h
-index ec74bdd..ea63e88 100644
---- a/instrumentation/events/lttng-module/kvm.h
-+++ b/instrumentation/events/lttng-module/kvm.h
-@@ -84,7 +84,9 @@ LTTNG_TRACEPOINT_EVENT(kvm_ack_irq,
-       { KVM_TRACE_MMIO_READ, "read" }, \
-       { KVM_TRACE_MMIO_WRITE, "write" }
--#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0))
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0) \
-+      || LTTNG_KERNEL_RANGE(3,16,52, 3,17,0) \
-+      || LTTNG_KERNEL_RANGE(3,2,97, 3,3,0))
- LTTNG_TRACEPOINT_EVENT(kvm_mmio,
-       TP_PROTO(int type, int len, u64 gpa, void *val),
-@@ -98,7 +100,7 @@ LTTNG_TRACEPOINT_EVENT(kvm_mmio,
-       )
- )
--#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)) */
-+#else
- LTTNG_TRACEPOINT_EVENT(kvm_mmio,
-       TP_PROTO(int type, int len, u64 gpa, u64 val),
-@@ -112,7 +114,7 @@ LTTNG_TRACEPOINT_EVENT(kvm_mmio,
-       )
- )
--#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)) */
-+#endif
- #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,34))
-From bda29b79b33c2a31d3ffb396e741724590f6e455 Mon Sep 17 00:00:00 2001
-From: Michael Jeanson <mjeanson@efficios.com>
-Date: Tue, 9 Jan 2018 15:43:20 -0500
-Subject: [PATCH] Update kvm instrumentation for debian kernel 4.9.65-3
-
-Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
----
- instrumentation/events/lttng-module/kvm.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/instrumentation/events/lttng-module/kvm.h b/instrumentation/events/lttng-module/kvm.h
-index ea63e88..d9d0300 100644
---- a/instrumentation/events/lttng-module/kvm.h
-+++ b/instrumentation/events/lttng-module/kvm.h
-@@ -86,7 +86,8 @@ LTTNG_TRACEPOINT_EVENT(kvm_ack_irq,
- #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0) \
-       || LTTNG_KERNEL_RANGE(3,16,52, 3,17,0) \
--      || LTTNG_KERNEL_RANGE(3,2,97, 3,3,0))
-+      || LTTNG_KERNEL_RANGE(3,2,97, 3,3,0) \
-+      || LTTNG_DEBIAN_KERNEL_RANGE(4,9,65,0,3,0, 4,10,0,0,0,0))
- LTTNG_TRACEPOINT_EVENT(kvm_mmio,
-       TP_PROTO(int type, int len, u64 gpa, void *val),
-From 1d822c67df88b678c9cbe73d0bb47fc177af194a Mon Sep 17 00:00:00 2001
-From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Date: Wed, 17 Jan 2018 11:17:08 -0500
-Subject: [PATCH] Update: kvm instrumentation for 4.14.14+, 4.9.77+, 4.4.112+
-
-Starting from 3.14.14, 4.9.77, and 4.4.112, the 3.14, 4.9, and 4.4
-stable kernel branches backport a kvm instrumentation change introduced
-in 4.15 which affects the prototype of the kvm_mmio event.
-
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
----
- instrumentation/events/lttng-module/kvm.h | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/instrumentation/events/lttng-module/kvm.h b/instrumentation/events/lttng-module/kvm.h
-index d9d0300..fbd603b 100644
---- a/instrumentation/events/lttng-module/kvm.h
-+++ b/instrumentation/events/lttng-module/kvm.h
-@@ -85,6 +85,9 @@ LTTNG_TRACEPOINT_EVENT(kvm_ack_irq,
-       { KVM_TRACE_MMIO_WRITE, "write" }
- #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0) \
-+      || LTTNG_KERNEL_RANGE(4,14,14, 4,15,0) \
-+      || LTTNG_KERNEL_RANGE(4,9,77, 4,10,0) \
-+      || LTTNG_KERNEL_RANGE(4,4,112, 4,5,0) \
-       || LTTNG_KERNEL_RANGE(3,16,52, 3,17,0) \
-       || LTTNG_KERNEL_RANGE(3,2,97, 3,3,0) \
-       || LTTNG_DEBIAN_KERNEL_RANGE(4,9,65,0,3,0, 4,10,0,0,0,0))
index dac967bce8e3530e06d93b237840683ff5b18369..5e1a31f4340a013a34ab25269fc53aa934ad367f 100644 (file)
@@ -7,23 +7,18 @@
 # nothing to be placed to debuginfo package
 %define                _enable_debug_packages  0
 
-%define                rel     3
+%define                rel     1
 %define                pname   lttng-modules
 Summary:       LTTng 2.x kernel modules
 Summary(pl.UTF-8):     Moduły jądra LTTng 2.x
 Name:          %{pname}%{_alt_kernel}
-Version:       2.10.4
+Version:       2.10.5
 Release:       %{rel}@%{_kernel_ver_str}
 License:       GPL v2
 Group:         Base/Kernel
 Source0:       http://lttng.org/files/lttng-modules/%{pname}-%{version}.tar.bz2
-# Source0-md5: 832452b321a4df6836549e72d05b2ce9
+# Source0-md5: 4aaabaafd15d9455c83972e26ccfbca7
 Patch0:                build.patch
-Patch1:                kvm-update.patch
-Patch2:                kmem-update.patch
-Patch3:                kernel-4.15-timers.patch
-Patch4:                kernel-4.15-atomics.patch
-Patch5:                sock-update.patch
 URL:           http://lttng.org/
 %{expand:%buildrequires_kernel kernel%%{_alt_kernel}-module-build >= 3:2.6.38}
 %{?with_kernelsrc:%{expand:%buildrequires_kernel kernel%%{_alt_kernel}-source >= 3:2.6.38}}
@@ -93,11 +88,6 @@ p=`pwd`\
 %prep
 %setup -q -n %{pname}-%{version}
 %patch0 -p1
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
-%patch4 -p1
-%patch5 -p1
 
 %build
 %{expand:%build_kernel_packages}
diff --git a/sock-update.patch b/sock-update.patch
deleted file mode 100644 (file)
index 668f4ff..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-From f279893a432a5c5c5d4488f65a0719181a06da56 Mon Sep 17 00:00:00 2001
-From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
-Date: Tue, 26 Dec 2017 09:47:36 -0500
-Subject: [PATCH] Update sock instrumentation for 4.15
-
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
----
- instrumentation/events/lttng-module/sock.h | 22 ++++++++++++++++++++++
- 1 file changed, 22 insertions(+)
-
-diff --git a/instrumentation/events/lttng-module/sock.h b/instrumentation/events/lttng-module/sock.h
-index e79f8dc..5cd02ca 100644
---- a/instrumentation/events/lttng-module/sock.h
-+++ b/instrumentation/events/lttng-module/sock.h
-@@ -5,6 +5,7 @@
- #define LTTNG_TRACE_SOCK_H
- #include <probes/lttng-tracepoint-event.h>
-+#include <linux/version.h>
- #include <net/sock.h>
- LTTNG_TRACEPOINT_EVENT(sock_rcvqueue_full,
-@@ -20,6 +21,25 @@ LTTNG_TRACEPOINT_EVENT(sock_rcvqueue_full,
-       )
- )
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0))
-+
-+LTTNG_TRACEPOINT_EVENT(sock_exceed_buf_limit,
-+
-+      TP_PROTO(struct sock *sk, struct proto *prot, long allocated),
-+
-+      TP_ARGS(sk, prot, allocated),
-+
-+      TP_FIELDS(
-+              ctf_string(name, prot->name)
-+              ctf_array(long, sysctl_mem, prot->sysctl_mem, 3)
-+              ctf_integer(long, allocated, allocated)
-+              ctf_integer(int, sysctl_rmem, sk_get_rmem0(sk, prot))
-+              ctf_integer(int, rmem_alloc, atomic_read(&sk->sk_rmem_alloc))
-+      )
-+)
-+
-+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)) */
-+
- LTTNG_TRACEPOINT_EVENT(sock_exceed_buf_limit,
-       TP_PROTO(struct sock *sk, struct proto *prot, long allocated),
-@@ -35,6 +55,8 @@ LTTNG_TRACEPOINT_EVENT(sock_exceed_buf_limit,
-       )
- )
-+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,15,0)) */
-+
- #endif /* LTTNG_TRACE_SOCK_H */
- /* This part must be outside protection */
This page took 0.232923 seconds and 4 git commands to generate.