]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.31/patches.trace/ftrace-port-to-tracepoints.patch
Revert "Move xen patchset to new version's subdir."
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.trace / ftrace-port-to-tracepoints.patch
diff --git a/src/patches/suse-2.6.27.31/patches.trace/ftrace-port-to-tracepoints.patch b/src/patches/suse-2.6.27.31/patches.trace/ftrace-port-to-tracepoints.patch
deleted file mode 100644 (file)
index 9c84d74..0000000
+++ /dev/null
@@ -1,491 +0,0 @@
-From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
-Subject: ftrace port to tracepoints
-
-Porting the trace_mark() used by ftrace to tracepoints. (cleanup)
-
-Changelog :
-- Change error messages : marker -> tracepoint
-
-Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
-CC: Masami Hiramatsu <mhiramat@redhat.com>
-CC: 'Peter Zijlstra' <peterz@infradead.org>
-CC: "Frank Ch. Eigler" <fche@redhat.com>
-CC: 'Ingo Molnar' <mingo@elte.hu>
-CC: 'Hideo AOKI' <haoki@redhat.com>
-CC: Takashi Nishiie <t-nishiie@np.css.fujitsu.com>
-CC: 'Steven Rostedt' <rostedt@goodmis.org>
-CC: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
-Acked-by: Jan Blunck <jblunck@suse.de>
----
- kernel/trace/trace_sched_switch.c |  120 ++++++---------------------------
- kernel/trace/trace_sched_wakeup.c |  135 +++++++++-----------------------------
- 2 files changed, 58 insertions(+), 197 deletions(-)
-
-Index: linux-2.6-lttng/kernel/trace/trace_sched_switch.c
-===================================================================
---- linux-2.6-lttng.orig/kernel/trace/trace_sched_switch.c     2008-08-06 00:41:47.000000000 -0400
-+++ linux-2.6-lttng/kernel/trace/trace_sched_switch.c  2008-08-06 13:12:10.000000000 -0400
-@@ -9,8 +9,8 @@
- #include <linux/debugfs.h>
- #include <linux/kallsyms.h>
- #include <linux/uaccess.h>
--#include <linux/marker.h>
- #include <linux/ftrace.h>
-+#include <trace/sched.h>
- #include "trace.h"
-@@ -19,16 +19,17 @@ static int __read_mostly   tracer_enabled;
- static atomic_t                       sched_ref;
- static void
--sched_switch_func(void *private, void *__rq, struct task_struct *prev,
-+probe_sched_switch(struct rq *__rq, struct task_struct *prev,
-                       struct task_struct *next)
- {
--      struct trace_array **ptr = private;
--      struct trace_array *tr = *ptr;
-       struct trace_array_cpu *data;
-       unsigned long flags;
-       long disabled;
-       int cpu;
-+      if (!atomic_read(&sched_ref))
-+              return;
-+
-       tracing_record_cmdline(prev);
-       tracing_record_cmdline(next);
-@@ -37,95 +38,42 @@ sched_switch_func(void *private, void *_
-       local_irq_save(flags);
-       cpu = raw_smp_processor_id();
--      data = tr->data[cpu];
-+      data = ctx_trace->data[cpu];
-       disabled = atomic_inc_return(&data->disabled);
-       if (likely(disabled == 1))
--              tracing_sched_switch_trace(tr, data, prev, next, flags);
-+              tracing_sched_switch_trace(ctx_trace, data, prev, next, flags);
-       atomic_dec(&data->disabled);
-       local_irq_restore(flags);
- }
--static notrace void
--sched_switch_callback(void *probe_data, void *call_data,
--                    const char *format, va_list *args)
--{
--      struct task_struct *prev;
--      struct task_struct *next;
--      struct rq *__rq;
--
--      if (!atomic_read(&sched_ref))
--              return;
--
--      /* skip prev_pid %d next_pid %d prev_state %ld */
--      (void)va_arg(*args, int);
--      (void)va_arg(*args, int);
--      (void)va_arg(*args, long);
--      __rq = va_arg(*args, typeof(__rq));
--      prev = va_arg(*args, typeof(prev));
--      next = va_arg(*args, typeof(next));
--
--      /*
--       * If tracer_switch_func only points to the local
--       * switch func, it still needs the ptr passed to it.
--       */
--      sched_switch_func(probe_data, __rq, prev, next);
--}
--
- static void
--wakeup_func(void *private, void *__rq, struct task_struct *wakee, struct
--                      task_struct *curr)
-+probe_sched_wakeup(struct rq *__rq, struct task_struct *wakee)
- {
--      struct trace_array **ptr = private;
--      struct trace_array *tr = *ptr;
-       struct trace_array_cpu *data;
-       unsigned long flags;
-       long disabled;
-       int cpu;
--      if (!tracer_enabled)
-+      if (!likely(tracer_enabled))
-               return;
--      tracing_record_cmdline(curr);
-+      tracing_record_cmdline(current);
-       local_irq_save(flags);
-       cpu = raw_smp_processor_id();
--      data = tr->data[cpu];
-+      data = ctx_trace->data[cpu];
-       disabled = atomic_inc_return(&data->disabled);
-       if (likely(disabled == 1))
--              tracing_sched_wakeup_trace(tr, data, wakee, curr, flags);
-+              tracing_sched_wakeup_trace(ctx_trace, data, wakee, current,
-+                      flags);
-       atomic_dec(&data->disabled);
-       local_irq_restore(flags);
- }
--static notrace void
--wake_up_callback(void *probe_data, void *call_data,
--               const char *format, va_list *args)
--{
--      struct task_struct *curr;
--      struct task_struct *task;
--      struct rq *__rq;
--
--      if (likely(!tracer_enabled))
--              return;
--
--      /* Skip pid %d state %ld */
--      (void)va_arg(*args, int);
--      (void)va_arg(*args, long);
--      /* now get the meat: "rq %p task %p rq->curr %p" */
--      __rq = va_arg(*args, typeof(__rq));
--      task = va_arg(*args, typeof(task));
--      curr = va_arg(*args, typeof(curr));
--
--      tracing_record_cmdline(task);
--      tracing_record_cmdline(curr);
--
--      wakeup_func(probe_data, __rq, task, curr);
--}
--
- static void sched_switch_reset(struct trace_array *tr)
- {
-       int cpu;
-@@ -140,60 +88,40 @@ static int tracing_sched_register(void)
- {
-       int ret;
--      ret = marker_probe_register("kernel_sched_wakeup",
--                      "pid %d state %ld ## rq %p task %p rq->curr %p",
--                      wake_up_callback,
--                      &ctx_trace);
-+      ret = register_trace_sched_wakeup(probe_sched_wakeup);
-       if (ret) {
--              pr_info("wakeup trace: Couldn't add marker"
-+              pr_info("wakeup trace: Couldn't activate tracepoint"
-                       " probe to kernel_sched_wakeup\n");
-               return ret;
-       }
--      ret = marker_probe_register("kernel_sched_wakeup_new",
--                      "pid %d state %ld ## rq %p task %p rq->curr %p",
--                      wake_up_callback,
--                      &ctx_trace);
-+      ret = register_trace_sched_wakeup_new(probe_sched_wakeup);
-       if (ret) {
--              pr_info("wakeup trace: Couldn't add marker"
-+              pr_info("wakeup trace: Couldn't activate tracepoint"
-                       " probe to kernel_sched_wakeup_new\n");
-               goto fail_deprobe;
-       }
--      ret = marker_probe_register("kernel_sched_schedule",
--              "prev_pid %d next_pid %d prev_state %ld "
--              "## rq %p prev %p next %p",
--              sched_switch_callback,
--              &ctx_trace);
-+      ret = register_trace_sched_switch(probe_sched_switch);
-       if (ret) {
--              pr_info("sched trace: Couldn't add marker"
-+              pr_info("sched trace: Couldn't activate tracepoint"
-                       " probe to kernel_sched_schedule\n");
-               goto fail_deprobe_wake_new;
-       }
-       return ret;
- fail_deprobe_wake_new:
--      marker_probe_unregister("kernel_sched_wakeup_new",
--                              wake_up_callback,
--                              &ctx_trace);
-+      unregister_trace_sched_wakeup_new(probe_sched_wakeup);
- fail_deprobe:
--      marker_probe_unregister("kernel_sched_wakeup",
--                              wake_up_callback,
--                              &ctx_trace);
-+      unregister_trace_sched_wakeup(probe_sched_wakeup);
-       return ret;
- }
- static void tracing_sched_unregister(void)
- {
--      marker_probe_unregister("kernel_sched_schedule",
--                              sched_switch_callback,
--                              &ctx_trace);
--      marker_probe_unregister("kernel_sched_wakeup_new",
--                              wake_up_callback,
--                              &ctx_trace);
--      marker_probe_unregister("kernel_sched_wakeup",
--                              wake_up_callback,
--                              &ctx_trace);
-+      unregister_trace_sched_switch(probe_sched_switch);
-+      unregister_trace_sched_wakeup_new(probe_sched_wakeup);
-+      unregister_trace_sched_wakeup(probe_sched_wakeup);
- }
- static void tracing_start_sched_switch(void)
-Index: linux-2.6-lttng/kernel/trace/trace_sched_wakeup.c
-===================================================================
---- linux-2.6-lttng.orig/kernel/trace/trace_sched_wakeup.c     2008-08-06 00:41:47.000000000 -0400
-+++ linux-2.6-lttng/kernel/trace/trace_sched_wakeup.c  2008-08-06 13:18:26.000000000 -0400
-@@ -15,7 +15,7 @@
- #include <linux/kallsyms.h>
- #include <linux/uaccess.h>
- #include <linux/ftrace.h>
--#include <linux/marker.h>
-+#include <trace/sched.h>
- #include "trace.h"
-@@ -112,18 +112,18 @@ static int report_latency(cycle_t delta)
- }
- static void notrace
--wakeup_sched_switch(void *private, void *rq, struct task_struct *prev,
-+probe_wakeup_sched_switch(struct rq *rq, struct task_struct *prev,
-       struct task_struct *next)
- {
-       unsigned long latency = 0, t0 = 0, t1 = 0;
--      struct trace_array **ptr = private;
--      struct trace_array *tr = *ptr;
-       struct trace_array_cpu *data;
-       cycle_t T0, T1, delta;
-       unsigned long flags;
-       long disabled;
-       int cpu;
-+      tracing_record_cmdline(prev);
-+
-       if (unlikely(!tracer_enabled))
-               return;
-@@ -140,11 +140,11 @@ wakeup_sched_switch(void *private, void 
-               return;
-       /* The task we are waiting for is waking up */
--      data = tr->data[wakeup_cpu];
-+      data = wakeup_trace->data[wakeup_cpu];
-       /* disable local data, not wakeup_cpu data */
-       cpu = raw_smp_processor_id();
--      disabled = atomic_inc_return(&tr->data[cpu]->disabled);
-+      disabled = atomic_inc_return(&wakeup_trace->data[cpu]->disabled);
-       if (likely(disabled != 1))
-               goto out;
-@@ -155,7 +155,7 @@ wakeup_sched_switch(void *private, void 
-       if (unlikely(!tracer_enabled || next != wakeup_task))
-               goto out_unlock;
--      trace_function(tr, data, CALLER_ADDR1, CALLER_ADDR2, flags);
-+      trace_function(wakeup_trace, data, CALLER_ADDR1, CALLER_ADDR2, flags);
-       /*
-        * usecs conversion is slow so we try to delay the conversion
-@@ -174,39 +174,14 @@ wakeup_sched_switch(void *private, void 
-       t0 = nsecs_to_usecs(T0);
-       t1 = nsecs_to_usecs(T1);
--      update_max_tr(tr, wakeup_task, wakeup_cpu);
-+      update_max_tr(wakeup_trace, wakeup_task, wakeup_cpu);
- out_unlock:
--      __wakeup_reset(tr);
-+      __wakeup_reset(wakeup_trace);
-       __raw_spin_unlock(&wakeup_lock);
-       local_irq_restore(flags);
- out:
--      atomic_dec(&tr->data[cpu]->disabled);
--}
--
--static notrace void
--sched_switch_callback(void *probe_data, void *call_data,
--                    const char *format, va_list *args)
--{
--      struct task_struct *prev;
--      struct task_struct *next;
--      struct rq *__rq;
--
--      /* skip prev_pid %d next_pid %d prev_state %ld */
--      (void)va_arg(*args, int);
--      (void)va_arg(*args, int);
--      (void)va_arg(*args, long);
--      __rq = va_arg(*args, typeof(__rq));
--      prev = va_arg(*args, typeof(prev));
--      next = va_arg(*args, typeof(next));
--
--      tracing_record_cmdline(prev);
--
--      /*
--       * If tracer_switch_func only points to the local
--       * switch func, it still needs the ptr passed to it.
--       */
--      wakeup_sched_switch(probe_data, __rq, prev, next);
-+      atomic_dec(&wakeup_trace->data[cpu]->disabled);
- }
- static void __wakeup_reset(struct trace_array *tr)
-@@ -240,19 +215,24 @@ static void wakeup_reset(struct trace_ar
- }
- static void
--wakeup_check_start(struct trace_array *tr, struct task_struct *p,
--                 struct task_struct *curr)
-+probe_wakeup(struct rq *rq, struct task_struct *p)
- {
-       int cpu = smp_processor_id();
-       unsigned long flags;
-       long disabled;
-+      if (likely(!tracer_enabled))
-+              return;
-+
-+      tracing_record_cmdline(p);
-+      tracing_record_cmdline(current);
-+
-       if (likely(!rt_task(p)) ||
-                       p->prio >= wakeup_prio ||
--                      p->prio >= curr->prio)
-+                      p->prio >= current->prio)
-               return;
--      disabled = atomic_inc_return(&tr->data[cpu]->disabled);
-+      disabled = atomic_inc_return(&wakeup_trace->data[cpu]->disabled);
-       if (unlikely(disabled != 1))
-               goto out;
-@@ -264,7 +244,7 @@ wakeup_check_start(struct trace_array *t
-               goto out_locked;
-       /* reset the trace */
--      __wakeup_reset(tr);
-+      __wakeup_reset(wakeup_trace);
-       wakeup_cpu = task_cpu(p);
-       wakeup_prio = p->prio;
-@@ -274,74 +254,37 @@ wakeup_check_start(struct trace_array *t
-       local_save_flags(flags);
--      tr->data[wakeup_cpu]->preempt_timestamp = ftrace_now(cpu);
--      trace_function(tr, tr->data[wakeup_cpu],
-+      wakeup_trace->data[wakeup_cpu]->preempt_timestamp = ftrace_now(cpu);
-+      trace_function(wakeup_trace, wakeup_trace->data[wakeup_cpu],
-                      CALLER_ADDR1, CALLER_ADDR2, flags);
- out_locked:
-       __raw_spin_unlock(&wakeup_lock);
- out:
--      atomic_dec(&tr->data[cpu]->disabled);
--}
--
--static notrace void
--wake_up_callback(void *probe_data, void *call_data,
--               const char *format, va_list *args)
--{
--      struct trace_array **ptr = probe_data;
--      struct trace_array *tr = *ptr;
--      struct task_struct *curr;
--      struct task_struct *task;
--      struct rq *__rq;
--
--      if (likely(!tracer_enabled))
--              return;
--
--      /* Skip pid %d state %ld */
--      (void)va_arg(*args, int);
--      (void)va_arg(*args, long);
--      /* now get the meat: "rq %p task %p rq->curr %p" */
--      __rq = va_arg(*args, typeof(__rq));
--      task = va_arg(*args, typeof(task));
--      curr = va_arg(*args, typeof(curr));
--
--      tracing_record_cmdline(task);
--      tracing_record_cmdline(curr);
--
--      wakeup_check_start(tr, task, curr);
-+      atomic_dec(&wakeup_trace->data[cpu]->disabled);
- }
- static void start_wakeup_tracer(struct trace_array *tr)
- {
-       int ret;
--      ret = marker_probe_register("kernel_sched_wakeup",
--                      "pid %d state %ld ## rq %p task %p rq->curr %p",
--                      wake_up_callback,
--                      &wakeup_trace);
-+      ret = register_trace_sched_wakeup(probe_wakeup);
-       if (ret) {
--              pr_info("wakeup trace: Couldn't add marker"
-+              pr_info("wakeup trace: Couldn't activate tracepoint"
-                       " probe to kernel_sched_wakeup\n");
-               return;
-       }
--      ret = marker_probe_register("kernel_sched_wakeup_new",
--                      "pid %d state %ld ## rq %p task %p rq->curr %p",
--                      wake_up_callback,
--                      &wakeup_trace);
-+      ret = register_trace_sched_wakeup_new(probe_wakeup);
-       if (ret) {
--              pr_info("wakeup trace: Couldn't add marker"
-+              pr_info("wakeup trace: Couldn't activate tracepoint"
-                       " probe to kernel_sched_wakeup_new\n");
-               goto fail_deprobe;
-       }
--      ret = marker_probe_register("kernel_sched_schedule",
--              "prev_pid %d next_pid %d prev_state %ld "
--              "## rq %p prev %p next %p",
--              sched_switch_callback,
--              &wakeup_trace);
-+      ret = register_trace_sched_switch(probe_wakeup_sched_switch);
-       if (ret) {
--              pr_info("sched trace: Couldn't add marker"
-+              pr_info("sched trace: Couldn't activate tracepoint"
-                       " probe to kernel_sched_schedule\n");
-               goto fail_deprobe_wake_new;
-       }
-@@ -363,28 +306,18 @@ static void start_wakeup_tracer(struct t
-       return;
- fail_deprobe_wake_new:
--      marker_probe_unregister("kernel_sched_wakeup_new",
--                              wake_up_callback,
--                              &wakeup_trace);
-+      unregister_trace_sched_wakeup_new(probe_wakeup);
- fail_deprobe:
--      marker_probe_unregister("kernel_sched_wakeup",
--                              wake_up_callback,
--                              &wakeup_trace);
-+      unregister_trace_sched_wakeup(probe_wakeup);
- }
- static void stop_wakeup_tracer(struct trace_array *tr)
- {
-       tracer_enabled = 0;
-       unregister_ftrace_function(&trace_ops);
--      marker_probe_unregister("kernel_sched_schedule",
--                              sched_switch_callback,
--                              &wakeup_trace);
--      marker_probe_unregister("kernel_sched_wakeup_new",
--                              wake_up_callback,
--                              &wakeup_trace);
--      marker_probe_unregister("kernel_sched_wakeup",
--                              wake_up_callback,
--                              &wakeup_trace);
-+      unregister_trace_sched_switch(probe_wakeup_sched_switch);
-+      unregister_trace_sched_wakeup_new(probe_wakeup);
-+      unregister_trace_sched_wakeup(probe_wakeup);
- }
- static void wakeup_tracer_init(struct trace_array *tr)