]> Pileus Git - ~andy/linux/commitdiff
Merge tag 'trace-3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux...
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 9 Sep 2013 21:42:15 +0000 (14:42 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 9 Sep 2013 21:42:15 +0000 (14:42 -0700)
Pull tracing updates from Steven Rostedt:
 "Not much changes for the 3.12 merge window.  The major tracing changes
  are still in flux, and will have to wait for 3.13.

  The changes for 3.12 are mostly clean ups and minor fixes.

  H Peter Anvin added a check to x86_32 static function tracing that
  helps a small segment of the kernel community.

  Oleg Nesterov had a few changes from 3.11, but were mostly clean ups
  and not worth pushing in the -rc time frame.

  Li Zefan had small clean up with annotating a raw_init with __init.

  I fixed a slight race in updating function callbacks, but the race is
  so small and the bug that happens when it occurs is so minor it's not
  even worth pushing to stable.

  The only real enhancement is from Alexander Z Lam that made the
  tracing_cpumask work for trace buffer instances, instead of them all
  sharing a global cpumask"

* tag 'trace-3.12' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
  ftrace/rcu: Do not trace debug_lockdep_rcu_enabled()
  x86-32, ftrace: Fix static ftrace when early microcode is enabled
  ftrace: Fix a slight race in modifying what function callback gets traced
  tracing: Make tracing_cpumask available for all instances
  tracing: Kill the !CONFIG_MODULES code in trace_events.c
  tracing: Don't pass file_operations array to event_create_dir()
  tracing: Kill trace_create_file_ops() and friends
  tracing/syscalls: Annotate raw_init function with __init

1  2 
kernel/rcupdate.c
kernel/trace/trace.h

diff --combined kernel/rcupdate.c
index 33eb4620aa1716c9010432ef0a63db53afbcf82e,4f20c6c6a8488fe65a3c892aa4c0fa5d785c1de3..b02a339836b43d59dbd273efdb77d423b84ea90b
@@@ -122,7 -122,7 +122,7 @@@ struct lockdep_map rcu_sched_lock_map 
        STATIC_LOCKDEP_MAP_INIT("rcu_read_lock_sched", &rcu_sched_lock_key);
  EXPORT_SYMBOL_GPL(rcu_sched_lock_map);
  
- int debug_lockdep_rcu_enabled(void)
+ int notrace debug_lockdep_rcu_enabled(void)
  {
        return rcu_scheduler_active && debug_locks &&
               current->lockdep_recursion == 0;
@@@ -211,6 -211,43 +211,6 @@@ static inline void debug_rcu_head_free(
        debug_object_free(head, &rcuhead_debug_descr);
  }
  
 -/*
 - * fixup_init is called when:
 - * - an active object is initialized
 - */
 -static int rcuhead_fixup_init(void *addr, enum debug_obj_state state)
 -{
 -      struct rcu_head *head = addr;
 -
 -      switch (state) {
 -      case ODEBUG_STATE_ACTIVE:
 -              /*
 -               * Ensure that queued callbacks are all executed.
 -               * If we detect that we are nested in a RCU read-side critical
 -               * section, we should simply fail, otherwise we would deadlock.
 -               * In !PREEMPT configurations, there is no way to tell if we are
 -               * in a RCU read-side critical section or not, so we never
 -               * attempt any fixup and just print a warning.
 -               */
 -#ifndef CONFIG_PREEMPT
 -              WARN_ON_ONCE(1);
 -              return 0;
 -#endif
 -              if (rcu_preempt_depth() != 0 || preempt_count() != 0 ||
 -                  irqs_disabled()) {
 -                      WARN_ON_ONCE(1);
 -                      return 0;
 -              }
 -              rcu_barrier();
 -              rcu_barrier_sched();
 -              rcu_barrier_bh();
 -              debug_object_init(head, &rcuhead_debug_descr);
 -              return 1;
 -      default:
 -              return 0;
 -      }
 -}
 -
  /*
   * fixup_activate is called when:
   * - an active object is activated
@@@ -231,8 -268,69 +231,8 @@@ static int rcuhead_fixup_activate(void 
                debug_object_init(head, &rcuhead_debug_descr);
                debug_object_activate(head, &rcuhead_debug_descr);
                return 0;
 -
 -      case ODEBUG_STATE_ACTIVE:
 -              /*
 -               * Ensure that queued callbacks are all executed.
 -               * If we detect that we are nested in a RCU read-side critical
 -               * section, we should simply fail, otherwise we would deadlock.
 -               * In !PREEMPT configurations, there is no way to tell if we are
 -               * in a RCU read-side critical section or not, so we never
 -               * attempt any fixup and just print a warning.
 -               */
 -#ifndef CONFIG_PREEMPT
 -              WARN_ON_ONCE(1);
 -              return 0;
 -#endif
 -              if (rcu_preempt_depth() != 0 || preempt_count() != 0 ||
 -                  irqs_disabled()) {
 -                      WARN_ON_ONCE(1);
 -                      return 0;
 -              }
 -              rcu_barrier();
 -              rcu_barrier_sched();
 -              rcu_barrier_bh();
 -              debug_object_activate(head, &rcuhead_debug_descr);
 -              return 1;
        default:
 -              return 0;
 -      }
 -}
 -
 -/*
 - * fixup_free is called when:
 - * - an active object is freed
 - */
 -static int rcuhead_fixup_free(void *addr, enum debug_obj_state state)
 -{
 -      struct rcu_head *head = addr;
 -
 -      switch (state) {
 -      case ODEBUG_STATE_ACTIVE:
 -              /*
 -               * Ensure that queued callbacks are all executed.
 -               * If we detect that we are nested in a RCU read-side critical
 -               * section, we should simply fail, otherwise we would deadlock.
 -               * In !PREEMPT configurations, there is no way to tell if we are
 -               * in a RCU read-side critical section or not, so we never
 -               * attempt any fixup and just print a warning.
 -               */
 -#ifndef CONFIG_PREEMPT
 -              WARN_ON_ONCE(1);
 -              return 0;
 -#endif
 -              if (rcu_preempt_depth() != 0 || preempt_count() != 0 ||
 -                  irqs_disabled()) {
 -                      WARN_ON_ONCE(1);
 -                      return 0;
 -              }
 -              rcu_barrier();
 -              rcu_barrier_sched();
 -              rcu_barrier_bh();
 -              debug_object_free(head, &rcuhead_debug_descr);
                return 1;
 -      default:
 -              return 0;
        }
  }
  
@@@ -271,13 -369,15 +271,13 @@@ EXPORT_SYMBOL_GPL(destroy_rcu_head_on_s
  
  struct debug_obj_descr rcuhead_debug_descr = {
        .name = "rcu_head",
 -      .fixup_init = rcuhead_fixup_init,
        .fixup_activate = rcuhead_fixup_activate,
 -      .fixup_free = rcuhead_fixup_free,
  };
  EXPORT_SYMBOL_GPL(rcuhead_debug_descr);
  #endif /* #ifdef CONFIG_DEBUG_OBJECTS_RCU_HEAD */
  
  #if defined(CONFIG_TREE_RCU) || defined(CONFIG_TREE_PREEMPT_RCU) || defined(CONFIG_RCU_TRACE)
 -void do_trace_rcu_torture_read(char *rcutorturename, struct rcu_head *rhp,
 +void do_trace_rcu_torture_read(const char *rcutorturename, struct rcu_head *rhp,
                               unsigned long secs,
                               unsigned long c_old, unsigned long c)
  {
diff --combined kernel/trace/trace.h
index fe39acd4c1aafa8655c6d8656621dcafbeb3abbf,502fed770751ec817b739258fac15569b3e969bb..10c86fb7a2b4674c4433d30123562608ec72c59b
@@@ -206,6 -206,7 +206,7 @@@ struct trace_array 
        struct dentry           *event_dir;
        struct list_head        systems;
        struct list_head        events;
+       cpumask_var_t           tracing_cpumask; /* only trace on set CPUs */
        int                     ref;
  };
  
@@@ -1022,9 -1023,6 +1023,9 @@@ extern struct list_head ftrace_events
  extern const char *__start___trace_bprintk_fmt[];
  extern const char *__stop___trace_bprintk_fmt[];
  
 +extern const char *__start___tracepoint_str[];
 +extern const char *__stop___tracepoint_str[];
 +
  void trace_printk_init_buffers(void);
  void trace_printk_start_comm(void);
  int trace_keep_overwrite(struct tracer *tracer, u32 mask, int set);