)]}'
{
  "log": [
    {
      "commit": "d8a30f20347a60a796a5221e07711c0d30d42dc3",
      "tree": "eed4dc37ddf15b981194a573701522605b58e69f",
      "parents": [
        "098c879e1f2d6ee7afbfe959f6b04070065cec90"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Sat Dec 21 21:55:17 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:22 2014 -0500"
      },
      "message": "tracing: Fix rcu handling of event_trigger_data filter field\n\nThe filter field of the event_trigger_data structure is protected under\nRCU sched locks. It was not annotated as such, and after doing so,\nsparse pointed out several locations that required fix ups.\n\nReported-by: kbuild test robot \u003cfengguang.wu@intel.com\u003e\nTested-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nAcked-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "098c879e1f2d6ee7afbfe959f6b04070065cec90",
      "tree": "22a2d64f30c82b70619786bc541ddcbe320f5d44",
      "parents": [
        "ac38fb8582d86ba887b5d07c0912dec135bf6931"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Sat Dec 21 17:39:40 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jan 02 16:17:12 2014 -0500"
      },
      "message": "tracing: Add generic tracing_lseek() function\n\nTrace event triggers added a lseek that uses the ftrace_filter_lseek()\nfunction. Unfortunately, when function tracing is not configured in\nthat function is not defined and the kernel fails to build.\n\nThis is the second time that function was added to a file ops and\nit broke the build due to requiring special config dependencies.\n\nMake a generic tracing_lseek() that all the tracing utilities may\nuse.\n\nAlso, modify the old ftrace_filter_lseek() to return 0 instead of\n1 on WRONLY. Not sure why it was a 1 as that does not make sense.\n\nThis also changes the old tracing_seek() to modify the file pos\npointer on WRONLY as well.\n\nReported-by: kbuild test robot \u003cfengguang.wu@intel.com\u003e\nTested-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nAcked-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "bac5fb97a173aeef8296b3efdb552e3489d55179",
      "tree": "2acb18186a608cca2eda53f6e110e792c1b6edbe",
      "parents": [
        "2875a08b2d1da7bae58fc01badb9b0ef1e8fc1a4"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:59:29 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Sat Dec 21 22:02:17 2013 -0500"
      },
      "message": "tracing: Add and use generic set_trigger_filter() implementation\n\nAdd a generic event_command.set_trigger_filter() op implementation and\nhave the current set of trigger commands use it - this essentially\ngives them all support for filters.\n\nSyntactically, filters are supported by adding \u0027if \u003cfilter\u003e\u0027 just\nafter the command, in which case only events matching the filter will\ninvoke the trigger.  For example, to add a filter to an\nenable/disable_event command:\n\n    echo \u0027enable_event:system:event if common_pid \u003d\u003d 999\u0027 \u003e \\\n              .../othersys/otherevent/trigger\n\nThe above command will only enable the system:event event if the\ncommon_pid field in the othersys:otherevent event is 999.\n\nAs another example, to add a filter to a stacktrace command:\n\n    echo \u0027stacktrace if common_pid \u003d\u003d 999\u0027 \u003e \\\n                   .../somesys/someevent/trigger\n\nThe above command will only trigger a stacktrace if the common_pid\nfield in the event is 999.\n\nThe filter syntax is the same as that described in the \u0027Event\nfiltering\u0027 section of Documentation/trace/events.txt.\n\nBecause triggers can now use filters, the trigger-invoking logic needs\nto be moved in those cases - e.g. for ftrace_raw_event_calls, if a\ntrigger has a filter associated with it, the trigger invocation now\nneeds to happen after the { assign; } part of the call, in order for\nthe trigger condition to be tested.\n\nThere\u0027s still a SOFT_DISABLED-only check at the top of e.g. the\nftrace_raw_events function, so when an event is soft disabled but not\nbecause of the presence of a trigger, the original SOFT_DISABLED\nbehavior remains unchanged.\n\nThere\u0027s also a bit of trickiness in that some triggers need to avoid\nbeing invoked while an event is currently in the process of being\nlogged, since the trigger may itself log data into the trace buffer.\nThus we make sure the current event is committed before invoking those\ntriggers.  To do that, we split the trigger invocation in two - the\nfirst part (event_triggers_call()) checks the filter using the current\ntrace record; if a command has the post_trigger flag set, it sets a\nbit for itself in the return value, otherwise it directly invoks the\ntrigger.  Once all commands have been either invoked or set their\nreturn flag, event_triggers_call() returns.  The current record is\nthen either committed or discarded; if any commands have deferred\ntheir triggers, those commands are finally invoked following the close\nof the current event by event_triggers_post_call().\n\nTo simplify the above and make it more efficient, the TRIGGER_COND bit\nis introduced, which is set only if a soft-disabled trigger needs to\nuse the log record for filter testing or needs to wait until the\ncurrent log record is closed.\n\nThe syscall event invocation code is also changed in analogous ways.\n\nBecause event triggers need to be able to create and free filters,\nthis also adds a couple external wrappers for the existing\ncreate_filter and free_filter functions, which are too generic to be\nmade extern functions themselves.\n\nLink: http://lkml.kernel.org/r/7164930759d8719ef460357f143d995406e4eead.1382622043.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7862ad1846e994574cb47dc503cc2b1646ea6593",
      "tree": "cec348fd60d6f85d1ae772996d0b8241a31d5b35",
      "parents": [
        "f21ecbb35f865a508073c0e73854da469a07f278"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:59:28 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Sat Dec 21 22:02:16 2013 -0500"
      },
      "message": "tracing: Add \u0027enable_event\u0027 and \u0027disable_event\u0027 event trigger commands\n\nAdd \u0027enable_event\u0027 and \u0027disable_event\u0027 event_command commands.\n\nenable_event and disable_event event triggers are added by the user\nvia these commands in a similar way and using practically the same\nsyntax as the analagous \u0027enable_event\u0027 and \u0027disable_event\u0027 ftrace\nfunction commands, but instead of writing to the set_ftrace_filter\nfile, the enable_event and disable_event triggers are written to the\nper-event \u0027trigger\u0027 files:\n\n    echo \u0027enable_event:system:event\u0027 \u003e .../othersys/otherevent/trigger\n    echo \u0027disable_event:system:event\u0027 \u003e .../othersys/otherevent/trigger\n\nThe above commands will enable or disable the \u0027system:event\u0027 trace\nevents whenever the othersys:otherevent events are hit.\n\nThis also adds a \u0027count\u0027 version that limits the number of times the\ncommand will be invoked:\n\n    echo \u0027enable_event:system:event:N\u0027 \u003e .../othersys/otherevent/trigger\n    echo \u0027disable_event:system:event:N\u0027 \u003e .../othersys/otherevent/trigger\n\nWhere N is the number of times the command will be invoked.\n\nThe above commands will will enable or disable the \u0027system:event\u0027\ntrace events whenever the othersys:otherevent events are hit, but only\nN times.\n\nThis also makes the find_event_file() helper function extern, since\nit\u0027s useful to use from other places, such as the event triggers code,\nso make it accessible.\n\nLink: http://lkml.kernel.org/r/f825f3048c3f6b026ee37ae5825f9fc373451828.1382622043.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "93e31ffbf417a84fbae518fb46b3ea3f0d8fa6e1",
      "tree": "c7eb0f81daec69a2505688bb5fcee94e2374be5f",
      "parents": [
        "2a2df321158817811c5dc206dce808e0aa9f6d89"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:59:26 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Sat Dec 21 22:01:22 2013 -0500"
      },
      "message": "tracing: Add \u0027snapshot\u0027 event trigger command\n\nAdd \u0027snapshot\u0027 event_command.  snapshot event triggers are added by\nthe user via this command in a similar way and using practically the\nsame syntax as the analogous \u0027snapshot\u0027 ftrace function command, but\ninstead of writing to the set_ftrace_filter file, the snapshot event\ntrigger is written to the per-event \u0027trigger\u0027 files:\n\n    echo \u0027snapshot\u0027 \u003e .../somesys/someevent/trigger\n\nThe above command will turn on snapshots for someevent i.e. whenever\nsomeevent is hit, a snapshot will be done.\n\nThis also adds a \u0027count\u0027 version that limits the number of times the\ncommand will be invoked:\n\n    echo \u0027snapshot:N\u0027 \u003e .../somesys/someevent/trigger\n\nWhere N is the number of times the command will be invoked.\n\nThe above command will snapshot N times for someevent i.e. whenever\nsomeevent is hit N times, a snapshot will be done.\n\nAlso adds a new tracing_alloc_snapshot() function - the existing\ntracing_snapshot_alloc() function is a special version of\ntracing_snapshot() that also does the snapshot allocation - the\nsnapshot triggers would like to be able to do just the allocation but\nnot take a snapshot; the existing tracing_snapshot_alloc() in turn now\nalso calls tracing_alloc_snapshot() underneath to do that allocation.\n\nLink: http://lkml.kernel.org/r/c9524dd07ce01f9dcbd59011290e0a8d5b47d7ad.1382622043.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\n[ fix up from kbuild test robot \u003cfengguang.wu@intel.com report ]\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "85f2b08268c014e290b600ba49fa85530600eaa1",
      "tree": "911b2e24ac56434fc04e8ecafe6251536b6f06a0",
      "parents": [
        "319e2e3f63c348a9b66db4667efa73178e18b17d"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:59:24 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Dec 20 18:40:22 2013 -0500"
      },
      "message": "tracing: Add basic event trigger framework\n\nAdd a \u0027trigger\u0027 file for each trace event, enabling \u0027trace event\ntriggers\u0027 to be set for trace events.\n\n\u0027trace event triggers\u0027 are patterned after the existing \u0027ftrace\nfunction triggers\u0027 implementation except that triggers are written to\nper-event \u0027trigger\u0027 files instead of to a single file such as the\n\u0027set_ftrace_filter\u0027 used for ftrace function triggers.\n\nThe implementation is meant to be entirely separate from ftrace\nfunction triggers, in order to keep the respective implementations\nrelatively simple and to allow them to diverge.\n\nThe event trigger functionality is built on top of SOFT_DISABLE\nfunctionality.  It adds a TRIGGER_MODE bit to the ftrace_event_file\nflags which is checked when any trace event fires.  Triggers set for a\nparticular event need to be checked regardless of whether that event\nis actually enabled or not - getting an event to fire even if it\u0027s not\nenabled is what\u0027s already implemented by SOFT_DISABLE mode, so trigger\nmode directly reuses that.  Event trigger essentially inherit the soft\ndisable logic in __ftrace_event_enable_disable() while adding a bit of\nlogic and trigger reference counting via tm_ref on top of that in a\nnew trace_event_trigger_enable_disable() function.  Because the base\n__ftrace_event_enable_disable() code now needs to be invoked from\noutside trace_events.c, a wrapper is also added for those usages.\n\nThe triggers for an event are actually invoked via a new function,\nevent_triggers_call(), and code is also added to invoke them for\nftrace_raw_event calls as well as syscall events.\n\nThe main part of the patch creates a new trace_events_trigger.c file\nto contain the trace event triggers implementation.\n\nThe standard open, read, and release file operations are implemented\nhere.\n\nThe open() implementation sets up for the various open modes of the\n\u0027trigger\u0027 file.  It creates and attaches the trigger iterator and sets\nup the command parser.  If opened for reading set up the trigger\nseq_ops.\n\nThe read() implementation parses the event trigger written to the\n\u0027trigger\u0027 file, looks up the trigger command, and passes it along to\nthat event_command\u0027s func() implementation for command-specific\nprocessing.\n\nThe release() implementation does whatever cleanup is needed to\nrelease the \u0027trigger\u0027 file, like releasing the parser and trigger\niterator, etc.\n\nA couple of functions for event command registration and\nunregistration are added, along with a list to add them to and a mutex\nto protect them, as well as an (initially empty) registration function\nto add the set of commands that will be added by future commits, and\ncall to it from the trace event initialization code.\n\nalso added are a couple trigger-specific data structures needed for\nthese implementations such as a trigger iterator and a struct for\ntrigger-specific data.\n\nA couple structs consisting mostly of function meant to be implemented\nin command-specific ways, event_command and event_trigger_ops, are\nused by the generic event trigger command implementations.  They\u0027re\nbeing put into trace.h alongside the other trace_event data structures\nand functions, in the expectation that they\u0027ll be needed in several\ntrace_event-related files such as trace_events_trigger.c and\ntrace_events.c.\n\nThe event_command.func() function is meant to be called by the trigger\nparsing code in order to add a trigger instance to the corresponding\nevent.  It essentially coordinates adding a live trigger instance to\nthe event, and arming the triggering the event.\n\nEvery event_command func() implementation essentially does the\nsame thing for any command:\n\n   - choose ops - use the value of param to choose either a number or\n     count version of event_trigger_ops specific to the command\n   - do the register or unregister of those ops\n   - associate a filter, if specified, with the triggering event\n\nThe reg() and unreg() ops allow command-specific implementations for\nevent_trigger_op registration and unregistration, and the\nget_trigger_ops() op allows command-specific event_trigger_ops\nselection to be parameterized.  When a trigger instance is added, the\nreg() op essentially adds that trigger to the triggering event and\narms it, while unreg() does the opposite.  The set_filter() function\nis used to associate a filter with the trigger - if the command\ndoesn\u0027t specify a set_filter() implementation, the command will ignore\nfilters.\n\nEach command has an associated trigger_type, which serves double duty,\nboth as a unique identifier for the command as well as a value that\ncan be used for setting a trigger mode bit during trigger invocation.\n\nThe signature of func() adds a pointer to the event_command struct,\nused to invoke those functions, along with a command_data param that\ncan be passed to the reg/unreg functions.  This allows func()\nimplementations to use command-specific blobs and supports code\nre-use.\n\nThe event_trigger_ops.func() command corrsponds to the trigger \u0027probe\u0027\nfunction that gets called when the triggering event is actually\ninvoked.  The other functions are used to list the trigger when\nneeded, along with a couple mundane book-keeping functions.\n\nThis also moves event_file_data() into trace.h so it can be used\noutside of trace_events.c.\n\nLink: http://lkml.kernel.org/r/316d95061accdee070aac8e5750afba0192fa5b9.1382622043.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nIdea-by: Steve Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b29c8306a368cf65782669eba079f81dc861c54d",
      "tree": "35d75aa0e671070d4024f11338d3ae89b078b1ed",
      "parents": [
        "0bde7294e2ada03d0f1cc61cec51274081d9a9cf",
        "3a81a5210b7d33bb6d836b4c4952a54166a336f3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 16 12:23:18 2013 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Nov 16 12:23:18 2013 -0800"
      },
      "message": "Merge tag \u0027trace-3.13\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace\n\nPull tracing update from Steven Rostedt:\n \"This batch of changes is mostly clean ups and small bug fixes.  The\n  only real feature that was added this release is from Namhyung Kim,\n  who introduced \"set_graph_notrace\" filter that lets you run the\n  function graph tracer and not trace particular functions and their\n  call chain.\n\n  Tom Zanussi added some updates to the ftrace multibuffer tracing that\n  made it more consistent with the top level tracing.\n\n  One of the fixes for perf function tracing required an API change in\n  RCU; the addition of \"rcu_is_watching()\".  As Paul McKenney is pushing\n  that change in this release too, he gave me a branch that included all\n  the changes to get that working, and I pulled that into my tree in\n  order to complete the perf function tracing fix\"\n\n* tag \u0027trace-3.13\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:\n  tracing: Add rcu annotation for syscall trace descriptors\n  tracing: Do not use signed enums with unsigned long long in fgragh output\n  tracing: Remove unused function ftrace_off_permanent()\n  tracing: Do not assign filp-\u003eprivate_data to freed memory\n  tracing: Add helper function tracing_is_disabled()\n  tracing: Open tracer when ftrace_dump_on_oops is used\n  tracing: Add support for SOFT_DISABLE to syscall events\n  tracing: Make register/unregister_ftrace_command __init\n  tracing: Update event filters for multibuffer\n  recordmcount.pl: Add support for __fentry__\n  ftrace: Have control op function callback only trace when RCU is watching\n  rcu: Do not trace rcu_is_watching() functions\n  ftrace/x86: skip over the breakpoint for ftrace caller\n  trace/trace_stat: use rbtree postorder iteration helper instead of opencoding\n  ftrace: Add set_graph_notrace filter\n  ftrace: Narrow down the protected area of graph_lock\n  ftrace: Introduce struct ftrace_graph_data\n  ftrace: Get rid of ftrace_graph_filter_enabled\n  tracing: Fix potential out-of-bounds in trace_get_user()\n  tracing: Show more exact help information about snapshot\n"
    },
    {
      "commit": "3a81a5210b7d33bb6d836b4c4952a54166a336f3",
      "tree": "2aaf3a8773715709df30ae6acf9a5a8a61214929",
      "parents": [
        "6fc84ea70eae478099c866ace022ecfdef998032"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Mon Nov 11 11:47:06 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Nov 11 11:47:06 2013 -0500"
      },
      "message": "tracing: Add rcu annotation for syscall trace descriptors\n\nsparse complains about the enter/exit_sysycall_files[] variables being\ndereferenced with rcu_dereference_sched(). The fields need to be\nannotated with __rcu.\n\nReported-by: kbuild test robot \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e5137b50a0640009fd63a3e65c14bc6e1be8796a",
      "tree": "ef8475a7281a78d7ad7bd6694b44c8a32c12f970",
      "parents": [
        "7053ea1a34fa8567cb5e3c39e04ace4c5d0fbeaa"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Fri Oct 04 17:28:26 2013 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Nov 11 12:43:39 2013 +0100"
      },
      "message": "ftrace, sched: Add TRACE_FLAG_PREEMPT_RESCHED\n\nSince the introduction of PREEMPT_NEED_RESCHED in:\n\n  f27dde8deef3 (\"sched: Add NEED_RESCHED to the preempt_count\")\n\nwe need to be able to look at both TIF_NEED_RESCHED and\nPREEMPT_NEED_RESCHED to understand the full preemption behaviour.\n\nAdd it to the trace output.\n\nSigned-off-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nCc: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Yuanhan Liu \u003cyuanhan.liu@linux.intel.com\u003e\nLink: http://lkml.kernel.org/r/20131004152826.GP3081@twins.programming.kicks-ass.net\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "6fc84ea70eae478099c866ace022ecfdef998032",
      "tree": "705f3bffb3513b96de7c9563371676451318700e",
      "parents": [
        "042b10d83d05174e50ee861ee3aca55fd6204324"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 06 14:50:06 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 06 15:26:56 2013 -0500"
      },
      "message": "tracing: Do not use signed enums with unsigned long long in fgragh output\n\nThe duration field of print_graph_duration() can also be used\nto do the space filling by passing an enum in it:\n\n  DURATION_FILL_FULL\n  DURATION_FILL_START\n  DURATION_FILL_END\n\nThe problem is that these are enums and defined as negative,\nbut the duration field is unsigned long long. Most archs are\nfine with this but blackfin fails to compile because of it:\n\nkernel/built-in.o: In function `print_graph_duration\u0027:\nkernel/trace/trace_functions_graph.c:782: undefined reference to `__ucmpdi2\u0027\n\nOverloading a unsigned long long with an signed enum is just\nbad in principle. We can accomplish the same thing by using\npart of the flags field instead.\n\nCc: Mike Frysinger \u003cvapier@gentoo.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2e86421debc2cf4d1513c9b73fcd34c5ce431ae3",
      "tree": "d72c2718037c2dc1ea9ddc26b8c9eb98c30efb66",
      "parents": [
        "b2f974d6af9accfec11e69cc76d2ab9f0c7359e0"
      ],
      "author": {
        "name": "Geyslan G. Bem",
        "email": "geyslan@gmail.com",
        "time": "Fri Oct 18 21:15:54 2013 -0300"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 06 11:06:00 2013 -0500"
      },
      "message": "tracing: Add helper function tracing_is_disabled()\n\nThis patch creates the function \u0027tracing_is_disabled\u0027, which\ncan be used outside of trace.c.\n\nLink: http://lkml.kernel.org/r/1382141754-12155-1-git-send-email-geyslan@gmail.com\n\nSigned-off-by: Geyslan G. Bem \u003cgeyslan@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "d562aff93bfb530b0992141500a402d17081189d",
      "tree": "af541e2539c575932a6b0c13d69792472c3d26fa",
      "parents": [
        "38de93abec8d8acd8d6dbbe9b0d92d6d5cdb3090"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:34:19 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Nov 05 17:48:49 2013 -0500"
      },
      "message": "tracing: Add support for SOFT_DISABLE to syscall events\n\nThe original SOFT_DISABLE patches didn\u0027t add support for soft disable\nof syscall events; this adds it.\n\nAdd an array of ftrace_event_file pointers indexed by syscall number\nto the trace array and remove the existing enabled bitmaps, which as a\nresult are now redundant.  The ftrace_event_file structs in turn\ncontain the soft disable flags we need for per-syscall soft disable\naccounting.\n\nAdding ftrace_event_files also means we can remove the USE_CALL_FILTER\nbit, thus enabling multibuffer filter support for syscall events.\n\nLink: http://lkml.kernel.org/r/6e72b566e85d8df8042f133efbc6c30e21fb017e.1382620672.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f306cc82a93d6b19f01634b80c580b9755c8b7cc",
      "tree": "1a9ef8d44ed192185e4d6da5f7154f9a1c2075cb",
      "parents": [
        "f02b625d0341519238ab3d9cc8706ff4bd45fb89"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tom.zanussi@linux.intel.com",
        "time": "Thu Oct 24 08:34:17 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Nov 05 16:50:20 2013 -0500"
      },
      "message": "tracing: Update event filters for multibuffer\n\nThe trace event filters are still tied to event calls rather than\nevent files, which means you don\u0027t get what you\u0027d expect when using\nfilters in the multibuffer case:\n\nBefore:\n\n  # echo \u0027bytes_alloc \u003e 8192\u0027 \u003e /sys/kernel/debug/tracing/events/kmem/kmalloc/filter\n  # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/filter\n  bytes_alloc \u003e 8192\n  # mkdir /sys/kernel/debug/tracing/instances/test1\n  # echo \u0027bytes_alloc \u003e 2048\u0027 \u003e /sys/kernel/debug/tracing/instances/test1/events/kmem/kmalloc/filter\n  # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/filter\n  bytes_alloc \u003e 2048\n  # cat /sys/kernel/debug/tracing/instances/test1/events/kmem/kmalloc/filter\n  bytes_alloc \u003e 2048\n\nSetting the filter in tracing/instances/test1/events shouldn\u0027t affect\nthe same event in tracing/events as it does above.\n\nAfter:\n\n  # echo \u0027bytes_alloc \u003e 8192\u0027 \u003e /sys/kernel/debug/tracing/events/kmem/kmalloc/filter\n  # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/filter\n  bytes_alloc \u003e 8192\n  # mkdir /sys/kernel/debug/tracing/instances/test1\n  # echo \u0027bytes_alloc \u003e 2048\u0027 \u003e /sys/kernel/debug/tracing/instances/test1/events/kmem/kmalloc/filter\n  # cat /sys/kernel/debug/tracing/events/kmem/kmalloc/filter\n  bytes_alloc \u003e 8192\n  # cat /sys/kernel/debug/tracing/instances/test1/events/kmem/kmalloc/filter\n  bytes_alloc \u003e 2048\n\nWe\u0027d like to just move the filter directly from ftrace_event_call to\nftrace_event_file, but there are a couple cases that don\u0027t yet have\nmultibuffer support and therefore have to continue using the current\nevent_call-based filters.  For those cases, a new USE_CALL_FILTER bit\nis added to the event_call flags, whose main purpose is to keep the\nold behavior for those cases until they can be updated with\nmultibuffer support; at that point, the USE_CALL_FILTER flag (and the\nnew associated call_filter_check_discard() function) can go away.\n\nThe multibuffer support also made filter_current_check_discard()\nredundant, so this change removes that function as well and replaces\nit with filter_check_discard() (or call_filter_check_discard() as\nappropriate).\n\nLink: http://lkml.kernel.org/r/f16e9ce4270c62f46b2e966119225e1c3cca7e60.1382620672.git.tom.zanussi@linux.intel.com\n\nSigned-off-by: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "29ad23b00474c34e3b5040dda508c78d33a1a3eb",
      "tree": "f6969382cf228535853c8ea3b60056e58678b673",
      "parents": [
        "6a10108bdbbfb66e5c431fd1056534e9717d34eb"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Mon Oct 14 17:24:26 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Oct 18 22:23:16 2013 -0400"
      },
      "message": "ftrace: Add set_graph_notrace filter\n\nThe set_graph_notrace filter is analogous to set_ftrace_notrace and\ncan be used for eliminating uninteresting part of function graph trace\noutput.  It also works with set_graph_function nicely.\n\n  # cd /sys/kernel/debug/tracing/\n  # echo do_page_fault \u003e set_graph_function\n  # perf ftrace live true\n   2)               |  do_page_fault() {\n   2)               |    __do_page_fault() {\n   2)   0.381 us    |      down_read_trylock();\n   2)   0.055 us    |      __might_sleep();\n   2)   0.696 us    |      find_vma();\n   2)               |      handle_mm_fault() {\n   2)               |        handle_pte_fault() {\n   2)               |          __do_fault() {\n   2)               |            filemap_fault() {\n   2)               |              find_get_page() {\n   2)   0.033 us    |                __rcu_read_lock();\n   2)   0.035 us    |                __rcu_read_unlock();\n   2)   1.696 us    |              }\n   2)   0.031 us    |              __might_sleep();\n   2)   2.831 us    |            }\n   2)               |            _raw_spin_lock() {\n   2)   0.046 us    |              add_preempt_count();\n   2)   0.841 us    |            }\n   2)   0.033 us    |            page_add_file_rmap();\n   2)               |            _raw_spin_unlock() {\n   2)   0.057 us    |              sub_preempt_count();\n   2)   0.568 us    |            }\n   2)               |            unlock_page() {\n   2)   0.084 us    |              page_waitqueue();\n   2)   0.126 us    |              __wake_up_bit();\n   2)   1.117 us    |            }\n   2)   7.729 us    |          }\n   2)   8.397 us    |        }\n   2)   8.956 us    |      }\n   2)   0.085 us    |      up_read();\n   2) + 12.745 us   |    }\n   2) + 13.401 us   |  }\n  ...\n\n  # echo handle_mm_fault \u003e set_graph_notrace\n  # perf ftrace live true\n   1)               |  do_page_fault() {\n   1)               |    __do_page_fault() {\n   1)   0.205 us    |      down_read_trylock();\n   1)   0.041 us    |      __might_sleep();\n   1)   0.344 us    |      find_vma();\n   1)   0.069 us    |      up_read();\n   1)   4.692 us    |    }\n   1)   5.311 us    |  }\n  ...\n\nLink: http://lkml.kernel.org/r/1381739066-7531-5-git-send-email-namhyung@kernel.org\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "9aa72b4bf823b7b439fbba95fa84abee3b9d6d79",
      "tree": "848399ae19cbfe4927fd60179c3c2f8f2d02e73a",
      "parents": [
        "057db8488b53d5e4faa0cedb2f39d4ae75dfbdbb"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Mon Oct 14 17:24:23 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Oct 18 22:15:25 2013 -0400"
      },
      "message": "ftrace: Get rid of ftrace_graph_filter_enabled\n\nThe ftrace_graph_filter_enabled means that user sets function filter\nand it always has same meaning of ftrace_graph_count \u003e 0.\n\nLink: http://lkml.kernel.org/r/1381739066-7531-2-git-send-email-namhyung@kernel.org\n\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7eb69529cbaf4229baf5559a400a7a46352c6e52",
      "tree": "e8d16dd5a5f5db83ed6f84439c1416e3a65f74ac",
      "parents": [
        "300893b08f3bc7057a7a5f84074090ba66c8b5ca",
        "a0a5a0561f63905fe94c49bc567615829f42ce1e"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 09 14:42:15 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Sep 09 14:42:15 2013 -0700"
      },
      "message": "Merge tag \u0027trace-3.12\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace\n\nPull tracing updates from Steven Rostedt:\n \"Not much changes for the 3.12 merge window.  The major tracing changes\n  are still in flux, and will have to wait for 3.13.\n\n  The changes for 3.12 are mostly clean ups and minor fixes.\n\n  H Peter Anvin added a check to x86_32 static function tracing that\n  helps a small segment of the kernel community.\n\n  Oleg Nesterov had a few changes from 3.11, but were mostly clean ups\n  and not worth pushing in the -rc time frame.\n\n  Li Zefan had small clean up with annotating a raw_init with __init.\n\n  I fixed a slight race in updating function callbacks, but the race is\n  so small and the bug that happens when it occurs is so minor it\u0027s not\n  even worth pushing to stable.\n\n  The only real enhancement is from Alexander Z Lam that made the\n  tracing_cpumask work for trace buffer instances, instead of them all\n  sharing a global cpumask\"\n\n* tag \u0027trace-3.12\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:\n  ftrace/rcu: Do not trace debug_lockdep_rcu_enabled()\n  x86-32, ftrace: Fix static ftrace when early microcode is enabled\n  ftrace: Fix a slight race in modifying what function callback gets traced\n  tracing: Make tracing_cpumask available for all instances\n  tracing: Kill the !CONFIG_MODULES code in trace_events.c\n  tracing: Don\u0027t pass file_operations array to event_create_dir()\n  tracing: Kill trace_create_file_ops() and friends\n  tracing/syscalls: Annotate raw_init function with __init\n"
    },
    {
      "commit": "7d992feb7694a21ee81f22894b455dadd5d1c110",
      "tree": "d0f0961186b1c31c536a26a7f986ad7ca677453b",
      "parents": [
        "6e4664525b1db28f8c4e1130957f70a94c19213e",
        "25f27ce4a6a4995c8bdd69b4b2180465ed5ad2b8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Sep 03 07:41:11 2013 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Tue Sep 03 07:41:11 2013 +0200"
      },
      "message": "Merge branch \u0027rcu/next\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu\n\nPull RCU updates from Paul E. McKenney:\n\n\"\n * Update RCU documentation.  These were posted to LKML at\n   https://lkml.org/lkml/2013/8/19/611.\n\n * Miscellaneous fixes.  These were posted to LKML at\n   https://lkml.org/lkml/2013/8/19/619.\n\n * Full-system idle detection.  This is for use by Frederic\n   Weisbecker\u0027s adaptive-ticks mechanism.  Its purpose is\n   to allow the timekeeping CPU to shut off its tick when\n   all other CPUs are idle.  These were posted to LKML at\n   https://lkml.org/lkml/2013/8/19/648.\n\n * Improve rcutorture test coverage.  These were posted to LKML at\n   https://lkml.org/lkml/2013/8/19/675.\n\"\n\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "ccfe9e42e451232dd17a230d1b4e979c3d15311e",
      "tree": "44e4f7fab140208e1826c3415bb9229fc847dda5",
      "parents": [
        "836d481ed7c91152c6144ea3a3363cad3940b3e0"
      ],
      "author": {
        "name": "Alexander Z Lam",
        "email": "azl@google.com",
        "time": "Thu Aug 08 09:47:45 2013 -0700"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Aug 22 12:45:24 2013 -0400"
      },
      "message": "tracing: Make tracing_cpumask available for all instances\n\nAllow tracer instances to disable tracing by cpu by moving\nthe static global tracing_cpumask into trace_array.\n\nLink: http://lkml.kernel.org/r/921622317f239bfc2283cac2242647801ef584f2.1375980149.git.azl@google.com\n\nCc: Vaibhav Nagarnaik \u003cvnagarnaik@google.com\u003e\nCc: David Sharp \u003cdhsharp@google.com\u003e\nCc: Alexander Z Lam \u003clambchop468@gmail.com\u003e\nSigned-off-by: Alexander Z Lam \u003cazl@google.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "102c9323c35a83789ad5ebd3c45fa8fb389add88",
      "tree": "1774b9144e5a00a49358475c1aca9ad33713e417",
      "parents": [
        "3b2f64d00c46e1e4e9bd0bb9bb12619adac27a4b"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Jul 12 17:07:27 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Jul 26 13:39:44 2013 -0400"
      },
      "message": "tracing: Add __tracepoint_string() to export string pointers\n\nThere are several tracepoints (mostly in RCU), that reference a string\npointer and uses the print format of \"%s\" to display the string that\nexists in the kernel, instead of copying the actual string to the\nring buffer (saves time and ring buffer space).\n\nBut this has an issue with userspace tools that read the binary buffers\nthat has the address of the string but has no access to what the string\nitself is. The end result is just output that looks like:\n\n rcu_dyntick:          ffffffff818adeaa 1 0\n rcu_dyntick:          ffffffff818adeb5 0 140000000000000\n rcu_dyntick:          ffffffff818adeb5 0 140000000000000\n rcu_utilization:      ffffffff8184333b\n rcu_utilization:      ffffffff8184333b\n\nThe above is pretty useless when read by the userspace tools. Ideally\nwe would want something that looks like this:\n\n rcu_dyntick:          Start 1 0\n rcu_dyntick:          End 0 140000000000000\n rcu_dyntick:          Start 140000000000000 0\n rcu_callback:         rcu_preempt rhp\u003d0xffff880037aff710 func\u003dput_cred_rcu 0/4\n rcu_callback:         rcu_preempt rhp\u003d0xffff880078961980 func\u003dfile_free_rcu 0/5\n rcu_dyntick:          End 0 1\n\nThe trace_printk() which also only stores the address of the string\nformat instead of recording the string into the buffer itself, exports\nthe mapping of kernel addresses to format strings via the printk_format\nfile in the debugfs tracing directory.\n\nThe tracepoint strings can use this same method and output the format\nto the same file and the userspace tools will be able to decipher\nthe address without any modification.\n\nThe tracepoint strings need its own section to save the strings because\nthe trace_printk section will cause the trace_printk() buffers to be\nallocated if anything exists within the section. trace_printk() is only\nused for debugging and should never exist in the kernel, we can not use\nthe trace_printk sections.\n\nAdd a new tracepoint_str section that will also be examined by the output\nof the printk_format file.\n\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "9c01fe4593db123c5a72dc36f0400f776e92c954",
      "tree": "717207fb5fbd5b12c2aa7bba5457f79af18219a5",
      "parents": [
        "6484c71cbc170634fa131b6d022d86d61686b88b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Tue Jul 23 17:26:13 2013 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@rostedt.homelinux.com",
        "time": "Wed Jul 24 11:22:53 2013 -0400"
      },
      "message": "tracing: Kill trace_cpu struct/members\n\nAfter the previous changes trace_array_cpu-\u003etrace_cpu and\ntrace_array-\u003etrace_cpu becomes write-only. Remove these members\nand kill \"struct trace_cpu\" as well.\n\nAs a side effect this also removes memset(per_cpu_memory, 0).\nIt was not needed, alloc_percpu() returns zero-filled memory.\n\nLink: http://lkml.kernel.org/r/20130723152613.GA23741@redhat.com\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a644a7e9587802eabb2e229177606f6a74a60fc1",
      "tree": "1d32e7fa1fc1aa57ccca8492a5268845ac4c2a09",
      "parents": [
        "cd458ba9d5a5592d37b5145e560071e91ea762ac"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Jul 19 16:20:36 2013 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Jul 19 10:56:02 2013 -0400"
      },
      "message": "tracing: Kill trace_array-\u003ewaiter\n\nTrivial. trace_array-\u003ewaiter has no users since 6eaaa5d5\n\"tracing/core: use appropriate waiting on trace_pipe\".\n\nLink: http://lkml.kernel.org/r/20130719142036.GA1594@redhat.com\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8f768993394a8c0d3801033c11fd86ce8c88dcac",
      "tree": "67321d3042a7561729c55763190ffde07336904a",
      "parents": [
        "f77d09a384676bde6445413949d9d2c508ff3e62"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jul 18 14:41:51 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jul 18 21:31:31 2013 -0400"
      },
      "message": "tracing: Add ref_data to function and fgraph tracer structs\n\nThe selftest for function and function graph tracers are defined as\n__init, as they are only executed at boot up. The \"tracer\" structs\nthat are associated to those tracers are not setup as __init as they\nare used after boot. To stop mismatch warnings, those structures\nneed to be annotated with __ref_data.\n\nCurrently, the tracer structures are defined to __read_mostly, as they\ndo not really change. But in the future they should be converted to\nconsts, but that will take a little work because they have a \"next\"\npointer that gets updated when they are registered. That will have to\nwait till the next major release.\n\nLink: http://lkml.kernel.org/r/1373596735.17876.84.camel@gandalf.local.home\n\nReported-by: kbuild test robot \u003cfengguang.wu@intel.com\u003e\nReported-by: Chen Gang \u003cgang.chen@asianux.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "c72bb316916b1a6cf35e1d5238566ef27b0b7f80",
      "tree": "1bd7bb147302abf907bba9fb83cf74b4a5b6ef0d",
      "parents": [
        "6d128e1e72bf082542e85f72e6b7ddd704193588",
        "dcc302232c1f9b3ca16f6b8ee190eb0b1a8a0da3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 11 09:02:09 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 11 09:02:09 2013 -0700"
      },
      "message": "Merge tag \u0027trace-3.11\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace\n\nPull tracing changes from Steven Rostedt:\n \"The majority of the changes here are cleanups for the large changes\n  that were added to 3.10, which includes several bug fixes that have\n  been marked for stable.\n\n  As for new features, there were a few, but nothing to write to LWN\n  about.  These include:\n\n  New function trigger called \"dump\" and \"cpudump\" that will cause\n  ftrace to dump its buffer to the console when the function is called.\n  The difference between \"dump\" and \"cpudump\" is that \"dump\" will dump\n  the entire contents of the ftrace buffer, where as \"cpudump\" will only\n  dump the contents of the ftrace buffer for the CPU that called the\n  function.\n\n  Another small enhancement is a new sysctl switch called\n  \"traceoff_on_warning\" which, when enabled, will disable tracing if any\n  WARN_ON() is triggered.  This is useful if you want to debug what\n  caused a warning and do not want to risk losing your trace data by the\n  ring buffer overwriting the data before you can disable it.  There\u0027s\n  also a kernel command line option that will make this enabled at boot\n  up called the same thing\"\n\n* tag \u0027trace-3.11\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (34 commits)\n  tracing: Make tracing_open_generic_{tr,tc}() static\n  tracing: Remove ftrace() function\n  tracing: Remove TRACE_EVENT_TYPE enum definition\n  tracing: Make tracer_tracing_{off,on,is_on}() static\n  tracing: Fix irqs-off tag display in syscall tracing\n  uprobes: Fix return value in error handling path\n  tracing: Fix race between deleting buffer and setting events\n  tracing: Add trace_array_get/put() to event handling\n  tracing: Get trace_array ref counts when accessing trace files\n  tracing: Add trace_array_get/put() to handle instance refs better\n  tracing: Protect ftrace_trace_arrays list in trace_events.c\n  tracing: Make trace_marker use the correct per-instance buffer\n  ftrace: Do not run selftest if command line parameter is set\n  tracing/kprobes: Don\u0027t pass addr\u003dip to perf_trace_buf_submit()\n  tracing: Use flag buffer_disabled for irqsoff tracer\n  tracing/kprobes: Turn trace_probe-\u003efiles into list_head\n  tracing: Fix disabling of soft disable\n  tracing: Add missing syscall_metadata comment\n  tracing: Simplify code for showing of soft disabled flag\n  tracing/kprobes: Kill probe_enable_lock\n  ...\n"
    },
    {
      "commit": "8de1eb02778b64f8b292db531cf39a429f84315f",
      "tree": "4e83db2c61e36e6a04d29435a57c694fe9452d0a",
      "parents": [
        "4480361c3c592fcbce3ef74e030719f0715e3a7e"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Wed Apr 10 11:26:30 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jul 02 20:42:32 2013 -0400"
      },
      "message": "tracing: Remove ftrace() function\n\nThe only caller of function ftrace(...) was removed a long time ago,\nso remove the function body as well.\n\nLink: http://lkml.kernel.org/r/1365564393-10972-10-git-send-email-jovi.zhangwei@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "4480361c3c592fcbce3ef74e030719f0715e3a7e",
      "tree": "b2055f8de67207acf02d7b931ca581050e30c979",
      "parents": [
        "5280bcef91e706770cc1706eb97353e3513322b9"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Wed Apr 10 11:26:28 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jul 02 20:42:31 2013 -0400"
      },
      "message": "tracing: Remove TRACE_EVENT_TYPE enum definition\n\nTRACE_EVENT_TYPE enum is not used at present, remove it.\n\nLink: http://lkml.kernel.org/r/1365564393-10972-8-git-send-email-jovi.zhangwei@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8e2e2fa47129532a30cff6c25a47078dc97d9260",
      "tree": "6cc93f432b3186200c7afeaca1a432e497ad949c",
      "parents": [
        "7b85af63034818e43aee6c1d7bf1c7c6796a9073"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jul 02 15:30:53 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jul 02 17:13:34 2013 -0400"
      },
      "message": "tracing: Add trace_array_get/put() to event handling\n\nCommit a695cb58162 \"tracing: Prevent deleting instances when they are being read\"\ntried to fix a race between deleting a trace instance and reading contents\nof a trace file. But it wasn\u0027t good enough. The following could crash the kernel:\n\n # cd /sys/kernel/debug/tracing/instances\n # ( while :; do mkdir foo; rmdir foo; done ) \u0026\n # ( while :; do echo 1 \u003e foo/events/sched/sched_switch 2\u003e /dev/null; done ) \u0026\n\nLuckily this can only be done by root user, but it should be fixed regardless.\n\nThe problem is that a delete of the file can happen after the write to the event\nis opened, but before the enabling happens.\n\nThe solution is to make sure the trace_array is available before succeeding in\nopening for write, and incerment the ref counter while opened.\n\nNow the instance can be deleted when the events are writing to the buffer,\nbut the deletion of the instance will disable all events before the instance\nis actually deleted.\n\nCc: stable@vger.kernel.org # 3.10\nReported-by: Alexander Lam \u003cazl@google.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a82274151af2b075163e3c42c828529dee311487",
      "tree": "0923f9f765266925e9c800a461917ea312d3cc16",
      "parents": [
        "2d71619c59fac95a5415a326162fa046161b938c"
      ],
      "author": {
        "name": "Alexander Z Lam",
        "email": "azl@google.com",
        "time": "Mon Jul 01 19:37:54 2013 -0700"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jul 01 23:30:08 2013 -0400"
      },
      "message": "tracing: Protect ftrace_trace_arrays list in trace_events.c\n\nThere are multiple places where the ftrace_trace_arrays list is accessed in\ntrace_events.c without the trace_types_lock held.\n\nLink: http://lkml.kernel.org/r/1372732674-22726-1-git-send-email-azl@google.com\n\nCc: Vaibhav Nagarnaik \u003cvnagarnaik@google.com\u003e\nCc: David Sharp \u003cdhsharp@google.com\u003e\nCc: Alexander Z Lam \u003clambchop468@gmail.com\u003e\nCc: stable@vger.kernel.org # 3.10\nSigned-off-by: Alexander Z Lam \u003cazl@google.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f1ed7c741fcd0c3d7d318e7c19813d89934b9296",
      "tree": "58721d29f205342f2099c8548860bcbe6bee13e7",
      "parents": [
        "cf6735a4b103b801753748531e3658cdc8cafa5e"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jun 27 22:18:06 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Jul 01 20:57:15 2013 -0400"
      },
      "message": "ftrace: Do not run selftest if command line parameter is set\n\nIf the kernel command line ftrace filter parameters are set\n(ftrace_filter or ftrace_notrace), force the function self test to\npass, with a warning why it was forced.\n\nIf the user adds a filter to the kernel command line, it is assumed\nthat they know what they are doing, and the self test should just not\nrun instead of failing (which disables function tracing) or clearing\nthe filter, as that will probably annoy the user.\n\nIf the user wants the selftest to run, the message will tell them why\nit did not.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "58e8eedf18577c7eac722d5d1f190507ea263d1b",
      "tree": "6a44f69cf8711a4853fc4e921e77cc64784fa9f9",
      "parents": [
        "f17a5194859a82afe4164e938b92035b86c55794"
      ],
      "author": {
        "name": "Yoshihiro YUNOMAE",
        "email": "yoshihiro.yunomae.ez@hitachi.com",
        "time": "Tue Apr 23 10:32:39 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 11 13:58:46 2013 -0400"
      },
      "message": "tracing: Fix outputting formats of x86-tsc and counter when use trace_clock\n\nOutputting formats of x86-tsc and counter should be a raw format, but after\napplying the patch(2b6080f28c7cc3efc8625ab71495aae89aeb63a0), the format was\nchanged to nanosec. This is because the global variable trace_clock_id was used.\nWhen we use multiple buffers, clock_id of each sub-buffer should be used. Then,\nthis patch uses tr-\u003eclock_id instead of the global variable trace_clock_id.\n\n[ Basically, this fixes a regression where the multibuffer code changed the\n  trace_clock file to update tr-\u003eclock_id but the traces still use the old\n  global trace_clock_id variable, negating the file\u0027s effect. The global\n  trace_clock_id variable is obsolete and removed. - SR ]\n\nLink: http://lkml.kernel.org/r/20130423013239.22334.7394.stgit@yunodevel\n\nSigned-off-by: Yoshihiro YUNOMAE \u003cyoshihiro.yunomae.ez@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e0972916e8fe943f342b0dd1c9d43dbf5bc261c2",
      "tree": "690c436f1f9b839c4ba34d17ab3efa63b97a2dce",
      "parents": [
        "1f889ec62c3f0d8913f3c32f9aff2a1e15099346",
        "5ac2b5c2721501a8f5c5e1cd4116cbc31ace6886"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 30 07:41:01 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 30 07:41:01 2013 -0700"
      },
      "message": "Merge branch \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull perf updates from Ingo Molnar:\n \"Features:\n\n   - Add \"uretprobes\" - an optimization to uprobes, like kretprobes are\n     an optimization to kprobes.  \"perf probe -x file sym%return\" now\n     works like kretprobes.  By Oleg Nesterov.\n\n   - Introduce per core aggregation in \u0027perf stat\u0027, from Stephane\n     Eranian.\n\n   - Add memory profiling via PEBS, from Stephane Eranian.\n\n   - Event group view for \u0027annotate\u0027 in --stdio, --tui and --gtk, from\n     Namhyung Kim.\n\n   - Add support for AMD NB and L2I \"uncore\" counters, by Jacob Shin.\n\n   - Add Ivy Bridge-EP uncore support, by Zheng Yan\n\n   - IBM zEnterprise EC12 oprofile support patchlet from Robert Richter.\n\n   - Add perf test entries for checking breakpoint overflow signal\n     handler issues, from Jiri Olsa.\n\n   - Add perf test entry for for checking number of EXIT events, from\n     Namhyung Kim.\n\n   - Add perf test entries for checking --cpu in record and stat, from\n     Jiri Olsa.\n\n   - Introduce perf stat --repeat forever, from Frederik Deweerdt.\n\n   - Add --no-demangle to report/top, from Namhyung Kim.\n\n   - PowerPC fixes plus a couple of cleanups/optimizations in uprobes\n     and trace_uprobes, by Oleg Nesterov.\n\n  Various fixes and refactorings:\n\n   - Fix dependency of the python binding wrt libtraceevent, from\n     Naohiro Aota.\n\n   - Simplify some perf_evlist methods and to allow \u0027stat\u0027 to share code\n     with \u0027record\u0027 and \u0027trace\u0027, by Arnaldo Carvalho de Melo.\n\n   - Remove dead code in related to libtraceevent integration, from\n     Namhyung Kim.\n\n   - Revert \"perf sched: Handle PERF_RECORD_EXIT events\" to get \u0027perf\n     sched lat\u0027 back working, by Arnaldo Carvalho de Melo\n\n   - We don\u0027t use Newt anymore, just plain libslang, by Arnaldo Carvalho\n     de Melo.\n\n   - Kill a bunch of die() calls, from Namhyung Kim.\n\n   - Fix build on non-glibc systems due to libio.h absence, from Cody P\n     Schafer.\n\n   - Remove some perf_session and tracing dead code, from David Ahern.\n\n   - Honor parallel jobs, fix from Borislav Petkov\n\n   - Introduce tools/lib/lk library, initially just removing duplication\n     among tools/perf and tools/vm.  from Borislav Petkov\n\n  ... and many more I missed to list, see the shortlog and git log for\n  more details.\"\n\n* \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (136 commits)\n  perf/x86/intel/P4: Robistify P4 PMU types\n  perf/x86/amd: Fix AMD NB and L2I \"uncore\" support\n  perf/x86/amd: Remove old-style NB counter support from perf_event_amd.c\n  perf/x86: Check all MSRs before passing hw check\n  perf/x86/amd: Add support for AMD NB and L2I \"uncore\" counters\n  perf/x86/intel: Add Ivy Bridge-EP uncore support\n  perf/x86/intel: Fix SNB-EP CBO and PCU uncore PMU filter management\n  perf/x86: Avoid kfree() in CPU_{STARTING,DYING}\n  uprobes/perf: Avoid perf_trace_buf_prepare/submit if -\u003eperf_events is empty\n  uprobes/tracing: Don\u0027t pass addr\u003dip to perf_trace_buf_submit()\n  uprobes/tracing: Change create_trace_uprobe() to support uretprobes\n  uprobes/tracing: Make seq_printf() code uretprobe-friendly\n  uprobes/tracing: Make register_uprobe_event() paths uretprobe-friendly\n  uprobes/tracing: Make uprobe_{trace,perf}_print() uretprobe-friendly\n  uprobes/tracing: Introduce is_ret_probe() and uretprobe_dispatcher()\n  uprobes/tracing: Introduce uprobe_{trace,perf}_print() helpers\n  uprobes/tracing: Generalize struct uprobe_trace_entry_head\n  uprobes/tracing: Kill the pointless local_save_flags/preempt_count calls\n  uprobes/tracing: Kill the pointless seq_print_ip_sym() call\n  uprobes/tracing: Kill the pointless task_pt_regs() calls\n  ...\n"
    },
    {
      "commit": "457d1772f1c1bcf37b2ae7fc8f1d6f303d1d5cf9",
      "tree": "49da165c316ec7086272994ede7ac96e334d6850",
      "parents": [
        "0e3853d202e8b2720bc4c674dc58849b2662c8f8"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Fri Mar 29 18:26:51 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:01 2013 +0200"
      },
      "message": "uprobes/tracing: Generalize struct uprobe_trace_entry_head\n\nstruct uprobe_trace_entry_head has a single member for reporting,\n\"unsigned long ip\". If we want to support uretprobes we need to\ncreate another struct which has \"func\" and \"ret_ip\" and duplicate\na lot of functions, like trace_kprobe.c does.\n\nTo avoid this copy-and-paste horror we turn -\u003eip into -\u003evaddr[]\nand add couple of trivial helpers to calculate sizeof/data. This\nuglifies the code a bit, but this allows us to avoid a lot more\ncomplications later, when we add the support for ret-probes.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nTested-by: Anton Arapov \u003canton@redhat.com\u003e\n"
    },
    {
      "commit": "b3a8c6fd7bb61c910bd4f80ae1d75056e8f98c19",
      "tree": "6f99dd222887d6ec1b5ba785863d3ad1cd0156ff",
      "parents": [
        "bd6df18716fa45bc4aa9587aca033de909e5382b"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Mon Mar 11 15:13:42 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:22:07 2013 -0400"
      },
      "message": "tracing: Move find_event_field() into trace_events.c\n\nBy moving find_event_field() and trace_find_field() into trace_events.c,\nthe ftrace_common_fields list and trace_get_fields() can become local to\nthe trace_events.c file.\n\nfind_event_field() is renamed to trace_find_event_field() to conform to\nthe tracing global function names.\n\nLink: http://lkml.kernel.org/r/513D8426.9070109@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\n[ rostedt: Modified trace_find_field() to trace_find_event_field() ]\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "328df4759c03e2c3e7429cc6cb0e180c38f32063",
      "tree": "874c0aa7642cfe8ce1e4512464eae1d33e99391b",
      "parents": [
        "4df297129f622bdc18935c856f42b9ddd18f9f28"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Mar 14 12:10:40 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:08 2013 -0400"
      },
      "message": "tracing: Add function-trace option to disable function tracing of latency tracers\n\nCurrently, the only way to stop the latency tracers from doing function\ntracing is to fully disable the function tracer from the proc file\nsystem:\n\n  echo 0 \u003e /proc/sys/kernel/ftrace_enabled\n\nThis is a big hammer approach as it disables function tracing for\nall users. This includes kprobes, perf, stack tracer, etc.\n\nInstead, create a function-trace option that the latency tracers can\ncheck to determine if it should enable function tracing or not.\nThis option can be set or cleared even while the tracer is active\nand the tracers will disable or enable function tracing depending\non how the option was set.\n\nInstead of using the proc file, disable latency function tracing with\n\n  echo 0 \u003e /debug/tracing/options/function-trace\n\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Clark Williams \u003cwilliams@redhat.com\u003e\nCc: John Kacur \u003cjkacur@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ca268da6e415448a43138e1abc5d5f057af319d7",
      "tree": "33fcaf68989e12fca96ad86bdece7eaac16d1545",
      "parents": [
        "9d3c752c062e3266f1051ba0825276ea1e2777da"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Sat Mar 09 00:40:58 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:56 2013 -0400"
      },
      "message": "tracing: Add internal ftrace trace_puts() for ftrace to use\n\nThere\u0027s a few places that ftrace uses trace_printk() for internal\nuse, but this requires context (normal, softirq, irq, NMI) buffers\nto keep things lockless. But the trace_puts() does not, as it can\nwrite the string directly into the ring buffer. Make a internal helper\nfor trace_puts() and have the internal functions use that.\n\nThis way the extra context buffers are not used.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "09ae72348eccb60e304cf8ce94653f4a78fcd407",
      "tree": "28c48644f71df4752556d9f5b15efb889e57af56",
      "parents": [
        "153e8ed913b022d2003866a848af9fadc041403f"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 08 21:02:34 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:55 2013 -0400"
      },
      "message": "tracing: Add trace_puts() for even faster trace_printk() tracing\n\nThe trace_printk() is extremely fast and is very handy as it can be\nused in any context (including NMIs!). But it still requires scanning\nthe fmt string for parsing the args. Even the trace_bprintk() requires\na scan to know what args will be saved, although it doesn\u0027t copy the\nformat string itself.\n\nSeveral times trace_printk() has no args, and wastes cpu cycles scanning\nthe fmt string.\n\nAdding trace_puts() allows the developer to use an even faster\ntracing method that only saves the pointer to the string in the\nring buffer without doing any format parsing at all. This will\nhelp remove even more of the \"Heisenbug\" effect, when debugging.\n\nAlso fixed up the F_printk()s for the ftrace internal bprint and print events.\n\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "55034cd6e648155393b0d665eef76b38d49ad6bf",
      "tree": "3d51bc6a1f8c7bdf7f728113b3853f4c20441be9",
      "parents": [
        "f4e781c0a89d5810729772290441ac7d61f321ec"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 07 22:48:09 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:53 2013 -0400"
      },
      "message": "tracing: Add alloc_snapshot kernel command line parameter\n\nIf debugging the kernel, and the developer wants to use\ntracing_snapshot() in places where tracing_snapshot_alloc() may\nbe difficult (or more likely, the developer is lazy and doesn\u0027t\nwant to bother with tracing_snapshot_alloc() at all), then adding\n\n  alloc_snapshot\n\nto the kernel command line parameter will tell ftrace to allocate\nthe snapshot buffer (if configured) when it allocates the main\ntracing buffer.\n\nI also noticed that ring_buffer_expanded and tracing_selftest_disabled\nhad inconsistent use of boolean \"true\" and \"false\" with \"0\" and \"1\".\nI cleaned that up too.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a695cb5816228f86576f5f5c6809fdf8ed382ece",
      "tree": "922f12a1a2fab1efa16f74216d6883deeefd1b74",
      "parents": [
        "121aaee7b0a82605d33af200c7e9ebab6fd6e444"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Wed Mar 06 15:27:24 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:51 2013 -0400"
      },
      "message": "tracing: Prevent deleting instances when they are being read\n\nAdd a ref count to the trace_array structure and prevent removal\nof instances that have open descriptors.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "45ad21ca5530efdca6a19e4a5ac5e7bd6e24f996",
      "tree": "7bc01dd23c577dae038281be2f644ef3e3e1354e",
      "parents": [
        "6de58e6269cd0568ca5fbae14423914eff0f7811"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 05 18:25:02 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:48 2013 -0400"
      },
      "message": "tracing: Have trace_array keep track if snapshot buffer is allocated\n\nThe snapshot buffer belongs to the trace array not the tracer that is\nrunning. The trace array should be the data structure that keeps track\nof whether or not the snapshot buffer is allocated, not the tracer\ndesciptor. Having the trace array keep track of it makes modifications\nso much easier.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "12883efb670c28dff57dcd7f4f995a1ffe153b2d",
      "tree": "36dcb1c14aaf7afb6515ce9230a75d0602c7fab1",
      "parents": [
        "22cffc2bb4a50d8c56f03c56f9f19dea85b78e30"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 05 09:24:35 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:40 2013 -0400"
      },
      "message": "tracing: Consolidate max_tr into main trace_array structure\n\nCurrently, the way the latency tracers and snapshot feature works\nis to have a separate trace_array called \"max_tr\" that holds the\nsnapshot buffer. For latency tracers, this snapshot buffer is used\nto swap the running buffer with this buffer to save the current max\nlatency.\n\nThe only items needed for the max_tr is really just a copy of the buffer\nitself, the per_cpu data pointers, the time_start timestamp that states\nwhen the max latency was triggered, and the cpu that the max latency\nwas triggered on. All other fields in trace_array are unused by the\nmax_tr, making the max_tr mostly bloat.\n\nThis change removes the max_tr completely, and adds a new structure\ncalled trace_buffer, that holds the buffer pointer, the per_cpu data\npointers, the time_start timestamp, and the cpu where the latency occurred.\n\nThe trace_array, now has two trace_buffers, one for the normal trace and\none for the max trace or snapshot. By doing this, not only do we remove\nthe bloat from the max_trace but the instances of traces can now use\ntheir own snapshot feature and not have just the top level global_trace have\nthe snapshot feature and latency tracers for itself.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "873c642f5964b260480850040dec21e42d0ae4e4",
      "tree": "f240e11becc378584fe3892394d735e6bb865ac7",
      "parents": [
        "575380da8b46969a2c6a7e14a51056a63b30fe2e"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Mon Mar 04 23:26:06 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:57 2013 -0400"
      },
      "message": "tracing: Clear all trace buffers when unloaded module event was used\n\nCurrently we do not know what buffer a module event was enabled in.\nOn unload, it is safest to clear all buffer instances, not just the\ntop level buffer.\n\nTodo: Clear only the buffer that the event was used in. The\ninfrastructure is there to do this, but it makes the code a bit\nmore complex. Lets get the current code vetted before we add that.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "34ef61b1fa6172e994e441f1f0241dc53a75bd5f",
      "tree": "8ee4438105a588068f7fb61a72247f19e4eee83f",
      "parents": [
        "b8aae39fc54a2e297698288ac48237cc4c6f83bb"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Sat Mar 02 16:49:10 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:52 2013 -0400"
      },
      "message": "tracing: Add __per_cpu annotation to trace array percpu data pointer\n\nWith the conversion of the data array to per cpu, sparse now complains\nabout the use of per_cpu_ptr() on the variable. But The variable is\nallocated with alloc_percpu() and is fine to use. But since the structure\nthat contains the data variable does not annotate it as such, sparse\ngives out a lot of false warnings.\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "92edca073c374f66b8eee20ec6426fb0cdb6c4d5",
      "tree": "1422d988954e16eae32003738b532e8ec8db9051",
      "parents": [
        "d1a291437f75f6c841819b7855d95a21958cc822"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Feb 27 20:41:37 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:47 2013 -0400"
      },
      "message": "tracing: Use direct field, type and system names\n\nThe names used to display the field and type in the event format\nfiles are copied, as well as the system name that is displayed.\n\nAll these names are created by constant values passed in.\nIf one of theses values were to be removed by a module, the module\nwould also be required to remove any event it created.\n\nBy using the strings directly, we can save over 100K of memory.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0c8916c34203734d3b05953ebace52d7c2969f16",
      "tree": "f975bab6327e974b9f6a274b2e104b6ddd692f0c",
      "parents": [
        "277ba04461c2746cf935353474c0961161951b68"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Aug 07 16:14:16 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:45 2013 -0400"
      },
      "message": "tracing: Add rmdir to remove multibuffer instances\n\nAdd a method to the hijacked dentry descriptor of the\n\"instances\" directory to allow for rmdir to remove an\ninstance of a multibuffer.\n\nExample:\n\n  cd /debug/tracing/instances\n  mkdir hello\n  ls\nhello/\n  rmdir hello\n  ls\n\nLike the mkdir method, the i_mutex is dropped for the instances\ndirectory. The instances directory is created at boot up and can\nnot be renamed or removed. The trace_types_lock mutex is used to\nsynchronize adding and removing of instances.\n\nI\u0027ve run several stress tests with different threads trying to\ncreate and delete directories of the same name, and it has stood\nup fine.\n\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "277ba04461c2746cf935353474c0961161951b68",
      "tree": "df2b8eb157c6725e606605f6acf40acbd4f13dd6",
      "parents": [
        "12ab74ee00d154bc05ea2fc659b7ce6519e5d5a6"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Aug 03 16:10:49 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:44 2013 -0400"
      },
      "message": "tracing: Add interface to allow multiple trace buffers\n\nAdd the interface (\"instances\" directory) to add multiple buffers\nto ftrace. To create a new instance, simply do a mkdir in the\ninstances directory:\n\nThis will create a directory with the following:\n\n # cd instances\n # mkdir foo\n # ls foo\nbuffer_size_kb        free_buffer  trace_clock    trace_pipe\nbuffer_total_size_kb  set_event    trace_marker   tracing_enabled\nevents/               trace        trace_options  tracing_on\n\nCurrently only events are able to be set, and there isn\u0027t a way\nto delete a buffer when one is created (yet).\n\nNote, the i_mutex lock is dropped from the parent \"instances\"\ndirectory during the mkdir operation. As the \"instances\" directory\ncan not be renamed or deleted (created on boot), I do not see\nany harm in dropping the lock. The creation of the sub directories\nis protected by trace_types_lock mutex, which only lets one\ninstance get into the code path at a time. If two tasks try to\ncreate or delete directories of the same name, only one will occur\nand the other will fail with -EEXIST.\n\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "12ab74ee00d154bc05ea2fc659b7ce6519e5d5a6",
      "tree": "d123285199790583ca792a1c80cb75ba440425b9",
      "parents": [
        "a7603ff4b5f7e26e67af82a4c3d05eeeb8d7b160"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Aug 08 14:48:20 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:44 2013 -0400"
      },
      "message": "tracing: Make syscall events suitable for multiple buffers\n\nCurrently the syscall events record into the global buffer. But if\nmultiple buffers are in place, then we need to have syscall events\nrecord in the proper buffers.\n\nBy adding descriptors to pass to the syscall event functions, the\nsyscall events can now record into the buffers that have been assigned\nto them (one event may be applied to mulitple buffers).\n\nThis will allow tracing high volume syscalls along with seldom occurring\nsyscalls without losing the seldom syscall events.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a7603ff4b5f7e26e67af82a4c3d05eeeb8d7b160",
      "tree": "2d348aeb190cf6c7ba43f97419b291251d6e04c5",
      "parents": [
        "ccb469a198cffac94a7eea0b69f715f06e2ddf15"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Aug 06 16:24:11 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:43 2013 -0400"
      },
      "message": "tracing: Replace the static global per_cpu arrays with allocated per_cpu\n\nThe global and max-tr currently use static per_cpu arrays for the CPU data\ndescriptors. But in order to get new allocated trace_arrays, they need to\nbe allocated per_cpu arrays. Instead of using the static arrays, switch\nthe global and max-tr to use allocated data.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2b6080f28c7cc3efc8625ab71495aae89aeb63a0",
      "tree": "f3fe3b8a7ce99dda0da01f097255cae596083c88",
      "parents": [
        "ae3b5093ad6004b52e2825f3db1ad8200a2724d8"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 11 13:29:49 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:42 2013 -0400"
      },
      "message": "tracing: Encapsulate global_trace and remove dependencies on global vars\n\nThe global_trace variable in kernel/trace/trace.c has been kept \u0027static\u0027 and\nlocal to that file so that it would not be used too much outside of that\nfile. This has paid off, even though there were lots of changes to make\nthe trace_array structure more generic (not depending on global_trace).\n\nRemoval of a lot of direct usages of global_trace is needed to be able to\ncreate more trace_arrays such that we can add multiple buffers.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ae3b5093ad6004b52e2825f3db1ad8200a2724d8",
      "tree": "fb4918a6300a3d3016cf06da2de192a58514ee71",
      "parents": [
        "ae63b31e4d0e2ec09c569306ea46f664508ef717"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Jan 23 15:22:59 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:41 2013 -0400"
      },
      "message": "tracing: Use RING_BUFFER_ALL_CPUS for TRACE_PIPE_ALL_CPU\n\nBoth RING_BUFFER_ALL_CPUS and TRACE_PIPE_ALL_CPU are defined as\n-1 and used to say that all the ring buffers are to be modified\nor read (instead of just a single cpu, which would be \u003e\u003d 0).\n\nThere\u0027s no reason to keep TRACE_PIPE_ALL_CPU as it is also started\nto be used for more than what it was created for, and now that\nthe ring buffer code added a generic RING_BUFFER_ALL_CPUS define,\nwe can clean up the trace code to use that instead and remove\nthe TRACE_PIPE_ALL_CPU macro.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ae63b31e4d0e2ec09c569306ea46f664508ef717",
      "tree": "0d40e8fddca53d1776254cd92fc73bc4413ee1f5",
      "parents": [
        "613f04a0f51e6e68ac6fe571ab79da3c0a5eb4da"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu May 03 23:09:03 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:40 2013 -0400"
      },
      "message": "tracing: Separate out trace events from global variables\n\nThe trace events for ftrace are all defined via global variables.\nThe arrays of events and event systems are linked to a global list.\nThis prevents multiple users of the event system (what to enable and\nwhat not to).\n\nBy adding descriptors to represent the event/file relation, as well\nas to which trace_array descriptor they are associated with, allows\nfor more than one set of events to be defined. Once the trace events\nfiles have a link between the trace event and the trace_array they\nare associated with, we can create multiple trace_arrays that can\nrecord separate events in separate buffers.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "613f04a0f51e6e68ac6fe571ab79da3c0a5eb4da",
      "tree": "2bc6da65edff6669f68010a22595861af26fe44d",
      "parents": [
        "80902822658aab18330569587cdb69ac1dfdcea8"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Mar 14 15:03:53 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Mar 14 23:40:21 2013 -0400"
      },
      "message": "tracing: Prevent buffer overwrite disabled for latency tracers\n\nThe latency tracers require the buffers to be in overwrite mode,\notherwise they get screwed up. Force the buffers to stay in overwrite\nmode when latency tracers are enabled.\n\nAdded a flag_changed() method to the tracer structure to allow\nthe tracers to see what flags are being changed, and also be able\nto prevent the change from happing.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "debdd57f5145f3c6a4b3f8d0126abd1a2def7fc6",
      "tree": "8dca457fbccaf115c48fdb9fb6ee6a9469b8b6de",
      "parents": [
        "2fd196ec1eab2623096e7fc7e6f3976160392bce"
      ],
      "author": {
        "name": "Hiraku Toyooka",
        "email": "hiraku.toyooka.gu@hitachi.com",
        "time": "Wed Dec 26 11:53:00 2012 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Jan 30 11:02:06 2013 -0500"
      },
      "message": "tracing: Make a snapshot feature available from userspace\n\nFtrace has a snapshot feature available from kernel space and\nlatency tracers (e.g. irqsoff) are using it. This patch enables\nuser applictions to take a snapshot via debugfs.\n\nAdd \"snapshot\" debugfs file in \"tracing\" directory.\n\n  snapshot:\n    This is used to take a snapshot and to read the output of the\n    snapshot.\n\n     # echo 1 \u003e snapshot\n\n    This will allocate the spare buffer for snapshot (if it is\n    not allocated), and take a snapshot.\n\n     # cat snapshot\n\n    This will show contents of the snapshot.\n\n     # echo 0 \u003e snapshot\n\n    This will free the snapshot if it is allocated.\n\n    Any other positive values will clear the snapshot contents if\n    the snapshot is allocated, or return EINVAL if it is not allocated.\n\nLink: http://lkml.kernel.org/r/20121226025300.3252.86850.stgit@liselsia\n\nCc: Jiri Olsa \u003cjolsa@redhat.com\u003e\nCc: David Sharp \u003cdhsharp@google.com\u003e\nSigned-off-by: Hiraku Toyooka \u003chiraku.toyooka.gu@hitachi.com\u003e\n[\n   Fixed irqsoff selftest and also a conflict with a change\n   that fixes the update_max_tr.\n]\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "567cd4da54ff45513d2ca1f0e3cb9ba45b66d6cf",
      "tree": "1a9e719a31643138fa76ecf556401fee1f536813",
      "parents": [
        "897f68a48b1f8fb6cb7493e1ee37e3ed7f879937"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Nov 02 18:33:05 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jan 22 23:38:03 2013 -0500"
      },
      "message": "ring-buffer: User context bit recursion checking\n\nUsing context bit recursion checking, we can help increase the\nperformance of the ring buffer.\n\nBefore this patch:\n\n # echo function \u003e /debug/tracing/current_tracer\n # for i in `seq 10`; do ./hackbench 50; done\nTime: 10.285\nTime: 10.407\nTime: 10.243\nTime: 10.372\nTime: 10.380\nTime: 10.198\nTime: 10.272\nTime: 10.354\nTime: 10.248\nTime: 10.253\n\n(average: 10.3012)\n\nNow we have:\n\n # echo function \u003e /debug/tracing/current_tracer\n # for i in `seq 10`; do ./hackbench 50; done\nTime: 9.712\nTime: 9.824\nTime: 9.861\nTime: 9.827\nTime: 9.962\nTime: 9.905\nTime: 9.886\nTime: 10.088\nTime: 9.861\nTime: 9.834\n\n(average: 9.876)\n\n a 4% savings!\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "edc15cafcbfa3d73f819cae99885a2e35e4cbce5",
      "tree": "964e0de8816e6d4b602318d90718770921e301d2",
      "parents": [
        "e46cbf75c621725964fe1f6e7013e8bcd86a0e3d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Nov 02 17:47:21 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jan 22 23:38:01 2013 -0500"
      },
      "message": "tracing: Avoid unnecessary multiple recursion checks\n\nWhen function tracing occurs, the following steps are made:\n  If arch does not support a ftrace feature:\n   call internal function (uses INTERNAL bits) which calls...\n  If callback is registered to the \"global\" list, the list\n   function is called and recursion checks the GLOBAL bits.\n   then this function calls...\n  The function callback, which can use the FTRACE bits to\n   check for recursion.\n\nNow if the arch does not suppport a feature, and it calls\nthe global list function which calls the ftrace callback\nall three of these steps will do a recursion protection.\nThere\u0027s no reason to do one if the previous caller already\ndid. The recursion that we are protecting against will\ngo through the same steps again.\n\nTo prevent the multiple recursion checks, if a recursion\nbit is set that is higher than the MAX bit of the current\ncheck, then we know that the check was made by the previous\ncaller, and we can skip the current check.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e46cbf75c621725964fe1f6e7013e8bcd86a0e3d",
      "tree": "7d69185c7c58d1d6773e471852c03a6915d53f1a",
      "parents": [
        "c29f122cd7fc178b72b1335b1fce0dff2e5c0f5d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Nov 02 17:32:25 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jan 22 23:38:00 2013 -0500"
      },
      "message": "tracing: Make the trace recursion bits into enums\n\nConvert the bits into enums which makes the code a little easier\nto maintain.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "c29f122cd7fc178b72b1335b1fce0dff2e5c0f5d",
      "tree": "450f3888c9f663298231a29d6a1e63269f815fd0",
      "parents": [
        "0a016409e42f273415f8225ddf2c58eb2df88034"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Nov 02 17:17:59 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jan 22 23:38:00 2013 -0500"
      },
      "message": "ftrace: Add context level recursion bit checking\n\nCurrently for recursion checking in the function tracer, ftrace\ntests a task_struct bit to determine if the function tracer had\nrecursed or not. If it has, then it will will return without going\nfurther.\n\nBut this leads to races. If an interrupt came in after the bit\nwas set, the functions being traced would see that bit set and\nthink that the function tracer recursed on itself, and would return.\n\nInstead add a bit for each context (normal, softirq, irq and nmi).\n\nA check of which context the task is in is made before testing the\nassociated bit. Now if an interrupt preempts the function tracer\nafter the previous context has been set, the interrupt functions\ncan still be traced.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8be0709f10e3dd5d7d07933ad61a9f18c4b93ca5",
      "tree": "304c1e1575feed78341184a2302f37c049572d27",
      "parents": [
        "8cbd9cc6254065c97c4bac42daa55ba1abe73a8e"
      ],
      "author": {
        "name": "David Sharp",
        "email": "dhsharp@google.com",
        "time": "Tue Nov 13 12:18:22 2012 -0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Nov 13 15:48:40 2012 -0500"
      },
      "message": "tracing: Format non-nanosec times from tsc clock without a decimal point.\n\nWith the addition of the \"tsc\" clock, formatting timestamps to look like\nfractional seconds is misleading. Mark clocks as either in nanoseconds or\nnot, and format non-nanosecond timestamps as decimal integers.\n\nTested:\n$ cd /sys/kernel/debug/tracing/\n$ cat trace_clock\n[local] global tsc\n$ echo sched_switch \u003e set_event\n$ echo 1 \u003e tracing_on ; sleep 0.0005 ; echo 0 \u003e tracing_on\n$ cat trace\n          \u003cidle\u003e-0     [000]  6330.555552: sched_switch: prev_comm\u003dswapper prev_pid\u003d0 prev_prio\u003d120 prev_state\u003dR \u003d\u003d\u003e next_comm\u003dbash next_pid\u003d29964 next_prio\u003d120\n           sleep-29964 [000]  6330.555628: sched_switch: prev_comm\u003dbash prev_pid\u003d29964 prev_prio\u003d120 prev_state\u003dS \u003d\u003d\u003e next_comm\u003dswapper next_pid\u003d0 next_prio\u003d120\n  ...\n$ echo 1 \u003e options/latency-format\n$ cat trace\n  \u003cidle\u003e-0       0 4104553247us+: sched_switch: prev_comm\u003dswapper prev_pid\u003d0 prev_prio\u003d120 prev_state\u003dR \u003d\u003d\u003e next_comm\u003dbash next_pid\u003d29964 next_prio\u003d120\n   sleep-29964   0 4104553322us+: sched_switch: prev_comm\u003dbash prev_pid\u003d29964 prev_prio\u003d120 prev_state\u003dS \u003d\u003d\u003e next_comm\u003dswapper next_pid\u003d0 next_prio\u003d120\n  ...\n$ echo tsc \u003e trace_clock\n$ cat trace\n$ echo 1 \u003e tracing_on ; sleep 0.0005 ; echo 0 \u003e tracing_on\n$ echo 0 \u003e options/latency-format\n$ cat trace\n          \u003cidle\u003e-0     [000] 16490053398357: sched_switch: prev_comm\u003dswapper prev_pid\u003d0 prev_prio\u003d120 prev_state\u003dR \u003d\u003d\u003e next_comm\u003dbash next_pid\u003d31128 next_prio\u003d120\n           sleep-31128 [000] 16490053588518: sched_switch: prev_comm\u003dbash prev_pid\u003d31128 prev_prio\u003d120 prev_state\u003dS \u003d\u003d\u003e next_comm\u003dswapper next_pid\u003d0 next_prio\u003d120\n  ...\necho 1 \u003e options/latency-format\n$ cat trace\n  \u003cidle\u003e-0       0 91557653238+: sched_switch: prev_comm\u003dswapper prev_pid\u003d0 prev_prio\u003d120 prev_state\u003dR \u003d\u003d\u003e next_comm\u003dbash next_pid\u003d31128 next_prio\u003d120\n   sleep-31128   0 91557843399+: sched_switch: prev_comm\u003dbash prev_pid\u003d31128 prev_prio\u003d120 prev_state\u003dS \u003d\u003d\u003e next_comm\u003dswapper next_pid\u003d0 next_prio\u003d120\n  ...\n\nv2:\nMove arch-specific bits out of generic code.\nv4:\nFix x86_32 build due to 64-bit division.\n\nGoogle-Bug-Id: 6980623\nLink: http://lkml.kernel.org/r/1352837903-32191-2-git-send-email-dhsharp@google.com\n\nCc: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nSigned-off-by: David Sharp \u003cdhsharp@google.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0d5c6e1c19bab82fad4837108c2902f557d62a04",
      "tree": "ed075db499735ea4d72b9d9d7f992fe7d9a1a328",
      "parents": [
        "02404baf1b47123f1c88c9f9f1f3b00e1e2b10db"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Nov 01 20:54:21 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Nov 02 10:21:52 2012 -0400"
      },
      "message": "tracing: Use irq_work for wake ups and remove *_nowake_*() functions\n\nHave the ring buffer commit function use the irq_work infrastructure to\nwake up any waiters waiting on the ring buffer for new data. The irq_work\nwas created for such a purpose, where doing the actual wake up at the\ntime of adding data is too dangerous, as an event or function trace may\nbe in the midst of the work queue locks and cause deadlocks. The irq_work\nwill either delay the action to the next timer interrupt, or trigger an IPI\nto itself forcing an interrupt to do the work (in a safe location).\n\nWith irq_work, all ring buffer commits can safely do wakeups, removing\nthe need for the ring buffer commit \"nowake\" variants, which were used\nby events and function tracing. All commits can now safely use the\nnormal commit, and the \"nowake\" variants can be removed.\n\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "c7b84ecada9a8b7fe3e6c081e70801703897ed5d",
      "tree": "f586f3dbe52afad825fe857aa6d9d1e5f017cd3d",
      "parents": [
        "15075cac423d634ddf39dac66f943b3bce847f87"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 11 20:54:53 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Nov 02 10:21:50 2012 -0400"
      },
      "message": "tracing: Remove unused function unregister_tracer()\n\nThe function register_tracer() is only used by kernel core code,\nthat never needs to remove the tracer. As trace_events have become\nthe main way to add new tracing to the kernel, the need to\nunregister a tracer has diminished. Remove the unused function\nunregister_tracer(). If a need arises where we need it, then we\ncan always add it back.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7ffbd48d5cab22bcd1120eb2349db1319e2d827a",
      "tree": "4352e546b65793132dd7a1a7ddf8d5fae313591d",
      "parents": [
        "2b70e59043f5a5ec083ea50cd2640aa49c64c675"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Oct 11 12:14:25 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Oct 31 16:45:31 2012 -0400"
      },
      "message": "tracing: Cache comms only after an event occurred\n\nWhenever an event is registered, the comm of tasks are saved at\nevery task switch instead of saving them at every event. But if\nan event isn\u0027t executed much, the comm cache will be filled up\nby tasks that did not record the event and you lose out on the comms\nthat did.\n\nHere\u0027s an example, if you enable the following events:\n\necho 1 \u003e /debug/tracing/events/kvm/kvm_cr/enable\necho 1 \u003e /debug/tracing/events/net/net_dev_xmit/enable\n\nNote, there\u0027s no kvm running on this machine so the first event will\nnever be triggered, but because it is enabled, the storing of comms\nwill continue. If we now disable the network event:\n\necho 0 \u003e /debug/tracing/events/net/net_dev_xmit/enable\n\nand look at the trace:\n\ncat /debug/tracing/trace\n            sshd-2672  [001] ..s2   375.731616: net_dev_xmit: dev\u003deth0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n            sshd-2672  [001] ..s1   375.731617: net_dev_xmit: dev\u003dbr0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n            sshd-2672  [001] ..s2   375.859356: net_dev_xmit: dev\u003deth0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n            sshd-2672  [001] ..s1   375.859357: net_dev_xmit: dev\u003dbr0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n            sshd-2672  [001] ..s2   375.947351: net_dev_xmit: dev\u003deth0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n            sshd-2672  [001] ..s1   375.947352: net_dev_xmit: dev\u003dbr0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n            sshd-2672  [001] ..s2   376.035383: net_dev_xmit: dev\u003deth0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n            sshd-2672  [001] ..s1   376.035383: net_dev_xmit: dev\u003dbr0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n            sshd-2672  [001] ..s2   377.563806: net_dev_xmit: dev\u003deth0 skbaddr\u003dffff88005cbb6de0 len\u003d226 rc\u003d0\n            sshd-2672  [001] ..s1   377.563807: net_dev_xmit: dev\u003dbr0 skbaddr\u003dffff88005cbb6de0 len\u003d226 rc\u003d0\n            sshd-2672  [001] ..s2   377.563834: net_dev_xmit: dev\u003deth0 skbaddr\u003dffff88005cbb6be0 len\u003d114 rc\u003d0\n            sshd-2672  [001] ..s1   377.563842: net_dev_xmit: dev\u003dbr0 skbaddr\u003dffff88005cbb6be0 len\u003d114 rc\u003d0\n\nWe see that process 2672 which triggered the events has the comm \"sshd\".\nBut if we run hackbench for a bit and look again:\n\ncat /debug/tracing/trace\n           \u003c...\u003e-2672  [001] ..s2   375.731616: net_dev_xmit: dev\u003deth0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n           \u003c...\u003e-2672  [001] ..s1   375.731617: net_dev_xmit: dev\u003dbr0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n           \u003c...\u003e-2672  [001] ..s2   375.859356: net_dev_xmit: dev\u003deth0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n           \u003c...\u003e-2672  [001] ..s1   375.859357: net_dev_xmit: dev\u003dbr0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n           \u003c...\u003e-2672  [001] ..s2   375.947351: net_dev_xmit: dev\u003deth0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n           \u003c...\u003e-2672  [001] ..s1   375.947352: net_dev_xmit: dev\u003dbr0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n           \u003c...\u003e-2672  [001] ..s2   376.035383: net_dev_xmit: dev\u003deth0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n           \u003c...\u003e-2672  [001] ..s1   376.035383: net_dev_xmit: dev\u003dbr0 skbaddr\u003dffff88005cbb6de0 len\u003d242 rc\u003d0\n           \u003c...\u003e-2672  [001] ..s2   377.563806: net_dev_xmit: dev\u003deth0 skbaddr\u003dffff88005cbb6de0 len\u003d226 rc\u003d0\n           \u003c...\u003e-2672  [001] ..s1   377.563807: net_dev_xmit: dev\u003dbr0 skbaddr\u003dffff88005cbb6de0 len\u003d226 rc\u003d0\n           \u003c...\u003e-2672  [001] ..s2   377.563834: net_dev_xmit: dev\u003deth0 skbaddr\u003dffff88005cbb6be0 len\u003d114 rc\u003d0\n           \u003c...\u003e-2672  [001] ..s1   377.563842: net_dev_xmit: dev\u003dbr0 skbaddr\u003dffff88005cbb6be0 len\u003d114 rc\u003d0\n\nThe stored \"sshd\" comm has been flushed out and we get a useless \"\u003c...\u003e\".\n\nBut by only storing comms after a trace event occurred, we can run\nhackbench all day and still get the same output.\n\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "81698831bc462ff16f76bc11249a1e492424da4c",
      "tree": "7d980745e74be221d0fab8607ac764ee7408edb4",
      "parents": [
        "b382ede6b5eb8188926b72a9ef42fd2354342a97"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Oct 11 10:15:05 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Oct 31 16:45:29 2012 -0400"
      },
      "message": "tracing: Enable comm recording if trace_printk() is used\n\nIf comm recording is not enabled when trace_printk() is used then\nyou just get this type of output:\n\n[ adding trace_printk(\"hello! %d\", irq); in do_IRQ ]\n\n           \u003c...\u003e-2843  [001] d.h.    80.812300: do_IRQ: hello! 14\n           \u003c...\u003e-2734  [002] d.h2    80.824664: do_IRQ: hello! 14\n           \u003c...\u003e-2713  [003] d.h.    80.829971: do_IRQ: hello! 14\n           \u003c...\u003e-2814  [000] d.h.    80.833026: do_IRQ: hello! 14\n\nBy enabling the comm recorder when trace_printk is enabled:\n\n       hackbench-6715  [001] d.h.   193.233776: do_IRQ: hello! 21\n            sshd-2659  [001] d.h.   193.665862: do_IRQ: hello! 21\n          \u003cidle\u003e-0     [001] d.h1   193.665996: do_IRQ: hello! 21\n\nSuggested-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f43c738bfa8608424610e4fc1aef4d4644e2ce11",
      "tree": "a27c9971bc2eeeb012dc349762066a4c61cf10c9",
      "parents": [
        "6f4156723c084bfc0c0f72205c541fafb8ad3ded"
      ],
      "author": {
        "name": "Hiraku Toyooka",
        "email": "hiraku.toyooka.gu@hitachi.com",
        "time": "Tue Oct 02 17:27:10 2012 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Oct 31 16:45:25 2012 -0400"
      },
      "message": "tracing: Change tracer\u0027s integer flags to bool\n\nprint_max and use_max_tr in struct tracer are \"int\" variables and\nused like flags. This is wasteful, so change the type to \"bool\".\n\nLink: http://lkml.kernel.org/r/20121002082710.9807.86393.stgit@falsita\n\nSigned-off-by: Hiraku Toyooka \u003chiraku.toyooka.gu@hitachi.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "437589a74b6a590d175f86cf9f7b2efcee7765e7",
      "tree": "37bf8635b1356d80ef002b00e84f3faf3d555a63",
      "parents": [
        "68d47a137c3bef754923bccf73fb639c9b0bbd5e",
        "72235465864d84cedb2d9f26f8e1de824ee20339"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 11:11:09 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Oct 02 11:11:09 2012 -0700"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace\n\nPull user namespace changes from Eric Biederman:\n \"This is a mostly modest set of changes to enable basic user namespace\n  support.  This allows the code to code to compile with user namespaces\n  enabled and removes the assumption there is only the initial user\n  namespace.  Everything is converted except for the most complex of the\n  filesystems: autofs4, 9p, afs, ceph, cifs, coda, fuse, gfs2, ncpfs,\n  nfs, ocfs2 and xfs as those patches need a bit more review.\n\n  The strategy is to push kuid_t and kgid_t values are far down into\n  subsystems and filesystems as reasonable.  Leaving the make_kuid and\n  from_kuid operations to happen at the edge of userspace, as the values\n  come off the disk, and as the values come in from the network.\n  Letting compile type incompatible compile errors (present when user\n  namespaces are enabled) guide me to find the issues.\n\n  The most tricky areas have been the places where we had an implicit\n  union of uid and gid values and were storing them in an unsigned int.\n  Those places were converted into explicit unions.  I made certain to\n  handle those places with simple trivial patches.\n\n  Out of that work I discovered we have generic interfaces for storing\n  quota by projid.  I had never heard of the project identifiers before.\n  Adding full user namespace support for project identifiers accounts\n  for most of the code size growth in my git tree.\n\n  Ultimately there will be work to relax privlige checks from\n  \"capable(FOO)\" to \"ns_capable(user_ns, FOO)\" where it is safe allowing\n  root in a user names to do those things that today we only forbid to\n  non-root users because it will confuse suid root applications.\n\n  While I was pushing kuid_t and kgid_t changes deep into the audit code\n  I made a few other cleanups.  I capitalized on the fact we process\n  netlink messages in the context of the message sender.  I removed\n  usage of NETLINK_CRED, and started directly using current-\u003etty.\n\n  Some of these patches have also made it into maintainer trees, with no\n  problems from identical code from different trees showing up in\n  linux-next.\n\n  After reading through all of this code I feel like I might be able to\n  win a game of kernel trivial pursuit.\"\n\nFix up some fairly trivial conflicts in netfilter uid/git logging code.\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/ebiederm/user-namespace: (107 commits)\n  userns: Convert the ufs filesystem to use kuid/kgid where appropriate\n  userns: Convert the udf filesystem to use kuid/kgid where appropriate\n  userns: Convert ubifs to use kuid/kgid\n  userns: Convert squashfs to use kuid/kgid where appropriate\n  userns: Convert reiserfs to use kuid and kgid where appropriate\n  userns: Convert jfs to use kuid/kgid where appropriate\n  userns: Convert jffs2 to use kuid and kgid where appropriate\n  userns: Convert hpfs to use kuid and kgid where appropriate\n  userns: Convert btrfs to use kuid/kgid where appropriate\n  userns: Convert bfs to use kuid/kgid where appropriate\n  userns: Convert affs to use kuid/kgid wherwe appropriate\n  userns: On alpha modify linux_to_osf_stat to use convert from kuids and kgids\n  userns: On ia64 deal with current_uid and current_gid being kuid and kgid\n  userns: On ppc convert current_uid from a kuid before printing.\n  userns: Convert s390 getting uid and gid system calls to use kuid and kgid\n  userns: Convert s390 hypfs to use kuid and kgid where appropriate\n  userns: Convert binder ipc to use kuids\n  userns: Teach security_path_chown to take kuids and kgids\n  userns: Add user namespace support to IMA\n  userns: Convert EVM to deal with kuids and kgids in it\u0027s hmac computation\n  ...\n"
    },
    {
      "commit": "5224c3a31549f1c056039545b289e1b01ed02f12",
      "tree": "30750af387cad904c3935418b0c17384abce1de8",
      "parents": [
        "50a011f6409e888d5f41343024d24885281f048c"
      ],
      "author": {
        "name": "Mandeep Singh Baines",
        "email": "mandeep.baines@gmail.com",
        "time": "Fri Sep 07 18:12:19 2012 -0700"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Sep 24 14:10:44 2012 -0400"
      },
      "message": "tracing: Add an option for disabling markers\n\nIn our application, we have trace markers spread through user-space.\nWe have markers in GL, X, etc. These are super handy for Chrome\u0027s\nabout:tracing feature (Chrome + system + kernel trace view), but\ncan be very distracting when you\u0027re trying to debug a kernel issue.\n\nI normally, use \"grep -v tracing_mark_write\" but it would be nice\nif I could just temporarily disable markers all together.\n\nLink: http://lkml.kernel.org/r/1347066739-26285-1-git-send-email-msb@chromium.org\n\nCC: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Mandeep Singh Baines \u003cmsb@chromium.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "d20b92ab668cc44fc84bba0001839c5a8013a5cd",
      "tree": "6a9f99ed0aa7563fcc990f9ec36ae2704672a961",
      "parents": [
        "f8f3d4de2d04e1a5b4293b67faee8ebabc64e9fa"
      ],
      "author": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Mar 13 16:02:19 2012 -0700"
      },
      "committer": {
        "name": "Eric W. Biederman",
        "email": "ebiederm@xmission.com",
        "time": "Tue Sep 18 01:01:34 2012 -0700"
      },
      "message": "userns: Teach trace to use from_kuid\n\n- When tracing capture the kuid.\n- When displaying the data to user space convert the kuid into the\n  user namespace of the process that opened the report file.\n\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nSigned-off-by: Eric W. Biederman \u003cebiederm@xmission.com\u003e\n"
    },
    {
      "commit": "ad97772ad82f57c83968079d0880c71ab126ab04",
      "tree": "cb011219d1946a23f851f6d5d834003dbeb71b75",
      "parents": [
        "ea701f11da44b44907af226fe5a5f57d2f26eeb2"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Jul 20 13:45:59 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jul 31 10:29:54 2012 -0400"
      },
      "message": "ftrace: Add selftest to test function save-regs support\n\nAdd selftests to test the save-regs functionality of ftrace.\n\nIf the arch supports saving regs, then it will make sure that regs is\nat least not NULL in the callback.\n\nIf the arch does not support saving regs, it makes sure that the\nregistering of the ftrace_ops that requests saving regs fails.\nIt then tests the registering of the ftrace_ops succeeds if the\n\u0027IF_SUPPORTED\u0027 flag is set. Then it makes sure that the regs passed to\nthe function is NULL.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "6d158a813efcd09661c23f16ddf7e2ff834cb20c",
      "tree": "c3937902e8ef5196638a9c31fd3b6280540a101d",
      "parents": [
        "b102f1d0f1cd0bb5ec82e5aeb1e33502d6ad6710"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Jun 27 20:46:14 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jun 28 13:52:15 2012 -0400"
      },
      "message": "tracing: Remove NR_CPUS array from trace_iterator\n\nReplace the NR_CPUS array of buffer_iter from the trace_iterator\nwith an allocated array. This will just create an array of\npossible CPUS instead of the max number specified.\n\nThe use of NR_CPUS in that array caused allocation failures for\nmachines that were tight on memory. This did not cause any failures\nto the system itself (no crashes), but caused unnecessary failures\nfor reading the trace files.\n\nAdded a helper function called \u0027trace_buffer_iter()\u0027 that returns\nthe buffer_iter item or NULL if it is not defined or the array was\nnot allocated. Some routines do not require the array\n(tracing_open_pipe() for one).\n\nReported-by: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "654443e20dfc0617231f28a07c96a979ee1a0239",
      "tree": "a0dc3f093eb13892539082e663607c34b4fc2d07",
      "parents": [
        "2c01e7bc46f10e9190818437e564f7e0db875ae9",
        "9cba26e66d09bf394ae5a739627a1dc8b7cae6f4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 24 11:39:34 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 24 11:39:34 2012 -0700"
      },
      "message": "Merge branch \u0027perf-uprobes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull user-space probe instrumentation from Ingo Molnar:\n \"The uprobes code originates from SystemTap and has been used for years\n  in Fedora and RHEL kernels.  This version is much rewritten, reviews\n  from PeterZ, Oleg and myself shaped the end result.\n\n  This tree includes uprobes support in \u0027perf probe\u0027 - but SystemTap\n  (and other tools) can take advantage of user probe points as well.\n\n  Sample usage of uprobes via perf, for example to profile malloc()\n  calls without modifying user-space binaries.\n\n  First boot a new kernel with CONFIG_UPROBE_EVENT\u003dy enabled.\n\n  If you don\u0027t know which function you want to probe you can pick one\n  from \u0027perf top\u0027 or can get a list all functions that can be probed\n  within libc (binaries can be specified as well):\n\n\t$ perf probe -F -x /lib/libc.so.6\n\n  To probe libc\u0027s malloc():\n\n\t$ perf probe -x /lib64/libc.so.6 malloc\n\tAdded new event:\n\tprobe_libc:malloc    (on 0x7eac0)\n\n  You can now use it in all perf tools, such as:\n\n\tperf record -e probe_libc:malloc -aR sleep 1\n\n  Make use of it to create a call graph (as the flat profile is going to\n  look very boring):\n\n\t$ perf record -e probe_libc:malloc -gR make\n\t[ perf record: Woken up 173 times to write data ]\n\t[ perf record: Captured and wrote 44.190 MB perf.data (~1930712\n\n\t$ perf report | less\n\n\t  32.03%            git  libc-2.15.so   [.] malloc\n\t                    |\n\t                    --- malloc\n\n\t  29.49%            cc1  libc-2.15.so   [.] malloc\n\t                    |\n\t                    --- malloc\n\t                       |\n\t                       |--0.95%-- 0x208eb1000000000\n\t                       |\n\t                       |--0.63%-- htab_traverse_noresize\n\n\t  11.04%             as  libc-2.15.so   [.] malloc\n\t                     |\n\t                     --- malloc\n\t                        |\n\n\t   7.15%             ld  libc-2.15.so   [.] malloc\n\t                     |\n\t                     --- malloc\n\t                        |\n\n\t   5.07%             sh  libc-2.15.so   [.] malloc\n\t                     |\n\t                     --- malloc\n\t                        |\n\t   4.99%  python-config  libc-2.15.so   [.] malloc\n\t          |\n\t          --- malloc\n\t             |\n\t   4.54%           make  libc-2.15.so   [.] malloc\n\t                   |\n\t                   --- malloc\n\t                      |\n\t                      |--7.34%-- glob\n\t                      |          |\n\t                      |          |--93.18%-- 0x41588f\n\t                      |          |\n\t                      |           --6.82%-- glob\n\t                      |                     0x41588f\n\n\t   ...\n\n  Or:\n\n\t$ perf report -g flat | less\n\n\t# Overhead        Command  Shared Object      Symbol\n\t# ........  .............  .............  ..........\n\t#\n\t  32.03%            git  libc-2.15.so   [.] malloc\n\t          27.19%\n\t              malloc\n\n\t  29.49%            cc1  libc-2.15.so   [.] malloc\n\t          24.77%\n\t              malloc\n\n\t  11.04%             as  libc-2.15.so   [.] malloc\n\t          11.02%\n\t              malloc\n\n\t   7.15%             ld  libc-2.15.so   [.] malloc\n\t           6.57%\n\t              malloc\n\n\t ...\n\n  The core uprobes design is fairly straightforward: uprobes probe\n  points register themselves at (inode:offset) addresses of\n  libraries/binaries, after which all existing (or new) vmas that map\n  that address will have a software breakpoint injected at that address.\n  vmas are COW-ed to preserve original content.  The probe points are\n  kept in an rbtree.\n\n  If user-space executes the probed inode:offset instruction address\n  then an event is generated which can be recovered from the regular\n  perf event channels and mmap-ed ring-buffer.\n\n  Multiple probes at the same address are supported, they create a\n  dynamic callback list of event consumers.\n\n  The basic model is further complicated by the XOL speedup: the\n  original instruction that is probed is copied (in an architecture\n  specific fashion) and executed out of line when the probe triggers.\n  The XOL area is a single vma per process, with a fixed number of\n  entries (which limits probe execution parallelism).\n\n  The API: uprobes are installed/removed via\n  /sys/kernel/debug/tracing/uprobe_events, the API is integrated to\n  align with the kprobes interface as much as possible, but is separate\n  to it.\n\n  Injecting a probe point is privileged operation, which can be relaxed\n  by setting perf_paranoid to -1.\n\n  You can use multiple probes as well and mix them with kprobes and\n  regular PMU events or tracepoints, when instrumenting a task.\"\n\nFix up trivial conflicts in mm/memory.c due to previous cleanup of\nunmap_single_vma().\n\n* \u0027perf-uprobes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (21 commits)\n  perf probe: Detect probe target when m/x options are absent\n  perf probe: Provide perf interface for uprobes\n  tracing: Fix kconfig warning due to a typo\n  tracing: Provide trace events interface for uprobes\n  tracing: Extract out common code for kprobes/uprobes trace events\n  tracing: Modify is_delete, is_return from int to bool\n  uprobes/core: Decrement uprobe count before the pages are unmapped\n  uprobes/core: Make background page replacement logic account for rss_stat counters\n  uprobes/core: Optimize probe hits with the help of a counter\n  uprobes/core: Allocate XOL slots for uprobes use\n  uprobes/core: Handle breakpoint and singlestep exceptions\n  uprobes/core: Rename bkpt to swbp\n  uprobes/core: Make order of function parameters consistent across functions\n  uprobes/core: Make macro names consistent\n  uprobes: Update copyright notices\n  uprobes/core: Move insn to arch specific structure\n  uprobes/core: Remove uprobe_opcode_sz\n  uprobes/core: Make instruction tables volatile\n  uprobes: Move to kernel/events/\n  uprobes/core: Clean up, refactor and improve the code\n  ...\n"
    },
    {
      "commit": "16ee6576e25b83806d26eb771138249fcfb5eddc",
      "tree": "7c717b80f28b5c59ba673dc00f2ca9bd0fc068d4",
      "parents": [
        "16fa7e8200fb9066b77a3f27cbed8e4a9fc71998",
        "9b63776fa3ca96c4ecda76f6fa947b7b0add66ac"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Fri May 18 13:13:33 2012 -0300"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Fri May 18 13:13:33 2012 -0300"
      },
      "message": "Merge remote-tracking branch \u0027tip/perf/urgent\u0027 into perf/core\n\nMerge reason: We are going to queue up a dependent patch:\n\n\"perf tools: Move parse event automated tests to separated object\"\n\nThat depends on:\n\ncommit e7c72d8\nperf tools: Add \u0027G\u0027 and \u0027H\u0027 modifiers to event parsing\n\nConflicts:\n\ttools/perf/builtin-stat.c\n\nConflicted with the recent \u0027perf_target\u0027 patches when checking the\nresult of perf_evsel open routines to see if a retry is needed to cope\nwith older kernels where the exclude guest/host perf_event_attr bits\nwere not used.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "9cba26e66d09bf394ae5a739627a1dc8b7cae6f4",
      "tree": "f03743d576a0c7826b9921ad47e70370ebe80a22",
      "parents": [
        "ec83db0f78cd44c3b586ec1c3a348d1a8a389797",
        "73eff9f56e15598c8399c0b86899fd889b97f085"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon May 14 14:43:40 2012 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon May 14 14:43:40 2012 +0200"
      },
      "message": "Merge branch \u0027perf/uprobes\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/uprobes\n"
    },
    {
      "commit": "f3f096cfedf8113380c56fc855275cc75cd8cf55",
      "tree": "b8d0553afc8cebf6dd320d094206e93df5d95794",
      "parents": [
        "8ab83f56475ec9151645a888dfe1941f4a92091d"
      ],
      "author": {
        "name": "Srikar Dronamraju",
        "email": "srikar@linux.vnet.ibm.com",
        "time": "Wed Apr 11 16:00:43 2012 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon May 07 14:30:17 2012 +0200"
      },
      "message": "tracing: Provide trace events interface for uprobes\n\nImplements trace_event support for uprobes. In its current form\nit can be used to put probes at a specified offset in a file and\ndump the required registers when the code flow reaches the\nprobed address.\n\nThe following example shows how to dump the instruction pointer\nand %ax a register at the probed text address.  Here we are\ntrying to probe zfree in /bin/zsh:\n\n # cd /sys/kernel/debug/tracing/\n # cat /proc/`pgrep  zsh`/maps | grep /bin/zsh | grep r-xp\n 00400000-0048a000 r-xp 00000000 08:03 130904 /bin/zsh\n # objdump -T /bin/zsh | grep -w zfree\n 0000000000446420 g    DF .text  0000000000000012  Base\n zfree # echo \u0027p /bin/zsh:0x46420 %ip %ax\u0027 \u003e uprobe_events\n # cat uprobe_events\n p:uprobes/p_zsh_0x46420 /bin/zsh:0x0000000000046420\n # echo 1 \u003e events/uprobes/enable\n # sleep 20\n # echo 0 \u003e events/uprobes/enable\n # cat trace\n # tracer: nop\n #\n #           TASK-PID    CPU#    TIMESTAMP  FUNCTION\n #              | |       |          |         |\n              zsh-24842 [006] 258544.995456: p_zsh_0x46420: (0x446420) arg1\u003d446421 arg2\u003d79\n              zsh-24842 [007] 258545.000270: p_zsh_0x46420: (0x446420) arg1\u003d446421 arg2\u003d79\n              zsh-24842 [002] 258545.043929: p_zsh_0x46420: (0x446420) arg1\u003d446421 arg2\u003d79\n              zsh-24842 [004] 258547.046129: p_zsh_0x46420: (0x446420) arg1\u003d446421 arg2\u003d79\n\nSigned-off-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Jim Keniston \u003cjkenisto@linux.vnet.ibm.com\u003e\nCc: Linux-mm \u003clinux-mm@kvack.org\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@infradead.org\u003e\nCc: Anton Arapov \u003canton@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLink: http://lkml.kernel.org/r/20120411103043.GB29437@linux.vnet.ibm.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "438ced1720b584000a9e8a4349d1f6bb7ee3ad6d",
      "tree": "2c769e58411c68b298ab816c577ecb2119c7067c",
      "parents": [
        "5a26c8f0cf1e95106858bb4e23ca6dd14c9b842f"
      ],
      "author": {
        "name": "Vaibhav Nagarnaik",
        "email": "vnagarnaik@google.com",
        "time": "Thu Feb 02 12:00:41 2012 -0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Apr 23 21:17:51 2012 -0400"
      },
      "message": "ring-buffer: Add per_cpu ring buffer control files\n\nAdd a debugfs entry under per_cpu/ folder for each cpu called\nbuffer_size_kb to control the ring buffer size for each CPU\nindependently.\n\nIf the global file buffer_size_kb is used to set size, the individual\nring buffers will be adjusted to the given size. The buffer_size_kb will\nreport the common size to maintain backward compatibility.\n\nIf the buffer_size_kb file under the per_cpu/ directory is used to\nchange buffer size for a specific CPU, only the size of the respective\nring buffer is updated. When tracing/buffer_size_kb is read, it reports\n\u0027X\u0027 to indicate that sizes of per_cpu ring buffers are not equivalent.\n\nLink: http://lkml.kernel.org/r/1328212844-11889-1-git-send-email-vnagarnaik@google.com\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Michael Rubin \u003cmrubin@google.com\u003e\nCc: David Sharp \u003cdhsharp@google.com\u003e\nCc: Justin Teravest \u003cteravest@google.com\u003e\nSigned-off-by: Vaibhav Nagarnaik \u003cvnagarnaik@google.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "07d777fe8c3985bc83428c2866713c2d1b3d4129",
      "tree": "f14c6aa59b9719761ad9feebebca22550ebdf0e3",
      "parents": [
        "a385ec4f11bdcf81af094c03e2444ee9b7fad2e5"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Sep 22 14:01:55 2011 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Apr 23 21:15:55 2012 -0400"
      },
      "message": "tracing: Add percpu buffers for trace_printk()\n\nCurrently, trace_printk() uses a single buffer to write into\nto calculate the size and format needed to save the trace. To\ndo this safely in an SMP environment, a spin_lock() is taken\nto only allow one writer at a time to the buffer. But this could\nalso affect what is being traced, and add synchronization that\nwould not be there otherwise.\n\nIdeally, using percpu buffers would be useful, but since trace_printk()\nis only used in development, having per cpu buffers for something\nnever used is a waste of space. Thus, the use of the trace_bprintk()\nformat section is changed to be used for static fmts as well as dynamic ones.\nThen at boot up, we can check if the section that holds the trace_printk\nformats is non-empty, and if it does contain something, then we\nknow a trace_printk() has been added to the kernel. At this time\nthe trace_printk per cpu buffers are allocated. A check is also\ndone at module load time in case a module is added that contains a\ntrace_printk().\n\nOnce the buffers are allocated, they are never freed. If you use\na trace_printk() then you should know what you are doing.\n\nA buffer is made for each type of context:\n\n  normal\n  softirq\n  irq\n  nmi\n\nThe context is checked and the appropriate buffer is used.\nThis allows for totally lockless usage of trace_printk(),\nand they no longer even disable interrupts.\n\nRequested-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "6e48b550d1f5f1919e6500547ae14a73fbf66c7b",
      "tree": "983a2a06bc7aaddfc05f2d8c33309c3c21d30dea",
      "parents": [
        "a7ca08038b990e2cbed324948664b2d8940fd782"
      ],
      "author": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Fri Apr 13 09:52:59 2012 +0100"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 13 21:37:04 2012 -0400"
      },
      "message": "tracing: Fix build breakage without CONFIG_PERF_EVENTS (again)\n\nToday\u0027s -next fails to link for me:\n\nkernel/built-in.o:(.data+0x178e50): undefined reference to `perf_ftrace_event_register\u0027\n\nIt looks like multiple fixes have been merged for the issue fixed by\ncommit fa73dc9 (tracing: Fix build breakage without CONFIG_PERF_EVENTS)\nthough I can\u0027t identify the other changes that have gone in at the\nminute, it\u0027s possible that the changes which caused the breakage fixed\nby the previous commit got dropped but the fix made it in.\n\nLink: http://lkml.kernel.org/r/1334307179-21255-1-git-send-email-broonie@opensource.wolfsonmicro.com\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nSigned-off-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "fa73dc9400516945bcbae8d98c23393bcefe1440",
      "tree": "f63deadc3b24a2534646dc7dff626fc7102fabe5",
      "parents": [
        "db6544e0075d192e5ad16eda8689c55fa9c6f8f4"
      ],
      "author": {
        "name": "Mark Brown",
        "email": "broonie@opensource.wolfsonmicro.com",
        "time": "Tue Feb 28 11:02:46 2012 +0000"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 13 18:34:59 2012 -0400"
      },
      "message": "tracing: Fix build breakage without CONFIG_PERF_EVENTS\n\nToday\u0027s -next fails to build for me:\n\n  CC      kernel/trace/trace_export.o\nIn file included from kernel/trace/trace_export.c:197: kernel/trace/trace_entries.h:58: error: \u0027perf_ftrace_event_register\u0027 undeclared here (not in a function)\nmake[2]: *** [kernel/trace/trace_export.o] Error 1\nmake[1]: *** [kernel/trace] Error 2\nmake: *** [kernel] Error 2\n\nbecause as of ced390 (ftrace, perf: Add support to use function\ntracepoint in perf) perf_trace_event_register() is declared in trace.h\nonly if CONFIG_PERF_EVENTS is enabled but I don\u0027t have that set.\n\nEnsure that we always have a definition of perf_trace_event_register()\nby making the definition unconditional.\n\nLink: http://lkml.kernel.org/r/1330426967-17067-1-git-send-email-broonie@opensource.wolfsonmicro.com\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Mark Brown \u003cbroonie@opensource.wolfsonmicro.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "499e547057f5bba5cd6f87ebe59b05d0c59da905",
      "tree": "9bc64c1a76446153b72a66ad25fe892012d9d120",
      "parents": [
        "5500fa51199aee770ce53718853732600543619e"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Feb 22 15:50:28 2012 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Feb 22 15:50:28 2012 -0500"
      },
      "message": "tracing/ring-buffer: Only have tracing_on disable tracing buffers\n\nAs the ring-buffer code is being used by other facilities in the\nkernel, having tracing_on file disable *all* buffers is not a desired\naffect. It should only disable the ftrace buffers that are being used.\n\nMove the code into the trace.c file and use the buffer disabling\nfor tracing_on() and tracing_off(). This way only the ftrace buffers\nwill be affected by them and other kernel utilities will not be\nconfused to why their output suddenly stopped.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "5500fa51199aee770ce53718853732600543619e",
      "tree": "1c2ad241de8177670234cfed07acb30dba802b01",
      "parents": [
        "02aa3162edaa166a01d193f80ccde890be8b55da"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Wed Feb 15 15:51:54 2012 +0100"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Feb 21 11:08:30 2012 -0500"
      },
      "message": "ftrace, perf: Add filter support for function trace event\n\nAdding support to filter function trace event via perf\ninterface. It is now possible to use filter interface\nin the perf tool like:\n\n  perf record -e ftrace:function --filter\u003d\"(ip \u003d\u003d mm_*)\" ls\n\nThe filter syntax is restricted to the the \u0027ip\u0027 field only,\nand following operators are accepted \u0027\u003d\u003d\u0027 \u0027!\u003d\u0027 \u0027||\u0027, ending\nup with the filter strings like:\n\n  ip \u003d\u003d f1[, ]f2 ... || ip !\u003d f3[, ]f4 ...\n\nwith comma \u0027,\u0027 or space \u0027 \u0027 as a function separator. If the\nspace \u0027 \u0027 is used as a separator, the right side of the\nassignment needs to be enclosed in double quotes \u0027\"\u0027, e.g.:\n\n  perf record -e ftrace:function --filter \u0027(ip \u003d\u003d do_execve,sys_*,ext*)\u0027 ls\n  perf record -e ftrace:function --filter \u0027(ip \u003d\u003d \"do_execve,sys_*,ext*\")\u0027 ls\n  perf record -e ftrace:function --filter \u0027(ip \u003d\u003d \"do_execve sys_* ext*\")\u0027 ls\n\nThe \u0027\u003d\u003d\u0027 operator adds trace filter with same effect as would\nbe added via set_ftrace_filter file.\n\nThe \u0027!\u003d\u0027 operator adds trace filter with same effect as would\nbe added via set_ftrace_notrace file.\n\nThe right side of the \u0027!\u003d\u0027, \u0027\u003d\u003d\u0027 operators is list of functions\nor regexp. to be added to filter separated by space.\n\nThe \u0027||\u0027 operator is used for connecting multiple filter definitions\ntogether. It is possible to have more than one \u0027\u003d\u003d\u0027 and \u0027!\u003d\u0027\noperators within one filter string.\n\nLink: http://lkml.kernel.org/r/1329317514-8131-8-git-send-email-jolsa@redhat.com\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "02aa3162edaa166a01d193f80ccde890be8b55da",
      "tree": "50f111c12472e5573b966d7fb076ba4b22c86669",
      "parents": [
        "ced39002f5ea736b716ae233fb68b26d59783912"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Wed Feb 15 15:51:53 2012 +0100"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Feb 21 11:08:29 2012 -0500"
      },
      "message": "ftrace: Allow to specify filter field type for ftrace events\n\nAdding FILTER_TRACE_FN event field type for function tracepoint\nevent, so it can be properly recognized within filtering code.\n\nCurrently all fields of ftrace subsystem events share the common\nfield type FILTER_OTHER. Since the function trace fields need\nspecial care within the filtering code we need to recognize it\nproperly, hence adding the FILTER_TRACE_FN event type.\n\nAdding filter parameter to the FTRACE_ENTRY macro, to specify the\nfilter field type for the event.\n\nLink: http://lkml.kernel.org/r/1329317514-8131-7-git-send-email-jolsa@redhat.com\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ced39002f5ea736b716ae233fb68b26d59783912",
      "tree": "4942ffe3b9e26d5122a5febb885d0b541e3aea33",
      "parents": [
        "e59a0bff3ecf389951e3c9378ddfd00f6448bfaa"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Wed Feb 15 15:51:52 2012 +0100"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Feb 21 11:08:27 2012 -0500"
      },
      "message": "ftrace, perf: Add support to use function tracepoint in perf\n\nAdding perf registration support for the ftrace function event,\nso it is now possible to register it via perf interface.\n\nThe perf_event struct statically contains ftrace_ops as a handle\nfor function tracer. The function tracer is registered/unregistered\nin open/close actions.\n\nTo be efficient, we enable/disable ftrace_ops each time the traced\nprocess is scheduled in/out (via TRACE_REG_PERF_(ADD|DELL) handlers).\nThis way tracing is enabled only when the process is running.\nIntentionally using this way instead of the event\u0027s hw state\nPERF_HES_STOPPED, which would not disable the ftrace_ops.\n\nIt is now possible to use function trace within perf commands\nlike:\n\n  perf record -e ftrace:function ls\n  perf stat -e ftrace:function ls\n\nAllowed only for root.\n\nLink: http://lkml.kernel.org/r/1329317514-8131-6-git-send-email-jolsa@redhat.com\n\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e59a0bff3ecf389951e3c9378ddfd00f6448bfaa",
      "tree": "315214953499b428a6a26d08fe3b5038e4ec5e1e",
      "parents": [
        "489c75c3b333dfda4c8d2b7ad1b00e5da024bfa7"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Wed Feb 15 15:51:51 2012 +0100"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Feb 21 11:08:26 2012 -0500"
      },
      "message": "ftrace: Add FTRACE_ENTRY_REG macro to allow event registration\n\nAdding FTRACE_ENTRY_REG macro so particular ftrace entries\ncould specify registration function and thus become accesible\nvia perf.\n\nThis will be used in upcomming patch for function trace.\n\nLink: http://lkml.kernel.org/r/1329317514-8131-5-git-send-email-jolsa@redhat.com\n\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e248491ac283b516958ca9ab62c8e74b6718bca8",
      "tree": "77e5a6589cf55ebeabe01a321d792e216162efe6",
      "parents": [
        "5b34926114e39e12005031269613d2b13194aeba"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Wed Feb 15 15:51:48 2012 +0100"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Feb 21 11:08:23 2012 -0500"
      },
      "message": "ftrace: Add enable/disable ftrace_ops control interface\n\nAdding a way to temporarily enable/disable ftrace_ops. The change\nfollows the same way as \u0027global\u0027 ftrace_ops are done.\n\nIntroducing 2 global ftrace_ops - control_ops and ftrace_control_list\nwhich take over all ftrace_ops registered with FTRACE_OPS_FL_CONTROL\nflag. In addition new per cpu flag called \u0027disabled\u0027 is also added to\nftrace_ops to provide the control information for each cpu.\n\nWhen ftrace_ops with FTRACE_OPS_FL_CONTROL is registered, it is\nset as disabled for all cpus.\n\nThe ftrace_control_list contains all the registered \u0027control\u0027 ftrace_ops.\nThe control_ops provides function which iterates ftrace_control_list\nand does the check for \u0027disabled\u0027 flag on current cpu.\n\nAdding 3 inline functions:\n  ftrace_function_local_disable/ftrace_function_local_enable\n  - enable/disable the ftrace_ops on current cpu\n  ftrace_function_local_disabled\n  - get disabled ftrace_ops::disabled value for current cpu\n\nLink: http://lkml.kernel.org/r/1329317514-8131-2-git-send-email-jolsa@redhat.com\n\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "972b2c719990f91eb3b2310d44ef8a2d38955a14",
      "tree": "b25a250ec5bec4b7b6355d214642d8b57c5cab32",
      "parents": [
        "02550d61f49266930e674286379d3601006b2893",
        "c3aa077648e147783a7a53b409578234647db853"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 12:19:57 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Jan 08 12:19:57 2012 -0800"
      },
      "message": "Merge branch \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs\n\n* \u0027for-linus2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (165 commits)\n  reiserfs: Properly display mount options in /proc/mounts\n  vfs: prevent remount read-only if pending removes\n  vfs: count unlinked inodes\n  vfs: protect remounting superblock read-only\n  vfs: keep list of mounts for each superblock\n  vfs: switch -\u003eshow_options() to struct dentry *\n  vfs: switch -\u003eshow_path() to struct dentry *\n  vfs: switch -\u003eshow_devname() to struct dentry *\n  vfs: switch -\u003eshow_stats to struct dentry *\n  switch security_path_chmod() to struct path *\n  vfs: prefer -\u003edentry-\u003ed_sb to -\u003emnt-\u003emnt_sb\n  vfs: trim includes a bit\n  switch mnt_namespace -\u003eroot to struct mount\n  vfs: take /proc/*/mounts and friends to fs/proc_namespace.c\n  vfs: opencode mntget() mnt_set_mountpoint()\n  vfs: spread struct mount - remaining argument of next_mnt()\n  vfs: move fsnotify junk to struct mount\n  vfs: move mnt_devname\n  vfs: move mnt_list to struct mount\n  vfs: switch pnode.h macros to struct mount *\n  ...\n"
    },
    {
      "commit": "f4ae40a6a50a98ac23d4b285f739455e926a473e",
      "tree": "c84d7393700bd85e5285a194f8c22d4d00e36b28",
      "parents": [
        "48176a973d65572e61d0ce95495e5072887e6fb6"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 24 04:33:43 2011 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Jan 03 22:54:56 2012 -0500"
      },
      "message": "switch debugfs to umode_t\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "77271ce4b2c0df0a76ad1cbb6a95b07e1f88c1ea",
      "tree": "fd46cc3c3128bd230ee9dcbd610bc0ca8719a63c",
      "parents": [
        "5d81e5cfb37a174e8ddc0413e2e70cdf05807ace"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Nov 17 09:34:33 2011 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Nov 17 09:58:48 2011 -0500"
      },
      "message": "tracing: Add irq, preempt-count and need resched info to default trace output\n\nPeople keep asking how to get the preempt count, irq, and need resched info\nand we keep telling them to enable the latency format. Some developers think\nthat traces without this info is completely useless, and for a lot of tasks\nit is useless.\n\nThe first option was to enable the latency trace as the default format, but\nthe header for the latency format is pretty useless for most tracers and\nit also does the timestamp in straight microseconds from the time the trace\nstarted. This is sometimes more difficult to read as the default trace is\nseconds from the start of boot up.\n\nLatency format:\n\n # tracer: nop\n #\n # nop latency trace v1.1.5 on 3.2.0-rc1-test+\n # --------------------------------------------------------------------\n # latency: 0 us, #159771/64234230, CPU#1 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:4)\n #    -----------------\n #    | task: -0 (uid:0 nice:0 policy:0 rt_prio:0)\n #    -----------------\n #\n #                  _------\u003d\u003e CPU#\n #                 / _-----\u003d\u003e irqs-off\n #                | / _----\u003d\u003e need-resched\n #                || / _---\u003d\u003e hardirq/softirq\n #                ||| / _--\u003d\u003e preempt-depth\n #                |||| /     delay\n #  cmd     pid   ||||| time  |   caller\n #     \\   /      |||||  \\    |   /\n migratio-6       0...2 41778231us+: rcu_note_context_switch \u003c-__schedule\n migratio-6       0...2 41778233us : trace_rcu_utilization \u003c-rcu_note_context_switch\n migratio-6       0...2 41778235us+: rcu_sched_qs \u003c-rcu_note_context_switch\n migratio-6       0d..2 41778236us+: rcu_preempt_qs \u003c-rcu_note_context_switch\n migratio-6       0...2 41778238us : trace_rcu_utilization \u003c-rcu_note_context_switch\n migratio-6       0...2 41778239us+: debug_lockdep_rcu_enabled \u003c-__schedule\n\ndefault format:\n\n # tracer: nop\n #\n #           TASK-PID    CPU#    TIMESTAMP  FUNCTION\n #              | |       |          |         |\n      migration/0-6     [000]    50.025810: rcu_note_context_switch \u003c-__schedule\n      migration/0-6     [000]    50.025812: trace_rcu_utilization \u003c-rcu_note_context_switch\n      migration/0-6     [000]    50.025813: rcu_sched_qs \u003c-rcu_note_context_switch\n      migration/0-6     [000]    50.025815: rcu_preempt_qs \u003c-rcu_note_context_switch\n      migration/0-6     [000]    50.025817: trace_rcu_utilization \u003c-rcu_note_context_switch\n      migration/0-6     [000]    50.025818: debug_lockdep_rcu_enabled \u003c-__schedule\n      migration/0-6     [000]    50.025820: debug_lockdep_rcu_enabled \u003c-__schedule\n\nThe latency format header has latency information that is pretty meaningless\nfor most tracers. Although some of the header is useful, and we can add that\nlater to the default format as well.\n\nWhat is really useful with the latency format is the irqs-off, need-resched\nhard/softirq context and the preempt count.\n\nThis commit adds the option irq-info which is on by default that adds this\ninformation:\n\n # tracer: nop\n #\n #                              _-----\u003d\u003e irqs-off\n #                             / _----\u003d\u003e need-resched\n #                            | / _---\u003d\u003e hardirq/softirq\n #                            || / _--\u003d\u003e preempt-depth\n #                            ||| /     delay\n #           TASK-PID   CPU#  ||||    TIMESTAMP  FUNCTION\n #              | |       |   ||||       |         |\n           \u003cidle\u003e-0     [000] d..2    49.309305: cpuidle_get_driver \u003c-cpuidle_idle_call\n           \u003cidle\u003e-0     [000] d..2    49.309307: mwait_idle \u003c-cpu_idle\n           \u003cidle\u003e-0     [000] d..2    49.309309: need_resched \u003c-mwait_idle\n           \u003cidle\u003e-0     [000] d..2    49.309310: test_ti_thread_flag \u003c-need_resched\n           \u003cidle\u003e-0     [000] d..2    49.309312: trace_power_start.constprop.13 \u003c-mwait_idle\n           \u003cidle\u003e-0     [000] d..2    49.309313: trace_cpu_idle \u003c-mwait_idle\n           \u003cidle\u003e-0     [000] d..2    49.309315: need_resched \u003c-mwait_idle\n\nIf a user wants the old format, they can disable the \u0027irq-info\u0027 option:\n\n # tracer: nop\n #\n #           TASK-PID   CPU#      TIMESTAMP  FUNCTION\n #              | |       |          |         |\n           \u003cidle\u003e-0     [000]     49.309305: cpuidle_get_driver \u003c-cpuidle_idle_call\n           \u003cidle\u003e-0     [000]     49.309307: mwait_idle \u003c-cpu_idle\n           \u003cidle\u003e-0     [000]     49.309309: need_resched \u003c-mwait_idle\n           \u003cidle\u003e-0     [000]     49.309310: test_ti_thread_flag \u003c-need_resched\n           \u003cidle\u003e-0     [000]     49.309312: trace_power_start.constprop.13 \u003c-mwait_idle\n           \u003cidle\u003e-0     [000]     49.309313: trace_cpu_idle \u003c-mwait_idle\n           \u003cidle\u003e-0     [000]     49.309315: need_resched \u003c-mwait_idle\n\nRequested-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7e9a49ef542610609144d1afcd516dc3fafac4d6",
      "tree": "a8b3748cbbb2ab61998d4c8e2f8c055e0edda104",
      "parents": [
        "d4d34b981a5327eec956c6cb4cce397ce6f57279"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Mon Nov 07 16:08:49 2011 +0100"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Nov 07 13:48:35 2011 -0500"
      },
      "message": "tracing/latency: Fix header output for latency tracers\n\nIn case the the graph tracer (CONFIG_FUNCTION_GRAPH_TRACER) or even the\nfunction tracer (CONFIG_FUNCTION_TRACER) are not set, the latency tracers\ndo not display proper latency header.\n\nThe involved/fixed latency tracers are:\n        wakeup_rt\n        wakeup\n        preemptirqsoff\n        preemptoff\n        irqsoff\n\nThe patch adds proper handling of tracer configuration options for latency\ntracers, and displaying correct header info accordingly.\n\n* The current output (for wakeup tracer) with both graph and function\n  tracers disabled is:\n\n  # tracer: wakeup\n  #\n    \u003cidle\u003e-0       0d.h5    1us+:      0:120:R   + [000]     7:  0:R watchdog/0\n    \u003cidle\u003e-0       0d.h5    3us+: ttwu_do_activate.clone.1 \u003c-try_to_wake_up\n    ...\n\n* The fixed output is:\n\n  # tracer: wakeup\n  #\n  # wakeup latency trace v1.1.5 on 3.1.0-tip+\n  # --------------------------------------------------------------------\n  # latency: 55 us, #4/4, CPU#0 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2)\n  #    -----------------\n  #    | task: migration/0-6 (uid:0 nice:0 policy:1 rt_prio:99)\n  #    -----------------\n  #\n  #                  _------\u003d\u003e CPU#\n  #                 / _-----\u003d\u003e irqs-off\n  #                | / _----\u003d\u003e need-resched\n  #                || / _---\u003d\u003e hardirq/softirq\n  #                ||| / _--\u003d\u003e preempt-depth\n  #                |||| /     delay\n  #  cmd     pid   ||||| time  |   caller\n  #     \\   /      |||||  \\    |   /\n       cat-1129    0d..4    1us :   1129:120:R   + [000]     6:  0:R migration/0\n       cat-1129    0d..4    2us+: ttwu_do_activate.clone.1 \u003c-try_to_wake_up\n\n* The current output (for wakeup tracer) with only function\n  tracer enabled is:\n\n  # tracer: wakeup\n  #\n       cat-1140    0d..4    1us+:   1140:120:R   + [000]     6:  0:R migration/0\n       cat-1140    0d..4    2us : ttwu_do_activate.clone.1 \u003c-try_to_wake_up\n\n* The fixed output is:\n  # tracer: wakeup\n  #\n  # wakeup latency trace v1.1.5 on 3.1.0-tip+\n  # --------------------------------------------------------------------\n  # latency: 207 us, #109/109, CPU#1 | (M:preempt VP:0, KP:0, SP:0 HP:0 #P:2)\n  #    -----------------\n  #    | task: watchdog/1-12 (uid:0 nice:0 policy:1 rt_prio:99)\n  #    -----------------\n  #\n  #                  _------\u003d\u003e CPU#\n  #                 / _-----\u003d\u003e irqs-off\n  #                | / _----\u003d\u003e need-resched\n  #                || / _---\u003d\u003e hardirq/softirq\n  #                ||| / _--\u003d\u003e preempt-depth\n  #                |||| /     delay\n  #  cmd     pid   ||||| time  |   caller\n  #     \\   /      |||||  \\    |   /\n    \u003cidle\u003e-0       1d.h5    1us+:      0:120:R   + [001]    12:  0:R watchdog/1\n    \u003cidle\u003e-0       1d.h5    3us : ttwu_do_activate.clone.1 \u003c-try_to_wake_up\n\nLink: http://lkml.kernel.org/r/20111107150849.GE1807@m.brq.redhat.com\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e0a413f619ef8bc366dafc6f8221674993b8d85f",
      "tree": "a6696b0e7ef5422490bdbcc28d385c031d3e4eb8",
      "parents": [
        "e36de1de4a5f95b7cb3e5c37d10e6bbb91833ef0"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Sep 29 21:26:16 2011 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Oct 11 09:13:25 2011 -0400"
      },
      "message": "tracing: Warn on output if the function tracer was found corrupted\n\nAs the function tracer is very intrusive, lots of self checks are\nperformed on the tracer and if something is found to be strange\nit will shut itself down keeping it from corrupting the rest of the\nkernel. This shutdown may still allow functions to be traced, as the\ntracing only stops new modifications from happening. Trying to stop\nthe function tracer itself can cause more harm as it requires code\nmodification.\n\nAlthough a WARN_ON() is executed, a user may not notice it. To help\nthe user see that something isn\u0027t right with the tracing of the system\na big warning is added to the output of the tracer that lets the user\nknow that their data may be incomplete.\n\nReported-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1d0e78e380cd2802aa603a50e08220dfc681141c",
      "tree": "909fd3f4d39ca719f29eb6f5690ba171528c4399",
      "parents": [
        "f30120fce1efaa426f340a354d5ace36dab59f0e"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Thu Aug 11 16:25:54 2011 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Aug 19 14:35:59 2011 -0400"
      },
      "message": "tracing/filter: Add startup tests for events filter\n\nAdding automated tests running as late_initcall. Tests are\ncompiled in with CONFIG_FTRACE_STARTUP_TEST option.\n\nAdding test event \"ftrace_test_filter\" used to simulate\nfilter processing during event occurance.\n\nString filters are compiled and tested against several\ntest events with different values.\n\nAlso testing that evaluation of explicit predicates is ommited\ndue to the lazy filter evaluation.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nLink: http://lkml.kernel.org/r/1313072754-4620-11-git-send-email-jolsa@redhat.com\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "61aaef55300088e12d7f853adeea65d1aa1562db",
      "tree": "2f902bf96330b9727ec3d82b9ff92b83cb79636c",
      "parents": [
        "9d96cd1743547f07a8a6c51a3f7741cfca0a0bee"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Thu Aug 11 16:25:47 2011 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Aug 19 14:35:52 2011 -0400"
      },
      "message": "tracing/filter: Remove field_name from filter_pred struct\n\nThe field_name was used just for finding event\u0027s fields. This way we\ndon\u0027t need to care about field_name allocation/free.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nLink: http://lkml.kernel.org/r/1313072754-4620-4-git-send-email-jolsa@redhat.com\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "60063497a95e716c9a689af3be2687d261f115b4",
      "tree": "6ce0d68db76982c53df46aee5f29f944ebf2c320",
      "parents": [
        "148817ba092f9f6edd35bad3c6c6b8e8f90fe2ed"
      ],
      "author": {
        "name": "Arun Sharma",
        "email": "asharma@fb.com",
        "time": "Tue Jul 26 16:09:06 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:47 2011 -0700"
      },
      "message": "atomic: use \u003clinux/atomic.h\u003e\n\nThis allows us to move duplicated code in \u003casm/atomic.h\u003e\n(atomic_inc_not_zero() for now) to \u003clinux/atomic.h\u003e\n\nSigned-off-by: Arun Sharma \u003casharma@fb.com\u003e\nReviewed-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "40bcea7bbe8fe452a2d272e2ffd3dea281eec9ff",
      "tree": "aedb6d02e53e3cf84cc32fd81db84032cee205e1",
      "parents": [
        "492f73a303b488ffd67097b2351d54aa6e6c7c73",
        "14a8fd7ceea6915c613746203d6e9a2bf273f16c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jul 21 09:32:40 2011 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jul 21 09:32:40 2011 +0200"
      },
      "message": "Merge branch \u0027tip/perf/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/core\n"
    },
    {
      "commit": "492f73a303b488ffd67097b2351d54aa6e6c7c73",
      "tree": "6e6c16fbd628bb5eb577cfc70a488ca286563e58",
      "parents": [
        "e08fbb78f03fe2c4f88824faf6f51ce6af185e11",
        "f7bc8b61f65726ff98f52e286b28e294499d7a08"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jul 21 09:29:14 2011 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jul 21 09:29:21 2011 +0200"
      },
      "message": "Merge branch \u0027perf/urgent\u0027 into perf/core\n\nMerge reason: pick up the latest fixes - they won\u0027t make v3.0.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e4a3f541f0b67fdad98b326c851dfe7f4b6b6dad",
      "tree": "e93b858ab3313374d23c4ebadc5077816f1894f2",
      "parents": [
        "e08fbb78f03fe2c4f88824faf6f51ce6af185e11"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Jun 14 19:02:29 2011 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jul 07 22:26:27 2011 -0400"
      },
      "message": "tracing: Still trace filtered irq functions when irq trace is disabled\n\nIf a function is set to be traced by the set_graph_function, but the\noption funcgraph-irqs is zero, and the traced function happens to be\ncalled from a interrupt, it will not be traced.\n\nThe point of funcgraph-irqs is to not trace interrupts when we are\npreempted by an irq, not to not trace functions we want to trace that\nhappen to be *in* a irq.\n\nLuckily the current-\u003etrace_recursion element is perfect to add a flag\nto help us be able to trace functions within an interrupt even when\nwe are not tracing interrupts that preempt the trace.\n\nReported-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nTested-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e9dbfae53eeb9fc3d4bb7da3df87fa9875f5da02",
      "tree": "2a389b9c6a5fe08d4fb3a9ca96e753244963e1d9",
      "parents": [
        "140fe3b1ab9c082182ef13359fab4ddba95c24c3"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Jul 05 11:36:06 2011 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jul 07 11:19:18 2011 -0400"
      },
      "message": "tracing: Fix bug when reading system filters on module removal\n\nThe event system is freed when its nr_events is set to zero. This happens\nwhen a module created an event system and then later the module is\nremoved. Modules may share systems, so the system is allocated when\nit is created and freed when the modules are unloaded and all the\nevents under the system are removed (nr_events set to zero).\n\nThe problem arises when a task opened the \"filter\" file for the\nsystem. If the module is unloaded and it removed the last event for\nthat system, the system structure is freed. If the task that opened\nthe filter file accesses the \"filter\" file after the system has\nbeen freed, the system will access an invalid pointer.\n\nBy adding a ref_count, and using it to keep track of what\nis using the event system, we can free it after all users\nare finished with the event system.\n\nCc: \u003cstable@kernel.org\u003e\nReported-by: Johannes Berg \u003cjohannes.berg@intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1fd8df2c3970c9e7e4e262354154ee39e58bdd7c",
      "tree": "640fbc584af8870917ea6d1fab4da49d299038ad",
      "parents": [
        "c624d33f61cd05241e85b906311f0b712fdb0f32"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "masami.hiramatsu.pt@hitachi.com",
        "time": "Wed Jun 08 16:09:34 2011 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 14 22:48:53 2011 -0400"
      },
      "message": "tracing/kprobes: Fix kprobe-tracer to support stack trace\n\nFix to support kernel stack trace correctly on kprobe-tracer.\nSince the execution path of kprobe-based dynamic events is different\nfrom other tracepoint-based events, normal ftrace_trace_stack() doesn\u0027t\nwork correctly. To fix that, this introduces ftrace_trace_stack_regs()\nwhich traces stack via pt_regs instead of current stack register.\n\ne.g.\n\n # echo p schedule+4 \u003e /sys/kernel/debug/tracing/kprobe_events\n # echo 1 \u003e /sys/kernel/debug/tracing/options/stacktrace\n # echo 1 \u003e /sys/kernel/debug/tracing/events/kprobes/enable\n # head -n 20 /sys/kernel/debug/tracing/trace\n            bash-2968  [000] 10297.050245: p_schedule_4: (schedule+0x4/0x4ca)\n            bash-2968  [000] 10297.050247: \u003cstack trace\u003e\n \u003d\u003e schedule_timeout\n \u003d\u003e n_tty_read\n \u003d\u003e tty_read\n \u003d\u003e vfs_read\n \u003d\u003e sys_read\n \u003d\u003e system_call_fastpath\n     kworker/0:1-2940  [000] 10297.050265: p_schedule_4: (schedule+0x4/0x4ca)\n     kworker/0:1-2940  [000] 10297.050266: \u003cstack trace\u003e\n \u003d\u003e worker_thread\n \u003d\u003e kthread\n \u003d\u003e kernel_thread_helper\n            sshd-1132  [000] 10297.050365: p_schedule_4: (schedule+0x4/0x4ca)\n            sshd-1132  [000] 10297.050365: \u003cstack trace\u003e\n \u003d\u003e sysret_careful\n\nNote: Even with this fix, the first entry will be skipped\nif the probe is put on the function entry area before\nthe frame pointer is set up (usually, that is 4 bytes\n (push %bp; mov %sp %bp) on x86), because stack unwinder\ndepends on the frame pointer.\n\nSigned-off-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: yrl.pp-manager.tt@hitachi.com\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Namhyung Kim \u003cnamhyung@gmail.com\u003e\nLink: http://lkml.kernel.org/r/20110608070934.17777.17116.stgit@fedora15\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "cf30cf67d6c7592c670ec946d89fc15ee0deb0eb",
      "tree": "f86ca612b255ee8570e2fd6198e066ea8cf33fe0",
      "parents": [
        "4f271a2a60c748599b30bb4dafff30d770439b96"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Jun 14 22:44:07 2011 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 14 22:48:45 2011 -0400"
      },
      "message": "tracing: Add disable_on_free option\n\nAdd a trace option to disable tracing on free. When this option is\nset, a write into the free_buffer file will not only shrink the\nring buffer down to zero, but it will also disable tracing.\n\nCc: Vaibhav Nagarnaik \u003cvnagarnaik@google.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b1cff0ad1062621ae63cb6c5dc4165191fe2e9f1",
      "tree": "81c35a8fe57b1a139416aac637b0fc198f67199d",
      "parents": [
        "7f34b746f79c1e1f8fd6d09799d133263ae7a504"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 25 14:27:43 2011 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 25 22:13:49 2011 -0400"
      },
      "message": "ftrace: Add internal recursive checks\n\nWitold reported a reboot caused by the selftests of the dynamic function\ntracer. He sent me a config and I used ktest to do a config_bisect on it\n(as my config did not cause the crash). It pointed out that the problem\nconfig was CONFIG_PROVE_RCU.\n\nWhat happened was that if multiple callbacks are attached to the\nfunction tracer, we iterate a list of callbacks. Because the list is\nmanaged by synchronize_sched() and preempt_disable, the access to the\npointers uses rcu_dereference_raw().\n\nWhen PROVE_RCU is enabled, the rcu_dereference_raw() calls some\ndebugging functions, which happen to be traced. The tracing of the debug\nfunction would then call rcu_dereference_raw() which would then call the\ndebug function and then... well you get the idea.\n\nI first wrote two different patches to solve this bug.\n\n1) add a __rcu_dereference_raw() that would not do any checks.\n2) add notrace to the offending debug functions.\n\nBoth of these patches worked.\n\nTalking with Paul McKenney on IRC, he suggested to add recursion\ndetection instead. This seemed to be a better solution, so I decided to\nimplement it. As the task_struct already has a trace_recursion to detect\nrecursion in the ring buffer, and that has a very small number it\nallows, I decided to use that same variable to add flags that can detect\nthe recursion inside the infrastructure of the function tracer.\n\nI plan to change it so that the task struct bit can be checked in\nmcount, but as that requires changes to all archs, I will hold that off\nto the next merge window.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nLink: http://lkml.kernel.org/r/1306348063.1465.116.camel@gandalf.stny.rr.com\nReported-by: Witold Baryluk \u003cbaryluk@smp.if.uj.edu.pl\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "95950c2ecb31314ef827428e43ff771cf3b037e5",
      "tree": "1ecf9605cc280d362a5a9ddf96bf538cdb47c1aa",
      "parents": [
        "936e074b286ae779f134312178dbab139ee7ea52"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 06 00:08:51 2011 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 18 19:24:51 2011 -0400"
      },
      "message": "ftrace: Add self-tests for multiple function trace users\n\nAdd some basic sanity tests for multiple users of the function\ntracer at startup.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "9a24470b2826e4665b1484836c7ae6aba1ddea32",
      "tree": "277786327395bf98050498f0c97807f41dc8be45",
      "parents": [
        "56355b83e2a24ce7e1870c8479205e2cdd332225"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Mar 09 14:53:38 2011 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Mar 10 10:34:54 2011 -0500"
      },
      "message": "tracing: Align 4 byte ints together in struct tracer\n\nMove elements in struct tracer for better alignment.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "750912fa366312e9c5bc83eab352898a26750401",
      "tree": "bb8e5cd1444a74ea283e3fa55607225e7fda4d70",
      "parents": [
        "2a8247a2600c3e087a568fc68a6ec4eedac27ef1"
      ],
      "author": {
        "name": "David Sharp",
        "email": "dhsharp@google.com",
        "time": "Wed Dec 08 13:46:47 2010 -0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 09 13:52:27 2011 -0500"
      },
      "message": "tracing: Add an \u0027overwrite\u0027 trace_option.\n\nAdd an \"overwrite\" trace_option for ftrace to control whether the buffer should\nbe overwritten on overflow or not. The default remains to overwrite old events\nwhen the buffer is full. This patch adds the option to instead discard newest\nevents when the buffer is full. This is useful to get a snapshot of traces just\nafter enabling traces. Dropping the current event is also a simpler code path.\n\nSigned-off-by: David Sharp \u003cdhsharp@google.com\u003e\nLKML-Reference: \u003c1291844807-15481-1-git-send-email-dhsharp@google.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "bf93f9ed3a2cb89eb7e58851139d3be375b98027",
      "tree": "119ff46680e43ec44134cf643da04282061b2817",
      "parents": [
        "4a3d27e98a7f2682e96d6f863752e0424b00d691"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jan 27 23:21:34 2011 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Feb 07 20:56:20 2011 -0500"
      },
      "message": "tracing/filter: Increase the max preds to 2^14\n\nNow that the filter logic does not require to save the pred results\non the stack, we can increase the max number of preds we allow.\nAs the preds are index by a short value, and we use the MSBs as flags\nwe can increase the max preds to 2^14 (16384) which should be way\nmore than enough.\n\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "4a3d27e98a7f2682e96d6f863752e0424b00d691",
      "tree": "9bbd549ad3170123101b3b5828556ea9f864bdfd",
      "parents": [
        "43cd414552d8137157e926e46361678ea867e476"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jan 27 23:19:49 2011 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Feb 07 20:56:20 2011 -0500"
      },
      "message": "tracing/filter: Move MAX_FILTER_PRED to local tracing directory\n\nThe MAX_FILTER_PRED is only needed by the kernel/trace/*.c files.\nMove it to kernel/trace/trace.h.\n\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    }
  ],
  "next": "43cd414552d8137157e926e46361678ea867e476"
}
