)]}'
{
  "log": [
    {
      "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": "6c24499f40d96bf07a85b709fb1bee5cea611a1d",
      "tree": "7f6591997eeb5b8a74246acb22780b9189cc1d56",
      "parents": [
        "500fcbc4a9f91dfd011c9a6caec80a55e14fd338"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Apr 29 20:08:14 2013 -0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 30 07:23:08 2013 -0700"
      },
      "message": "tracing: Fix small merge bug\n\nDuring the 3.10 merge, a conflict happened and the resolution was\nalmost, but not quite, correct. An if statement was reversed.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n[ Duh. That was just silly of me  - Linus ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9e8529afc4518f4e5d610001545ebc97e1333c79",
      "tree": "26e1aa2cbb50f3f511cfa7d8e39e6b7bd9221b68",
      "parents": [
        "ec25e246b94a3233ab064994ef05a170bdba0e7c",
        "4c69e6ea415a35eb7f0fc8ee9390c8f7436492a2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 29 13:55:38 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Apr 29 13:55:38 2013 -0700"
      },
      "message": "Merge tag \u0027trace-3.10\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace\n\nPull tracing updates from Steven Rostedt:\n \"Along with the usual minor fixes and clean ups there are a few major\n  changes with this pull request.\n\n   1) Multiple buffers for the ftrace facility\n\n  This feature has been requested by many people over the last few\n  years.  I even heard that Google was about to implement it themselves.\n  I finally had time and cleaned up the code such that you can now\n  create multiple instances of the ftrace buffer and have different\n  events go to different buffers.  This way, a low frequency event will\n  not be lost in the noise of a high frequency event.\n\n  Note, currently only events can go to different buffers, the tracers\n  (ie function, function_graph and the latency tracers) still can only\n  be written to the main buffer.\n\n   2) The function tracer triggers have now been extended.\n\n  The function tracer had two triggers.  One to enable tracing when a\n  function is hit, and one to disable tracing.  Now you can record a\n  stack trace on a single (or many) function(s), take a snapshot of the\n  buffer (copy it to the snapshot buffer), and you can enable or disable\n  an event to be traced when a function is hit.\n\n   3) A perf clock has been added.\n\n  A \"perf\" clock can be chosen to be used when tracing.  This will cause\n  ftrace to use the same clock as perf uses, and hopefully this will\n  make it easier to interleave the perf and ftrace data for analysis.\"\n\n* tag \u0027trace-3.10\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (82 commits)\n  tracepoints: Prevent null probe from being added\n  tracing: Compare to 1 instead of zero for is_signed_type()\n  tracing: Remove obsolete macro guard _TRACE_PROFILE_INIT\n  ftrace: Get rid of ftrace_profile_bits\n  tracing: Check return value of tracing_init_dentry()\n  tracing: Get rid of unneeded key calculation in ftrace_hash_move()\n  tracing: Reset ftrace_graph_filter_enabled if count is zero\n  tracing: Fix off-by-one on allocating stat-\u003epages\n  kernel: tracing: Use strlcpy instead of strncpy\n  tracing: Update debugfs README file\n  tracing: Fix ftrace_dump()\n  tracing: Rename trace_event_mutex to trace_event_sem\n  tracing: Fix comment about prefix in arch_syscall_match_sym_name()\n  tracing: Convert trace_destroy_fields() to static\n  tracing: Move find_event_field() into trace_events.c\n  tracing: Use TRACE_MAX_PRINT instead of constant\n  tracing: Use pr_warn_once instead of open coded implementation\n  ring-buffer: Add ring buffer startup selftest\n  tracing: Bring Documentation/trace/ftrace.txt up to date\n  tracing: Add \"perf\" trace_clock\n  ...\n\nConflicts:\n\tkernel/trace/ftrace.c\n\tkernel/trace/trace.c\n"
    },
    {
      "commit": "73e21ce28d8d2b75140b742b01373c3a085ecc52",
      "tree": "add380154271f9a68be4099590f912b4ab4bed9f",
      "parents": [
        "b5210b2a34bae35fc00675462333af45676d727c",
        "f1923820c447e986a9da0fc6bf60c1dccdf0408e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sun Apr 21 10:57:33 2013 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Sun Apr 21 10:57:33 2013 +0200"
      },
      "message": "Merge branch \u0027perf/urgent\u0027 into perf/core\n\nConflicts:\n\tarch/x86/kernel/cpu/perf_event_intel.c\n\nMerge in the latest fixes before applying new patches, resolve the conflict.\n\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "0a82a8d132b26d438eb90b3ab35a7016e7227a1d",
      "tree": "ee01c8dd1db41aaa1d2acfd47330e488f8573c9b",
      "parents": [
        "5c51543b0ae45967cfa99ca16748dc72888cc265"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 18 09:00:26 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 18 09:00:26 2013 -0700"
      },
      "message": "Revert \"block: add missing block_bio_complete() tracepoint\"\n\nThis reverts commit 3a366e614d0837d9fc23f78cdb1a1186ebc3387f.\n\nWanlong Gao reports that it causes a kernel panic on his machine several\nminutes after boot. Reverting it removes the panic.\n\nJens says:\n \"It\u0027s not quite clear why that is yet, so I think we should just revert\n  the commit for 3.9 final (which I\u0027m assuming is pretty close).\n\n  The wifi is crap at the LSF hotel, so sending this email instead of\n  queueing up a revert and pull request.\"\n\nReported-by: Wanlong Gao \u003cgaowanlong@cn.fujitsu.com\u003e\nRequested-by: Jens Axboe \u003caxboe@kernel.dk\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "515619f209114697fabd21eed1623bfa69746815",
      "tree": "84655a5404fb290f8492f3f953f9e61007f7c3e2",
      "parents": [
        "32520b2c695b23221751eb09360a6a3dd3105b52"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:36:49 2013 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Mon Apr 15 17:39:52 2013 +0200"
      },
      "message": "uprobes/perf: Avoid perf_trace_buf_prepare/submit if -\u003eperf_events is empty\n\nperf_trace_buf_prepare() + perf_trace_buf_submit() make no sense\nif this task/CPU has no active counters. Change uprobe_perf_print()\nto return if hlist_empty(call-\u003eperf_events).\n\nNote: this is not uprobe-specific, we can change other users too.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\n"
    },
    {
      "commit": "ae9f4939bad09767c0532f76ccc48cec0ff3ea4e",
      "tree": "7574e26436530fc3c10c848e0b740f05bb02930c",
      "parents": [
        "93263e5283d5c2bc447bc42956f4fa58a3a0a63a",
        "c481420248c6730246d2a1b1773d5d7007ae0835"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 14 11:10:44 2013 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 14 11:10:44 2013 -0700"
      },
      "message": "Merge branch \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\nPull perf fixes from Ingo Molnar:\n \"Misc fixlets\"\n\n* \u0027perf-urgent-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:\n  perf: Fix error return code\n  ftrace: Fix strncpy() use, use strlcpy() instead of strncpy()\n  perf: Fix strncpy() use, use strlcpy() instead of strncpy()\n  perf: Fix strncpy() use, always make sure it\u0027s NUL terminated\n  perf: Fix ring_buffer perf_output_space() boundary calculation\n  perf/x86: Fix uninitialized pt_regs in intel_pmu_drain_bts_buffer()\n"
    },
    {
      "commit": "32520b2c695b23221751eb09360a6a3dd3105b52",
      "tree": "2ae042675882778a52f7b6a22afc974a1d942365",
      "parents": [
        "4ee5a52ed6301d0afa56cc995ef2c3795f45e801"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Wed Apr 10 16:25:49 2013 +0200"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:04 2013 +0200"
      },
      "message": "uprobes/tracing: Don\u0027t pass addr\u003dip to perf_trace_buf_submit()\n\nuprobe_perf_print() passes addr\u003dip to perf_trace_buf_submit() for\nno reason. This sets perf_sample_data-\u003eaddr for PERF_SAMPLE_ADDR,\nwe already have perf_sample_data-\u003eip initialized if PERF_SAMPLE_IP.\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\n"
    },
    {
      "commit": "4ee5a52ed6301d0afa56cc995ef2c3795f45e801",
      "tree": "2ed597fd7f5519f914bd7aed5561c141b6599c77",
      "parents": [
        "3ede82dd3e3deb23429f2bf44fb600f440eef84b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Mar 30 20:28:15 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:03 2013 +0200"
      },
      "message": "uprobes/tracing: Change create_trace_uprobe() to support uretprobes\n\nFinally change create_trace_uprobe() to check if argv[0][0] \u003d\u003d \u0027r\u0027\nand pass the correct \"is_ret\" to alloc_trace_uprobe().\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": "3ede82dd3e3deb23429f2bf44fb600f440eef84b",
      "tree": "ecf9313c1a1275b3b70ead7772f66a853e9f386f",
      "parents": [
        "4d1298e2124767b4e263498485618b2e91aee5f0"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Mar 30 19:48:09 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:03 2013 +0200"
      },
      "message": "uprobes/tracing: Make seq_printf() code uretprobe-friendly\n\nChange probes_seq_show() and print_uprobe_event() to check\nis_ret_probe() and print the correct data.\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": "4d1298e2124767b4e263498485618b2e91aee5f0",
      "tree": "ec9888fa9d27d0e8be7a94c7d09623f09b3a770e",
      "parents": [
        "393a736c280d555d9301fc5516d4d401544eb9db"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Mar 30 19:23:15 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:03 2013 +0200"
      },
      "message": "uprobes/tracing: Make register_uprobe_event() paths uretprobe-friendly\n\nChange uprobe_event_define_fields(), and __set_print_fmt() to check\nis_ret_probe() and use the appropriate format/fields.\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": "393a736c280d555d9301fc5516d4d401544eb9db",
      "tree": "c0cb3385b47e0ecb38f7199b2a319e704abe9988",
      "parents": [
        "c1ae5c75e1034070b203dc9d4ad77ce196166a6c"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Mar 30 18:46:22 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:03 2013 +0200"
      },
      "message": "uprobes/tracing: Make uprobe_{trace,perf}_print() uretprobe-friendly\n\nChange uprobe_trace_print() and uprobe_perf_print() to check\nis_ret_probe() and fill ring_buffer_event accordingly.\n\nAlso change uprobe_trace_func() and uprobe_perf_func() to not\n_print() if is_ret_probe() is true. Note that we keep -\u003ehandler()\nnontrivial even for uretprobe, we need this for filtering and for\nother potential extensions.\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": "c1ae5c75e1034070b203dc9d4ad77ce196166a6c",
      "tree": "a7cd4e28f3562037c1f76797234a6a2d2ce7a24e",
      "parents": [
        "a51cc6041773dd88ff35608f54274bfd6ac68652"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Mar 30 18:25:23 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:02 2013 +0200"
      },
      "message": "uprobes/tracing: Introduce is_ret_probe() and uretprobe_dispatcher()\n\nCreate the new functions we need to support uretprobes, and change\nalloc_trace_uprobe() to initialize consumer.ret_handler if the new\n\"is_ret\" argument is true. Curently this argument is always false,\nso the new code is never called and is_ret_probe(tu) is false too.\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": "a51cc6041773dd88ff35608f54274bfd6ac68652",
      "tree": "b7969268db40338d42c29d8ffb1787041d7d6760",
      "parents": [
        "457d1772f1c1bcf37b2ae7fc8f1d6f303d1d5cf9"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Mar 30 18:02:12 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:01 2013 +0200"
      },
      "message": "uprobes/tracing: Introduce uprobe_{trace,perf}_print() helpers\n\nExtract the output code from uprobe_trace_func() and uprobe_perf_func()\ninto the new helpers, they will be used by -\u003eret_handler() too. We also\nadd the unused \"unsigned long func\" argument in advance, to simplify the\nnext changes.\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": "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": "0e3853d202e8b2720bc4c674dc58849b2662c8f8",
      "tree": "1985c7d62717dd07c2e3957acbb66515dc0ce65d",
      "parents": [
        "456fdbcb8648a20f56977efbc6f13e28936fcf0b"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Mar 28 19:19:11 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:32:00 2013 +0200"
      },
      "message": "uprobes/tracing: Kill the pointless local_save_flags/preempt_count calls\n\nuprobe_trace_func() is never called with irqs or preemption\ndisabled, no need to ask preempt_count() or local_save_flags().\n\nSigned-off-by: Oleg Nesterov \u003coleg@redhat.com\u003e\nAcked-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Masami Hiramatsu \u003cmasami.hiramatsu.pt@hitachi.com\u003e\nTested-by: Anton Arapov \u003canton@redhat.com\u003e\n"
    },
    {
      "commit": "456fdbcb8648a20f56977efbc6f13e28936fcf0b",
      "tree": "e6e868c2830ae0212a1329edf7ecb0a901534052",
      "parents": [
        "07720b63a964851928fa5d8b00ee5270d66b94f7"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Mar 28 18:58:11 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:31:59 2013 +0200"
      },
      "message": "uprobes/tracing: Kill the pointless seq_print_ip_sym() call\n\nseq_print_ip_sym(ip) in print_uprobe_event() is pointless,\nkallsyms_lookup(ip) can not resolve a user-space address.\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": "07720b63a964851928fa5d8b00ee5270d66b94f7",
      "tree": "a0f34bea6ac91b0444c48fc830b53b0139c0e746",
      "parents": [
        "decc6bfb49d1eda6cec67d79b73a73fa3aaad6e5"
      ],
      "author": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Thu Mar 28 18:01:04 2013 +0100"
      },
      "committer": {
        "name": "Oleg Nesterov",
        "email": "oleg@redhat.com",
        "time": "Sat Apr 13 15:31:59 2013 +0200"
      },
      "message": "uprobes/tracing: Kill the pointless task_pt_regs() calls\n\nuprobe_trace_func() and uprobe_perf_func() do not need task_pt_regs(),\nwe already have \"struct pt_regs *regs\".\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": "20079ebe73c16b34621abd2993f3d48e2f9336b7",
      "tree": "96b2ace696902e848edd01173505fddba44a743e",
      "parents": [
        "ed6f1c996bfe4b6e520cf7a74b51cd6988d84420"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Apr 10 08:55:50 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 23:02:33 2013 -0400"
      },
      "message": "ftrace: Get rid of ftrace_profile_bits\n\nIt seems that function profiler\u0027s hash size is fixed at 1024.  Add and\nuse FTRACE_PROFILE_HASH_BITS instead and update hash size macro.\n\nLink: http://lkml.kernel.org/r/1365551750-4504-1-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": "ed6f1c996bfe4b6e520cf7a74b51cd6988d84420",
      "tree": "1d9da2d98d5e94cd9b6606cbf8f721925c53164e",
      "parents": [
        "f1943977e6648c1d42a78eda4ba4429a2bc0b786"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Apr 10 09:18:12 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 23:02:32 2013 -0400"
      },
      "message": "tracing: Check return value of tracing_init_dentry()\n\nCheck return value and bail out if it\u0027s NULL.\n\nLink: http://lkml.kernel.org/r/1365553093-10180-2-git-send-email-namhyung@kernel.org\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Namhyung Kim \u003cnamhyung.kim@lge.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f1943977e6648c1d42a78eda4ba4429a2bc0b786",
      "tree": "ce8d64e065be0b1305b4d296c5d147650d2f11c7",
      "parents": [
        "9f50afccfdc15d95d7331acddcb0f7703df089ae"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Wed Apr 10 09:18:11 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 23:02:31 2013 -0400"
      },
      "message": "tracing: Get rid of unneeded key calculation in ftrace_hash_move()\n\nIt\u0027s not used anywhere in the function.\n\nLink: http://lkml.kernel.org/r/1365553093-10180-1-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": "9f50afccfdc15d95d7331acddcb0f7703df089ae",
      "tree": "348b898d53a1b4f14d9d03e11e5bbf5d561fc5f8",
      "parents": [
        "39e30cd1537937d3c00ef87e865324e981434e5b"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Thu Apr 11 16:01:38 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 23:02:30 2013 -0400"
      },
      "message": "tracing: Reset ftrace_graph_filter_enabled if count is zero\n\nThe ftrace_graph_count can be decreased with a \"!\" pattern, so that\nthe enabled flag should be updated too.\n\nLink: http://lkml.kernel.org/r/1365663698-2413-1-git-send-email-namhyung@kernel.org\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Namhyung Kim \u003cnamhyung.kim@lge.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7f49ef69db6bbf756c0abca7e9b65b32e999eec8",
      "tree": "a98bda9589c09a84bedf6346e2acdae605fc9fb9",
      "parents": [
        "6a76f8c0ab19f215af2a3442870eeb5f0e81998d"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 16:40:13 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 17:12:41 2013 -0400"
      },
      "message": "ftrace: Move ftrace_filter_lseek out of CONFIG_DYNAMIC_FTRACE section\n\nAs ftrace_filter_lseek is now used with ftrace_pid_fops, it needs to\nbe moved out of the #ifdef CONFIG_DYNAMIC_FTRACE section as the\nftrace_pid_fops is defined when DYNAMIC_FTRACE is not.\n\nCc: stable@vger.kernel.org\nCc: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "6a76f8c0ab19f215af2a3442870eeb5f0e81998d",
      "tree": "551f1c13779323e06b8ef906192ba7a5d87aa7b6",
      "parents": [
        "83e03b3fe4daffdebbb42151d5410d730ae50bd1"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Thu Apr 11 15:55:01 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Apr 12 14:43:34 2013 -0400"
      },
      "message": "tracing: Fix possible NULL pointer dereferences\n\nCurrently set_ftrace_pid and set_graph_function files use seq_lseek\nfor their fops.  However seq_open() is called only for FMODE_READ in\nthe fops-\u003eopen() so that if an user tries to seek one of those file\nwhen she open it for writing, it sees NULL seq_file and then panic.\n\nIt can be easily reproduced with following command:\n\n  $ cd /sys/kernel/debug/tracing\n  $ echo 1234 | sudo tee -a set_ftrace_pid\n\nIn this example, GNU coreutils\u0027 tee opens the file with fopen(, \"a\")\nand then the fopen() internally calls lseek().\n\nLink: http://lkml.kernel.org/r/1365663302-2170-1-git-send-email-namhyung@kernel.org\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@kernel.org\u003e\nCc: Namhyung Kim \u003cnamhyung.kim@lge.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "39e30cd1537937d3c00ef87e865324e981434e5b",
      "tree": "ff4bd7d0047771a34f79b9eb34c9ddef3b0ef374",
      "parents": [
        "9607a869ee59594f3f7b9f3ac43a11d92bf3f960"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Mon Apr 01 21:46:24 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 09 19:00:49 2013 -0400"
      },
      "message": "tracing: Fix off-by-one on allocating stat-\u003epages\n\nThe first page was allocated separately, so no need to start from 0.\n\nLink: http://lkml.kernel.org/r/1364820385-32027-2-git-send-email-namhyung@kernel.org\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Namhyung Kim \u003cnamhyung.kim@lge.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "83e03b3fe4daffdebbb42151d5410d730ae50bd1",
      "tree": "007c3030b619ba28965c60e3e8fa57dd9bbc236e",
      "parents": [
        "395b97a3aeff0b8d949ee3e67bf8c11c5ffd6861"
      ],
      "author": {
        "name": "Namhyung Kim",
        "email": "namhyung.kim@lge.com",
        "time": "Mon Apr 01 21:46:23 2013 +0900"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 09 18:54:04 2013 -0400"
      },
      "message": "tracing: Fix double free when function profile init failed\n\nOn the failure path, stat-\u003estart and stat-\u003epages will refer same page.\nSo it\u0027ll attempt to free the same page again and get kernel panic.\n\nLink: http://lkml.kernel.org/r/1364820385-32027-1-git-send-email-namhyung@kernel.org\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Namhyung Kim \u003cnamhyung.kim@lge.com\u003e\nCc: stable@vger.kernel.org\nSigned-off-by: Namhyung Kim \u003cnamhyung@kernel.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "9607a869ee59594f3f7b9f3ac43a11d92bf3f960",
      "tree": "18dcec81e889275f3003535f9f2e96cdb7f50298",
      "parents": [
        "22f45649ce08642ad7df238d5c25fa5c86bfdd31"
      ],
      "author": {
        "name": "Chen Gang",
        "email": "gang.chen@asianux.com",
        "time": "Mon Apr 08 12:06:44 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 09 11:25:08 2013 -0400"
      },
      "message": "kernel: tracing: Use strlcpy instead of strncpy\n\nUse strlcpy() instead of strncpy() as it will always add a \u0027\\0\u0027\nto the end of the string even if the buffer is smaller than what\nis being copied.\n\nLink: http://lkml.kernel.org/r/51624254.30301@asianux.com\n\nSigned-off-by: Chen Gang \u003cgang.chen@asianux.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "395b97a3aeff0b8d949ee3e67bf8c11c5ffd6861",
      "tree": "719c1519cc536a5ec0118b107f0edc90bd312fe6",
      "parents": [
        "5000c418840b309251c5887f0b56503aae30f84c"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 27 09:31:28 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@rostedt.homelinux.com",
        "time": "Mon Apr 08 12:24:23 2013 -0400"
      },
      "message": "ftrace: Do not call stub functions in control loop\n\nThe function tracing control loop used by perf spits out a warning\nif the called function is not a control function. This is because\nthe control function references a per cpu allocated data structure\non struct ftrace_ops that is not allocated for other types of\nfunctions.\n\ncommit 0a016409e42 \"ftrace: Optimize the function tracer list loop\"\n\nHad an optimization done to all function tracing loops to optimize\nfor a single registered ops. Unfortunately, this allows for a slight\nrace when tracing starts or ends, where the stub function might be\ncalled after the current registered ops is removed. In this case we\nget the following dump:\n\nroot# perf stat -e ftrace:function sleep 1\n[   74.339105] WARNING: at include/linux/ftrace.h:209 ftrace_ops_control_func+0xde/0xf0()\n[   74.349522] Hardware name: PRIMERGY RX200 S6\n[   74.357149] Modules linked in: sg igb iTCO_wdt ptp pps_core iTCO_vendor_support i7core_edac dca lpc_ich i2c_i801 coretemp edac_core crc32c_intel mfd_core ghash_clmulni_intel dm_multipath acpi_power_meter pcspk\nr microcode vhost_net tun macvtap macvlan nfsd kvm_intel kvm auth_rpcgss nfs_acl lockd sunrpc uinput xfs libcrc32c sd_mod crc_t10dif sr_mod cdrom mgag200 i2c_algo_bit drm_kms_helper ttm qla2xxx mptsas ahci drm li\nbahci scsi_transport_sas mptscsih libata scsi_transport_fc i2c_core mptbase scsi_tgt dm_mirror dm_region_hash dm_log dm_mod\n[   74.446233] Pid: 1377, comm: perf Tainted: G        W    3.9.0-rc1 #1\n[   74.453458] Call Trace:\n[   74.456233]  [\u003cffffffff81062e3f\u003e] warn_slowpath_common+0x7f/0xc0\n[   74.462997]  [\u003cffffffff810fbc60\u003e] ? rcu_note_context_switch+0xa0/0xa0\n[   74.470272]  [\u003cffffffff811041a2\u003e] ? __unregister_ftrace_function+0xa2/0x1a0\n[   74.478117]  [\u003cffffffff81062e9a\u003e] warn_slowpath_null+0x1a/0x20\n[   74.484681]  [\u003cffffffff81102ede\u003e] ftrace_ops_control_func+0xde/0xf0\n[   74.491760]  [\u003cffffffff8162f400\u003e] ftrace_call+0x5/0x2f\n[   74.497511]  [\u003cffffffff8162f400\u003e] ? ftrace_call+0x5/0x2f\n[   74.503486]  [\u003cffffffff8162f400\u003e] ? ftrace_call+0x5/0x2f\n[   74.509500]  [\u003cffffffff810fbc65\u003e] ? synchronize_sched+0x5/0x50\n[   74.516088]  [\u003cffffffff816254d5\u003e] ? _cond_resched+0x5/0x40\n[   74.522268]  [\u003cffffffff810fbc65\u003e] ? synchronize_sched+0x5/0x50\n[   74.528837]  [\u003cffffffff811041a2\u003e] ? __unregister_ftrace_function+0xa2/0x1a0\n[   74.536696]  [\u003cffffffff816254d5\u003e] ? _cond_resched+0x5/0x40\n[   74.542878]  [\u003cffffffff8162402d\u003e] ? mutex_lock+0x1d/0x50\n[   74.548869]  [\u003cffffffff81105c67\u003e] unregister_ftrace_function+0x27/0x50\n[   74.556243]  [\u003cffffffff8111eadf\u003e] perf_ftrace_event_register+0x9f/0x140\n[   74.563709]  [\u003cffffffff816254d5\u003e] ? _cond_resched+0x5/0x40\n[   74.569887]  [\u003cffffffff8162402d\u003e] ? mutex_lock+0x1d/0x50\n[   74.575898]  [\u003cffffffff8111e94e\u003e] perf_trace_destroy+0x2e/0x50\n[   74.582505]  [\u003cffffffff81127ba9\u003e] tp_perf_event_destroy+0x9/0x10\n[   74.589298]  [\u003cffffffff811295d0\u003e] free_event+0x70/0x1a0\n[   74.595208]  [\u003cffffffff8112a579\u003e] perf_event_release_kernel+0x69/0xa0\n[   74.602460]  [\u003cffffffff816254d5\u003e] ? _cond_resched+0x5/0x40\n[   74.608667]  [\u003cffffffff8112a640\u003e] put_event+0x90/0xc0\n[   74.614373]  [\u003cffffffff8112a740\u003e] perf_release+0x10/0x20\n[   74.620367]  [\u003cffffffff811a3044\u003e] __fput+0xf4/0x280\n[   74.625894]  [\u003cffffffff811a31de\u003e] ____fput+0xe/0x10\n[   74.631387]  [\u003cffffffff81083697\u003e] task_work_run+0xa7/0xe0\n[   74.637452]  [\u003cffffffff81014981\u003e] do_notify_resume+0x71/0xb0\n[   74.643843]  [\u003cffffffff8162fa92\u003e] int_signal+0x12/0x17\n\nTo fix this a new ftrace_ops flag is added that denotes the ftrace_list_end\nftrace_ops stub as just that, a stub. This flag is now checked in the\ncontrol loop and the function is not called if the flag is set.\n\nThanks to Jovi for not just reporting the bug, but also pointing out\nwhere the bug was in the code.\n\nLink: http://lkml.kernel.org/r/514A8855.7090402@redhat.com\nLink: http://lkml.kernel.org/r/1364377499-1900-15-git-send-email-jovi.zhangwei@huawei.com\n\nTested-by: WANG Chao \u003cchaowang@redhat.com\u003e\nReported-by: WANG Chao \u003cchaowang@redhat.com\u003e\nReported-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "5000c418840b309251c5887f0b56503aae30f84c",
      "tree": "dd6b37707670ac5eaaba9f395c999328904dd38b",
      "parents": [
        "2930e04d00e113ae24bb2b7c2b58de7b648a62c7"
      ],
      "author": {
        "name": "Jan Kiszka",
        "email": "jan.kiszka@siemens.com",
        "time": "Tue Mar 26 17:53:03 2013 +0100"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@rostedt.homelinux.com",
        "time": "Mon Apr 08 12:24:22 2013 -0400"
      },
      "message": "ftrace: Consistently restore trace function on sysctl enabling\n\nIf we reenable ftrace via syctl, we currently set ftrace_trace_function\nbased on the previous simplistic algorithm. This is inconsistent with\nwhat update_ftrace_function does. So better call that helper instead.\n\nLink: http://lkml.kernel.org/r/5151D26F.1070702@siemens.com\n\nCc: stable@vger.kernel.org\nSigned-off-by: Jan Kiszka \u003cjan.kiszka@siemens.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2930e04d00e113ae24bb2b7c2b58de7b648a62c7",
      "tree": "60dc173d8370ec69d48f04f074ca78fb152d0c1f",
      "parents": [
        "fd4a5aef002bb57e8a35ed34d8a878034b9bde94"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 26 17:33:00 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@rostedt.homelinux.com",
        "time": "Mon Apr 08 12:24:22 2013 -0400"
      },
      "message": "tracing: Fix race with update_max_tr_single and changing tracers\n\nThe commit 34600f0e9 \"tracing: Fix race with max_tr and changing tracers\"\nfixed the updating of the main buffers with the race of changing\ntracers, but left out the fix to the updating of just a per cpu buffer.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "75761cc15877c155b3849b4e0e0cb3f897faf471",
      "tree": "8ba53195b51c031314c7454720af9d03ee9ec8f3",
      "parents": [
        "67012ab1d2ce871afea4ee55408f233f97d09d07"
      ],
      "author": {
        "name": "Chen Gang",
        "email": "gang.chen@asianux.com",
        "time": "Mon Apr 08 12:12:39 2013 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Apr 08 13:26:56 2013 +0200"
      },
      "message": "ftrace: Fix strncpy() use, use strlcpy() instead of strncpy()\n\nFor NUL terminated string we always need to set \u0027\\0\u0027 at the end.\n\nSigned-off-by: Chen Gang \u003cgang.chen@asianux.com\u003e\nCc: rostedt@goodmis.org\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLink: http://lkml.kernel.org/r/516243B7.9020405@asianux.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "67012ab1d2ce871afea4ee55408f233f97d09d07",
      "tree": "3f44d6c02233abb51848bfa991d571e86397b431",
      "parents": [
        "c97847d2f0eb77c806e650e04d9bbcf79fa05730"
      ],
      "author": {
        "name": "Chen Gang",
        "email": "gang.chen@asianux.com",
        "time": "Mon Apr 08 12:06:44 2013 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Apr 08 13:26:56 2013 +0200"
      },
      "message": "perf: Fix strncpy() use, use strlcpy() instead of strncpy()\n\nFor NUL terminated string we always need to set \u0027\\0\u0027 at the end.\n\nSigned-off-by: Chen Gang \u003cgang.chen@asianux.com\u003e\nCc: rostedt@goodmis.org\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLink: http://lkml.kernel.org/r/51624254.30301@asianux.com\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "22f45649ce08642ad7df238d5c25fa5c86bfdd31",
      "tree": "f67c377dabc78fa54b3b815716751ccae4e0927c",
      "parents": [
        "7fe70b579c9e3daba71635e31b6189394e7b79d3"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 17:23:20 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 20 21:55:02 2013 -0400"
      },
      "message": "tracing: Update debugfs README file\n\nUpdate the README file in debugfs/tracing to something more useful.\nWhat\u0027s currently in the file is very old and what it shows doesn\u0027t\nhave much use. Heck, it tells you how to mount debugfs! But to read\nthis file you would have already needed to mount it.\n\nReplace the file with current up-to-date information. It\u0027s rather\nlimited, but what do you expect from a pseudo README file.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1f1b396758eff67b43b226904e1748f1e4272b4d",
      "tree": "b9dc20f6c135edc4ff7857323430f71f619c3c7b",
      "parents": [
        "d610d98b5de6860feb21539726e9af7c9094151c",
        "613f04a0f51e6e68ac6fe571ab79da3c0a5eb4da"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Mar 18 09:48:29 2013 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@kernel.org",
        "time": "Mon Mar 18 09:48:29 2013 +0100"
      },
      "message": "Merge branch \u0027tip/perf/urgent-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/urgent\n\nPull tracing fixes from Steven Rostedt.\n\nSigned-off-by: Ingo Molnar \u003cmingo@kernel.org\u003e\n"
    },
    {
      "commit": "7fe70b579c9e3daba71635e31b6189394e7b79d3",
      "tree": "742f410da0aa17257e7d2c4aebe538729e27338f",
      "parents": [
        "52f6ad6dc3f4c6de598fe7cc9b629888d624aa52"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:10:35 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 19:24:56 2013 -0400"
      },
      "message": "tracing: Fix ftrace_dump()\n\nftrace_dump() had a lot of issues. What ftrace_dump() does, is when\nftrace_dump_on_oops is set (via a kernel parameter or sysctl), it\nwill dump out the ftrace buffers to the console when either a oops,\npanic, or a sysrq-z occurs.\n\nThis was written a long time ago when ftrace was fragile to recursion.\nBut it wasn\u0027t written well even for that.\n\nThere\u0027s a possible deadlock that can occur if a ftrace_dump() is happening\nand an NMI triggers another dump. This is because it grabs a lock\nbefore checking if the dump ran.\n\nIt also totally disables ftrace, and tracing for no good reasons.\n\nAs the ring_buffer now checks if it is read via a oops or NMI, where\nthere\u0027s a chance that the buffer gets corrupted, it will disable\nitself. No need to have ftrace_dump() do the same.\n\nftrace_dump() is now cleaned up where it uses an atomic counter to\nmake sure only one dump happens at a time. A simple atomic_inc_return()\nis enough that is needed for both other CPUs and NMIs. No need for\na spinlock, as if one CPU is running the dump, no other CPU needs\nto do it too.\n\nThe tracing_on variable is turned off and not turned on. The original\ncode did this, but it wasn\u0027t pretty. By just disabling this variable\nwe get the result of not seeing traces that happen between crashes.\n\nFor sysrq-z, it doesn\u0027t get turned on, but the user can always write\na \u00271\u0027 to the tracing_on file. If they are using sysrq-z, then they should\nknow about tracing_on.\n\nThe new code is much easier to read and less error prone. No more\ndeadlock possibility when an NMI triggers here.\n\nReported-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nCc: stable@vger.kernel.org\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": "52f6ad6dc3f4c6de598fe7cc9b629888d624aa52",
      "tree": "ae3d4edf8b44bf9e77e970e58411420e6e164b60",
      "parents": [
        "36a78e9e8792bfb052643eaf9374f837e634982c"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Mon Mar 11 15:14:03 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:22:10 2013 -0400"
      },
      "message": "tracing: Rename trace_event_mutex to trace_event_sem\n\ntrace_event_mutex is an rw semaphore now, not a mutex, change the name.\n\nLink: http://lkml.kernel.org/r/513D843B.40109@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\n[ Forward ported to my new code ]\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "36a78e9e8792bfb052643eaf9374f837e634982c",
      "tree": "2e300f9a052f92ea50d30067d9755c5cca2b952b",
      "parents": [
        "ad7067cebf3253412a7c0a169a9dd056b11e69ac"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Mon Mar 11 15:13:51 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:22:09 2013 -0400"
      },
      "message": "tracing: Fix comment about prefix in arch_syscall_match_sym_name()\n\nppc64 has its own syscall prefix like \".SyS\" or \".sys\". Make the\ncomment in arch_syscall_match_sym_name() more understandable.\n\nLink: http://lkml.kernel.org/r/513D842F.40205@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ad7067cebf3253412a7c0a169a9dd056b11e69ac",
      "tree": "503e8275e837c3ad97e1ddd1db4a14fce2b34606",
      "parents": [
        "b3a8c6fd7bb61c910bd4f80ae1d75056e8f98c19"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Mon Mar 11 15:13:46 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:22:08 2013 -0400"
      },
      "message": "tracing: Convert trace_destroy_fields() to static\n\ntrace_destroy_fields() is not used outside of the file. It can be\na static function.\n\nLink: http://lkml.kernel.org/r/513D842A.2000907@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\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": "bd6df18716fa45bc4aa9587aca033de909e5382b",
      "tree": "843a8da1a65e05067621eef60bf87cb50b1e5a35",
      "parents": [
        "687c878afb526a0c3117dbc408ca76ad80d689f7"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Mon Mar 11 15:13:37 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:22:06 2013 -0400"
      },
      "message": "tracing: Use TRACE_MAX_PRINT instead of constant\n\nTRACE_MAX_PRINT macro is defined, but is not used.\n\nLink: http://lkml.kernel.org/r/513D8421.4070404@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "687c878afb526a0c3117dbc408ca76ad80d689f7",
      "tree": "235c0d1a9e293dfecde5d28dc42ff51e9452df62",
      "parents": [
        "6c43e554a2a5c1f2caf1733d46719bc58de3e37b"
      ],
      "author": {
        "name": "zhangwei(Jovi)",
        "email": "jovi.zhangwei@huawei.com",
        "time": "Mon Mar 11 15:13:29 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:22:05 2013 -0400"
      },
      "message": "tracing: Use pr_warn_once instead of open coded implementation\n\nUse pr_warn_once, instead of making an open coded implementation.\n\nLink: http://lkml.kernel.org/r/513D8419.20400@huawei.com\n\nSigned-off-by: zhangwei(Jovi) \u003cjovi.zhangwei@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "6c43e554a2a5c1f2caf1733d46719bc58de3e37b",
      "tree": "032b7ade3b4c0c24e9e89c9bf6fd3f37947c58cf",
      "parents": [
        "8d016091d10953e00f9d2c0125cc0ddd46c23a6a"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 11:32:53 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 13:21:16 2013 -0400"
      },
      "message": "ring-buffer: Add ring buffer startup selftest\n\nWhen testing my large changes to the ftrace system, there was\na bug that looked like the ring buffer was dropping events.\nI wrote up a quick integrity checker of the ring buffer to\nsee if it was.\n\nAlthough the bug ended up being something stupid I did in ftrace,\nand had nothing to do with the ring buffer, I figured if I spent\nthe time to write up this test, I might as well include it in the\nkernel.\n\nI cleaned it up a bit, as the original version was rather ugly.\nNot saying this version is pretty, but it\u0027s a beauty queen\ncompared to what I original wrote.\n\nTo enable the start up test, set CONFIG_RING_BUFFER_STARTUP_TEST.\n\nNote, it runs for 10 seconds, so it will slow your boot time\nby at least 10 more seconds.\n\nWhat it does is documented in both the comments and the Kconfig\nhelp.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "76f119179b8ce3188a8c61d2486d37810a416655",
      "tree": "aa8e25756c29af47625d53b37896bca859408b63",
      "parents": [
        "8aacf017b065a805d27467843490c976835eb4a5"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Mar 14 17:53:25 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:10 2013 -0400"
      },
      "message": "tracing: Add \"perf\" trace_clock\n\nThe function trace_clock() calls \"local_clock()\" which is exactly\nthe same clock that perf uses. I\u0027m not sure why perf doesn\u0027t call\ntrace_clock(), as trace_clock() doesn\u0027t have any users.\n\nBut now it does. As trace_clock() calls local_clock() like perf does,\nI added the trace_clock \"perf\" option that uses trace_clock().\n\nNow the ftrace buffers can use the same clock as perf uses. This\nwill be useful when perf starts reading the ftrace buffers, and will\nbe able to interleave them with the same clock data.\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": "8aacf017b065a805d27467843490c976835eb4a5",
      "tree": "3e3ee23502cf2cc6d02baa1f7625b1ef16611eda",
      "parents": [
        "328df4759c03e2c3e7429cc6cb0e180c38f32063"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Mar 14 13:13:45 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:09 2013 -0400"
      },
      "message": "tracing: Add \"uptime\" trace clock that uses jiffies\n\nAdd a simple trace clock called \"uptime\" for those that are\ninterested in the uptime of the trace. It uses jiffies as that\u0027s\nthe safest method, as other uptime clocks grab seq locks, which could\ncause a deadlock if taken from an event or function tracer.\n\nRequested-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\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": "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": "4df297129f622bdc18935c856f42b9ddd18f9f28",
      "tree": "71e6271f1ab2f2ba260df6c44aaed8ba156ac54a",
      "parents": [
        "d4ecbfc49b4b1d4b597fb5ba9e4fa25d62f105c5"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 13 23:34:22 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:07 2013 -0400"
      },
      "message": "tracing: Remove most or all of stack tracer stack size from stack_max_size\n\nCurrently, the depth reported in the stack tracer stack_trace file\ndoes not match the stack_max_size file. This is because the stack_max_size\nincludes the overhead of stack tracer itself while the depth does not.\n\nThe first time a max is triggered, a calculation is not performed that\nfigures out the overhead of the stack tracer and subtracts it from\nthe stack_max_size variable. The overhead is stored and is subtracted\nfrom the reported stack size for comparing for a new max.\n\nNow the stack_max_size corresponds to the reported depth:\n\n # cat stack_max_size\n4640\n\n # cat stack_trace\n        Depth    Size   Location    (48 entries)\n        -----    ----   --------\n  0)     4640      32   _raw_spin_lock+0x18/0x24\n  1)     4608     112   ____cache_alloc+0xb7/0x22d\n  2)     4496      80   kmem_cache_alloc+0x63/0x12f\n  3)     4416      16   mempool_alloc_slab+0x15/0x17\n[...]\n\nWhile testing against and older gcc on x86 that uses mcount instead\nof fentry, I found that pasing in ip + MCOUNT_INSN_SIZE let the\nstack trace show one more function deep which was missing before.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "d4ecbfc49b4b1d4b597fb5ba9e4fa25d62f105c5",
      "tree": "f5e73b6e7c125c41016728176b2addcf0432b202",
      "parents": [
        "87889501d0adfae10e3b0f0e6f2d7536eed9ae84"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 13 21:25:35 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:07 2013 -0400"
      },
      "message": "tracing: Fix stack tracer with fentry use\n\nWhen gcc 4.6 on x86 is used, the function tracer will use the new\noption -mfentry which does a call to \"fentry\" at every function\ninstead of \"mcount\". The significance of this is that fentry is\ncalled as the first operation of the function instead of the mcount\nusage of being called after the stack.\n\nThis causes the stack tracer to show some bogus results for the size\nof the last function traced, as well as showing \"ftrace_call\" instead\nof the function. This is due to the stack frame not being set up\nby the function that is about to be traced.\n\n # cat stack_trace\n        Depth    Size   Location    (48 entries)\n        -----    ----   --------\n  0)     4824     216   ftrace_call+0x5/0x2f\n  1)     4608     112   ____cache_alloc+0xb7/0x22d\n  2)     4496      80   kmem_cache_alloc+0x63/0x12f\n\nThe 216 size for ftrace_call includes both the ftrace_call stack\n(which includes the saving of registers it does), as well as the\nstack size of the parent.\n\nTo fix this, if CC_USING_FENTRY is defined, then the stack_tracer\nwill reserve the first item in stack_dump_trace[] array when\ncalling save_stack_trace(), and it will fill it in with the parent ip.\nThen the code will look for the parent pointer on the stack and\ngive the real size of the parent\u0027s stack pointer:\n\n # cat stack_trace\n        Depth    Size   Location    (14 entries)\n        -----    ----   --------\n  0)     2640      48   update_group_power+0x26/0x187\n  1)     2592     224   update_sd_lb_stats+0x2a5/0x4ac\n  2)     2368     160   find_busiest_group+0x31/0x1f1\n  3)     2208     256   load_balance+0xd9/0x662\n\nI\u0027m Cc\u0027ing stable, although it\u0027s not urgent, as it only shows bogus\nsize for item #0, the rest of the trace is legit. It should still be\ncorrected in previous stable releases.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "87889501d0adfae10e3b0f0e6f2d7536eed9ae84",
      "tree": "c103cc8bf1687f5ffe54ff7f17c7672bda20cad1",
      "parents": [
        "dd42cd3ea96d687f15525c4f14fa582702db223f"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 13 20:43:57 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:06 2013 -0400"
      },
      "message": "tracing: Use stack of calling function for stack tracer\n\nUse the stack of stack_trace_call() instead of check_stack() as\nthe test pointer for max stack size. It makes it a bit cleaner\nand a little more accurate.\n\nAdding stable, as a later fix depends on this patch.\n\nCc: stable@vger.kernel.org\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "dd42cd3ea96d687f15525c4f14fa582702db223f",
      "tree": "135eb362cc41f54392d10af19fc4e10ef7060081",
      "parents": [
        "c142be8ebe0b7bf73c8a0063925623f3e4b980c0"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 13 10:17:50 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:05 2013 -0400"
      },
      "message": "tracing: Add function probe to trigger stack traces\n\nAdd a function probe that will cause a stack trace to be traced in\nthe ring buffer when the given function(s) are called.\n\nformat is:\n\n \u003cfunction\u003e:stacktrace[:\u003ccount\u003e]\n\n echo \u0027schedule:stacktrace\u0027 \u003e /debug/tracing/set_ftrace_filter\n cat /debug/tracing/trace_pipe\n     kworker/2:0-4329  [002] ...2  2933.558007: \u003cstack trace\u003e\n \u003d\u003e kthread\n \u003d\u003e ret_from_fork\n          \u003cidle\u003e-0     [000] .N.2  2933.558019: \u003cstack trace\u003e\n \u003d\u003e rest_init\n \u003d\u003e start_kernel\n \u003d\u003e x86_64_start_reservations\n \u003d\u003e x86_64_start_kernel\n     kworker/2:0-4329  [002] ...2  2933.558109: \u003cstack trace\u003e\n \u003d\u003e kthread\n \u003d\u003e ret_from_fork\n[...]\n\nThis can be set to only trace a specific amount of times:\n\n echo \u0027schedule:stacktrace:3\u0027 \u003e /debug/tracing/set_ftrace_filter\n cat /debug/tracing/trace_pipe\n           \u003c...\u003e-58    [003] ...2   841.801694: \u003cstack trace\u003e\n \u003d\u003e kthread\n \u003d\u003e ret_from_fork\n          \u003cidle\u003e-0     [001] .N.2   841.801697: \u003cstack trace\u003e\n \u003d\u003e start_secondary\n           \u003c...\u003e-2059  [001] ...2   841.801736: \u003cstack trace\u003e\n \u003d\u003e wait_for_common\n \u003d\u003e wait_for_completion\n \u003d\u003e flush_work\n \u003d\u003e tty_flush_to_ldisc\n \u003d\u003e input_available_p\n \u003d\u003e n_tty_poll\n \u003d\u003e tty_poll\n \u003d\u003e do_select\n \u003d\u003e core_sys_select\n \u003d\u003e sys_select\n \u003d\u003e system_call_fastpath\n\nTo remove these:\n\n echo \u0027!schedule:stacktrace\u0027 \u003e /debug/tracing/set_ftrace_filter\n echo \u0027!schedule:stacktrace:0\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "c142be8ebe0b7bf73c8a0063925623f3e4b980c0",
      "tree": "b4f05278ba776036475efe7bba7273568fd6c1bf",
      "parents": [
        "3cd715de261182413b3487abfffe1b6af41b81b3"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 13 09:55:57 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:05 2013 -0400"
      },
      "message": "tracing: Add skip argument to trace_dump_stack()\n\nAltough the trace_dump_stack() already skips three functions in\nthe call to stack trace, which gets the stack trace to start\nat the caller of the function, the caller may want to skip some\nmore too (as it may have helper functions).\n\nAdd a skip argument to the trace_dump_stack() that lets the caller\nskip back tracing functions that it doesn\u0027t care about.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "3cd715de261182413b3487abfffe1b6af41b81b3",
      "tree": "14d9a48d2aa31eb1ad387477376e41f25031238f",
      "parents": [
        "417944c4c7a0f657158d0515f3b8e8c043fd788f"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 19:35:13 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:04 2013 -0400"
      },
      "message": "tracing: Add function probe triggers to enable/disable events\n\nAdd triggers to function tracer that lets an event get enabled or\ndisabled when a function is called:\n\nformat is:\n\n \u003cfunction\u003e:enable_event:\u003csystem\u003e:\u003cevent\u003e[:\u003ccount\u003e]\n \u003cfunction\u003e:disable_event:\u003csystem\u003e:\u003cevent\u003e[:\u003ccount\u003e]\n\n echo \u0027schedule:enable_event:sched:sched_switch\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nEvery time schedule is called, it will enable the sched_switch event.\n\n echo \u0027schedule:disable_event:sched:sched_switch:2\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nThe first two times schedule is called while the sched_switch\nevent is enabled, it will disable it. It will not count for a time\nthat the event is already disabled (or enabled for enable_event).\n\n[ fixed return without mutex_unlock() - thanks to Dan Carpenter and smatch ]\n\nCc: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "417944c4c7a0f657158d0515f3b8e8c043fd788f",
      "tree": "838e9bb09f8df63af3adf5b865d3781eeac8d6ba",
      "parents": [
        "7818b3886545f89549185e4023743e2df91d1fa1"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 13:26:18 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:03 2013 -0400"
      },
      "message": "tracing: Add a way to soft disable trace events\n\nIn order to let triggers enable or disable events, we need a \u0027soft\u0027\nmethod for doing so. For example, if a function probe is added that\nlets a user enable or disable events when a function is called, that\nchange must be done without taking locks or a mutex, and definitely\nit can\u0027t sleep. But the full enabling of a tracepoint is expensive.\n\nBy adding a \u0027SOFT_DISABLE\u0027 flag, and converting the flags to be updated\nwithout the protection of a mutex (using set/clear_bit()), this soft\ndisable flag can be used to allow critical sections to enable or disable\nevents from being traced (after the event has been placed into \"SOFT_MODE\").\n\nSome caveats though: The comm recorder (to map pids with a comm) can not\nbe soft disabled (yet). If you disable an event with with a \"soft\"\ndisable and wait a while before reading the trace, the comm cache may be\nreplaced and you\u0027ll get a bunch of \u003c...\u003e for comms in the trace.\n\nReading the \"enable\" file for an event that is disabled will now give\nyou \"0*\" where the \u0027*\u0027 denotes that the tracepoint is still active but\nthe event itself is \"disabled\".\n\n[ fixed _BIT used in \u0026 operation : thanks to Dan Carpenter and smatch ]\n\nCc: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nCc: Tom Zanussi \u003ctom.zanussi@linux.intel.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7818b3886545f89549185e4023743e2df91d1fa1",
      "tree": "1037f3bb76e18594a9267d27afc27bbdf02b8e65",
      "parents": [
        "e67efb93f0e9130174293ffaa5975f87b301b531"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 13 12:42:58 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:03 2013 -0400"
      },
      "message": "ftrace: Use manual free after synchronize_sched() not call_rcu_sched()\n\nThe entries to the probe hash must be freed after a synchronize_sched()\nafter the entry has been removed from the hash.\n\nAs the entries are registered with ops that may have their own callbacks,\nand these callbacks may sleep, we can not use call_rcu_sched() because\nthe rcu callbacks registered with that are called from a softirq context.\n\nInstead of using call_rcu_sched(), manually save the entries on a free_list\nand at the end of the loop that removes the entries, do a synchronize_sched()\nand then go through the free_list, freeing the entries.\n\nCc: Paul McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e67efb93f0e9130174293ffaa5975f87b301b531",
      "tree": "344cadb55d5d50e0ae0473a8404a6893d8a3183b",
      "parents": [
        "57d01ad09721fb7719c4c8c72b434398186f35a0"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 15:07:59 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:02 2013 -0400"
      },
      "message": "ftrace: Clean up function probe methods\n\nWhen a function probe is created, each function that the probe is\nattached to, a \"callback\" method is called. On release of the probe,\neach function entry calls the \"free\" method.\n\nFirst, \"callback\" is a confusing name and does not really match what\nit does. Callback sounds like it will be called when the probe\ntriggers. But that\u0027s not the case. This is really an \"init\" function,\nso lets rename it as such.\n\nSecondly, both \"init\" and \"free\" do not pass enough information back\nto the handlers. Pass back the ops, ip and data for each time the\nmethod is called. We have the information, might as well use it.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "77fd5c15e3216b901be69047ca43b05ae9099951",
      "tree": "1790b9bacd1d371cf03902efaf99cdc9d08abdec",
      "parents": [
        "3209cff4490bee55fd2bc1d087cb8ecf2a686a88"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 11:49:18 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:01 2013 -0400"
      },
      "message": "tracing: Add snapshot trigger to function probes\n\n echo \u0027schedule:snapshot:1\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nThis will cause the scheduler to trigger a snapshot the next time\nit\u0027s called (you can use any function that\u0027s not called by NMI).\n\nEven though it triggers only once, you still need to remove it with:\n\n echo \u0027!schedule:snapshot:0\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nThe :1 can be left off for the first command:\n\n echo \u0027schedule:snapshot\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nBut this will cause all calls to schedule to trigger a snapshot.\nThis must be removed without the \u0027:0\u0027\n\n echo \u0027!schedule:snapshot\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nAs adding a \"count\" is a different operation (internally).\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "3209cff4490bee55fd2bc1d087cb8ecf2a686a88",
      "tree": "0fd63cd5faa888c44b5d2a20ffd5048fcbd8dccf",
      "parents": [
        "e1df4cb682ab2c3c2981c8efa4aec044e61f4e06"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 11:17:54 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:00 2013 -0400"
      },
      "message": "tracing: Add alloc/free_snapshot() to replace duplicate code\n\nAdd alloc_snapshot() and free_snapshot() to allocate and free the\nsnapshot buffer respectively, and use these to remove duplicate\ncode.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e1df4cb682ab2c3c2981c8efa4aec044e61f4e06",
      "tree": "2ca14d5b02052f2fec06a567fdb048aa7943a4f4",
      "parents": [
        "8380d24860e9d1659ab22896b86d7fe591c424fa"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 10:09:42 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:36:00 2013 -0400"
      },
      "message": "ftrace: Fix function probe to only enable needed functions\n\nCurrently the function probe enables all functions and runs a \"hash\"\nagainst every function call to see if it should call a probe. This\nis extremely wasteful.\n\nNote, a probe is something like:\n\n  echo schedule:traceoff \u003e /debug/tracing/set_ftrace_filter\n\nWhen schedule is called, the probe will disable tracing. But currently,\nit has a call back for *all* functions, and checks to see if the\ncalled function is the probe that is needed.\n\nThe probe function has been created before ftrace was rewritten to\nallow for more than one \"op\" to be registered by the function tracer.\nWhen probes were created, it couldn\u0027t limit the functions without also\nlimiting normal function calls. But now we can, it\u0027s about time\nto update the probe code.\n\nTodo, have separate ops for different entries. That is, assign\na ftrace_ops per probe, instead of one op for all probes. But\nas there\u0027s not many probes assigned, this may not be that urgent.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8380d24860e9d1659ab22896b86d7fe591c424fa",
      "tree": "81b01cb06040edb01a577c91f01cc4a52ffa4e22",
      "parents": [
        "8b8fa62c60e03a53c46324075a8dc25821741daa"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Sat Mar 09 08:56:43 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:59 2013 -0400"
      },
      "message": "ftrace: Separate unlimited probes from count limited probes\n\nThe function tracing probes that trigger traceon or traceoff can be\nset to unlimited, or given a count of # of times to execute.\n\nBy separating these two types of probes, we can then use the dynamic\nftrace function filtering directly, and remove the brute force\n\"check if this function called is my probe\" routines in ftrace.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8b8fa62c60e03a53c46324075a8dc25821741daa",
      "tree": "0ae18b4534472fbf870461c050789f5ddabbf0d3",
      "parents": [
        "1c31714328be90764e46716f31fb0bd6da44c305"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 12 09:25:00 2013 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:58 2013 -0400"
      },
      "message": "tracing: Consolidate ftrace_trace_onoff_unreg() into callback\n\nThe only thing ftrace_trace_onoff_unreg() does is to do a strcmp()\nagainst the cmd parameter to determine what op to unregister. But\nthis compare is also done after the location that this function is\ncalled (and returns). By moving the check for \u0027!\u0027 to unregister after\nthe strcmp(), the callback function itself can just do the unregister\nand we can get rid of the helper function.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1c31714328be90764e46716f31fb0bd6da44c305",
      "tree": "749d35b272ef7bc5f7c1ee84070d23afe2b425a5",
      "parents": [
        "1b22e382ab40b0e3ee5abb3e310dffb16fee22aa"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Sat Mar 09 08:36:53 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:58 2013 -0400"
      },
      "message": "tracing: Consolidate updating of count for traceon/off\n\nRemove some duplicate code and replace it with a helper function.\nThis makes the code a it cleaner.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1b22e382ab40b0e3ee5abb3e310dffb16fee22aa",
      "tree": "2e6ca7c130fb6420ba955072275218c7ec287511",
      "parents": [
        "ca268da6e415448a43138e1abc5d5f057af319d7"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Sat Mar 09 00:56:08 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:57 2013 -0400"
      },
      "message": "tracing: Let tracing_snapshot() be used by modules but not NMI\n\nAdd EXPORT_SYMBOL_GPL() to let the tracing_snapshot() functions be\ncalled from modules.\n\nAlso add a test to see if the snapshot was called from NMI context\nand just warn in the tracing buffer if so, and return.\n\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": "153e8ed913b022d2003866a848af9fadc041403f",
      "tree": "f4e1281c8fa0e41fef569c903ed692b829647f96",
      "parents": [
        "55034cd6e648155393b0d665eef76b38d49ad6bf"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 08 10:40:07 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:54 2013 -0400"
      },
      "message": "tracing: Fix the branch tracer that broke with buffer change\n\nThe changce to add the trace_buffer struct to have the trace array\nhave both the main buffer and max buffer broke the branch tracer\nbecause the change did not update that code. As the branch tracer\nadds a significant amount of overhead, and must be selected via\na selection (not a allyesconfig) it was missed in testing.\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.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": "f4e781c0a89d5810729772290441ac7d61f321ec",
      "tree": "bdfdb25b9ebc63ed0f552bc579f04d217f011370",
      "parents": [
        "f5eb5588262cab7232ed1d77cf612b327db50767"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 07 11:10:56 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:53 2013 -0400"
      },
      "message": "tracing: Move the tracing selftest code into its own function\n\nMove the tracing startup selftest code into its own function and\nwhen not enabled, always have that function succeed.\n\nThis makes the register_tracer() function much more readable.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f5eb5588262cab7232ed1d77cf612b327db50767",
      "tree": "77ccc8e85f9be6af5cce5e689b6766a1fadf613b",
      "parents": [
        "ad909e21bbe69f1d39055d346540abd827190eca"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 07 09:27:42 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:52 2013 -0400"
      },
      "message": "ring-buffer: Do not use schedule_work_on() for current CPU\n\nThe ring buffer updates when done while the ring buffer is active,\nneeds to be completed on the CPU that is used for the ring buffer\nper_cpu buffer. To accomplish this, schedule_work_on() is used to\nschedule work on the given CPU.\n\nNow there\u0027s no reason to use schedule_work_on() if the process\ndoing the update happens to be on the CPU that it is processing.\nIt has already filled the requirement. Instead, just do the work\nand continue.\n\nThis is needed for tracing_snapshot_alloc() where it may be called\nreally early in boot, where the work queues have not been set up yet.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ad909e21bbe69f1d39055d346540abd827190eca",
      "tree": "0bb6dc03e46ab15d3fef884029bf1c4c8b3c172a",
      "parents": [
        "a695cb5816228f86576f5f5c6809fdf8ed382ece"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Wed Mar 06 21:45:37 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:51 2013 -0400"
      },
      "message": "tracing: Add internal tracing_snapshot() functions\n\nThe new snapshot feature is quite handy. It\u0027s a way for the user\nto take advantage of the spare buffer that, until then, only\nthe latency tracers used to \"snapshot\" the buffer when it hit\na max latency. Now users can trigger a \"snapshot\" manually when\nsome condition is hit in a program. But a snapshot currently can\nnot be triggered by a condition inside the kernel.\n\nWith the addition of tracing_snapshot() and tracing_snapshot_alloc(),\nsnapshots can now be taking when a condition is hit, and the\ndeveloper wants to snapshot the case without stopping the trace.\n\nNote, any snapshot will overwrite the old one, so take care\nin how this is done.\n\nThese new functions are to be used like tracing_on(), tracing_off()\nand trace_printk() are. That is, they should never be called\nin the mainline Linux kernel. They are solely for the purpose\nof debugging.\n\nThe tracing_snapshot() will not allocate a buffer, but it is\nsafe to be called from any context (except NMIs). But if a\nsnapshot buffer isn\u0027t allocated when it is called, it will write\nto the live buffer, complaining about the lack of a snapshot\nbuffer, and then stop tracing (giving you the \"permanent snapshot\").\n\ntracing_snapshot_alloc() will allocate the snapshot buffer if\nit was not already allocated and then take the snapshot. This routine\n*may sleep*, and must be called from context that can sleep.\nThe allocation is done with GFP_KERNEL and not atomic.\n\nIf you need a snapshot in an atomic context, say in early boot,\nthen it is best to call the tracing_snapshot_alloc() before then,\nwhere it will allocate the buffer, and then you can use the\ntracing_snapshot() anywhere you want and still get snapshots.\n\nCc: Hiraku Toyooka \u003chiraku.toyooka.gu@hitachi.com\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\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": "121aaee7b0a82605d33af200c7e9ebab6fd6e444",
      "tree": "aae2624780787bf1f2cf0c35a22b08fab0cf4f4a",
      "parents": [
        "ce9bae55972b228cf7bac34350c4d2caf8ea0d0b"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 05 21:52:25 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:50 2013 -0400"
      },
      "message": "tracing: Add per_cpu directory into tracing instances\n\nAdd the per_cpu directory to the created tracing instances:\n\n  cd /sys/kernel/debug/tracing/instances\n  mkdir foo\n  ls foo/per_cpu/cpu0\nbuffer_size_kb\tsnapshot_raw  trace\t  trace_pipe_raw\nsnapshot\tstats\t      trace_pipe\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ce9bae55972b228cf7bac34350c4d2caf8ea0d0b",
      "tree": "637ef0eb957989c40ae4749c090764cff640014d",
      "parents": [
        "737223fbca3b1c91feb947c7f571b35749b743b6"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 05 21:23:55 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:49 2013 -0400"
      },
      "message": "tracing: Add snapshot feature to instances\n\nAdd the \"snapshot\" file to the the multi-buffer instances.\n\n  cd /sys/kernel/debug/tracing/instances\n  mkdir foo\n  ls foo\nbuffer_size_kb  buffer_total_size_kb  events  free_buffer  set_event\nsnapshot  trace  trace_clock  trace_marker  trace_options  trace_pipe\ntracing_on\n  cat foo/snapshot\n # tracer: nop\n #\n #\n # * Snapshot is freed *\n #\n # Snapshot commands:\n # echo 0 \u003e snapshot : Clears and frees snapshot buffer\n # echo 1 \u003e snapshot : Allocates snapshot buffer, if not already allocated.\n #                      Takes a snapshot of the main buffer.\n # echo 2 \u003e snapshot : Clears snapshot buffer (but does not allocate)\n #                      (Doesn\u0027t have to be \u00272\u0027 works with any number that\n #                       is not a \u00270\u0027 or \u00271\u0027)\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "737223fbca3b1c91feb947c7f571b35749b743b6",
      "tree": "ff7a4e73785e909c5dd27584f6bfa5aab21a7153",
      "parents": [
        "45ad21ca5530efdca6a19e4a5ac5e7bd6e24f996"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 05 21:13:47 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:49 2013 -0400"
      },
      "message": "tracing: Consolidate buffer allocation code\n\nThere\u0027s a bit of duplicate code in creating the trace buffers for\nthe normal trace buffer and the max trace buffer among the instances\nand the main global_trace. This code can be consolidated and cleaned\nup a bit making the code cleaner and more readable as well as less\nduplication.\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": "6de58e6269cd0568ca5fbae14423914eff0f7811",
      "tree": "3ce4d96d1549925a2724ed713d76cf2f9683ff72",
      "parents": [
        "0b85ffc293044393623059eda9904a7d5b644e36"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 05 16:18:16 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:47 2013 -0400"
      },
      "message": "tracing: Add snapshot_raw to extract the raw data from snapshot\n\nAdd a \u0027snapshot_raw\u0027 per_cpu file that allows tools to read the raw\nbinary data of the snapshot buffer.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0b85ffc293044393623059eda9904a7d5b644e36",
      "tree": "e74d33f01afe541d82f02ba727c421ea71ed470a",
      "parents": [
        "f1affcaaa861f27752a769f889bf1486ebd301fe"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 05 14:50:23 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:47 2013 -0400"
      },
      "message": "tracing: Add config option to allow snapshot to swap per cpu\n\nWhen the preempt or irq latency tracers are enabled, they require\nthe ring buffer to be able to swap the per cpu sub buffers between\ntwo main buffers. This adds a slight overhead to tracing as the\ntrace recording needs to perform some checks to synchronize\nbetween recording and swaps that might be happening on other CPUs.\n\nThe config RING_BUFFER_ALLOW_SWAP is set when a user of the ring\nbuffer needs the \"swap cpu\" feature, otherwise the extra checks\nare not implemented and removed from the tracing overhead.\n\nThe snapshot feature will swap per CPU if the RING_BUFFER_ALLOW_SWAP\nconfig is set. But that only gets set by things like OPROFILE\nand the irqs and preempt latency tracers.\n\nThis config is added to let the user decide to include this feature\nwith the snapshot agnostic from whether or not another user of\nthe ring buffer sets this config.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f1affcaaa861f27752a769f889bf1486ebd301fe",
      "tree": "3ee782313a9c9d51be5d5e98ed9f93df8a08cfbc",
      "parents": [
        "12883efb670c28dff57dcd7f4f995a1ffe153b2d"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 05 14:35:11 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:35:46 2013 -0400"
      },
      "message": "tracing: Add snapshot in the per_cpu trace directories\n\nAdd the snapshot file into the per_cpu tracing directories to allow\nthem to be read for an individual cpu. This also allows to clear\nan individual cpu from the snapshot buffer.\n\nIf the kernel allows it (CONFIG_RING_BUFFER_ALLOW_SWAP is set), then\nechoing in \u00271\u0027 into one of the per_cpu snapshot files will do an\nindividual cpu buffer swap instead of the entire file.\n\nCc: Hiraku Toyooka \u003chiraku.toyooka.gu@hitachi.com\u003e\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": "22cffc2bb4a50d8c56f03c56f9f19dea85b78e30",
      "tree": "39f6127ad367843e1a9bc36d8f2efbe00b3072fe",
      "parents": [
        "873c642f5964b260480850040dec21e42d0ae4e4"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 05 07:30:24 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:57 2013 -0400"
      },
      "message": "tracing: Enable snapshot when any latency tracer is enabled\n\nThe snapshot utility is extremely useful, and does not add any more\noverhead in memory when another latency tracer is enabled. They use\nthe snapshot underneath. There\u0027s no reason to hide the snapshot file\nwhen a latency tracer has been enabled in the kernel.\n\nIf any of the latency tracers (irq, preempt or wakeup) is enabled\nthen also select the snapshot facility.\n\nNote, snapshot can be enabled without the latency tracers enabled.\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": "575380da8b46969a2c6a7e14a51056a63b30fe2e",
      "tree": "97eb88b78d064e2a3cfae555383f213083d29f45",
      "parents": [
        "2a30c11f6a037e2475f3c651bc57e697e79fa963"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Mon Mar 04 23:05:12 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:56 2013 -0400"
      },
      "message": "tracing: Only clear trace buffer on module unload if event was traced\n\nCurrently, when a module with events is unloaded, the trace buffer is\ncleared. This is just a safety net in case the module might have some\nstrange callback when its event is outputted. But there\u0027s no reason\nto reset the buffer if the module didn\u0027t have any of its events traced.\n\nAdd a flag to the event \"call\" structure called WAS_ENABLED and gets set\nwhen the event is ever enabled, and this flag never gets cleared. When a\nmodule gets unloaded, if any of its events have this flag set, then the\ntrace buffer will get cleared.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f1dc6725882b5ca54eb9a04436a3b47d58f2cbc7",
      "tree": "629ea73f0f6e3e44420c59aa42501f5668f4f085",
      "parents": [
        "523c81135bb23b2d9a8c21365d90d21b1309c138"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Mon Mar 04 17:33:05 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:55 2013 -0400"
      },
      "message": "ring-buffer: Init waitqueue for blocked readers\n\nThe move of blocked readers to the ring buffer left out the\ninit of the wait queue that is used. Tests missed this due to running\nstress tests against the buffers, which didn\u0027t allow for any\nreaders to end up waiting. Running a simple read and wait triggered\na bug.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "523c81135bb23b2d9a8c21365d90d21b1309c138",
      "tree": "bbecc47a046a3c2a6be1996d1bfdc3e902b96aa3",
      "parents": [
        "315326c16ad08771fe0f075a08a18c99976f29f5"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Mon Mar 04 14:15:59 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:54 2013 -0400"
      },
      "message": "tracing: Fix some section mismatch warnings\n\nAs we\u0027ve added __init annotation to field-defining functions, we should\nadd __refdata annotation to event_call variables, which reference those\nfunctions.\n\nLink: http://lkml.kernel.org/r/51343C1F.2050502@huawei.com\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "315326c16ad08771fe0f075a08a18c99976f29f5",
      "tree": "6ba1483c9f6bbbba061c5de87ddab2263d0b06a4",
      "parents": [
        "34ef61b1fa6172e994e441f1f0241dc53a75bd5f"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "srostedt@redhat.com",
        "time": "Sat Mar 02 17:37:14 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:53 2013 -0400"
      },
      "message": "tracing: Fix trace events build without modules\n\nThe new multi-buffers added a descriptor that kept track of module\nevents, and the directories they use, with struct ftace_module_file_ops.\nThis is used to add a ref count to keep modules from unloading while\ntheir files are being accessed.\n\nAs the descriptor is only needed when CONFIG_MODULES is enabled, it\nis only declared when the config is enabled. But that struct is\ndereferenced in a few areas outside the #ifdef CONFIG_MODULES.\n\nBy adding some helper routines and moving code around a little,\nevents can be compiled again without modules.\n\nReported-by: Fengguang Wu \u003cfengguang.wu@intel.com\u003e\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": "b8aae39fc54a2e297698288ac48237cc4c6f83bb",
      "tree": "4c27e192fd96f841cd02960c8d8e9219fbf2c9f2",
      "parents": [
        "7e4f44b153e1ec07bb64c1c1671cdf492465bbf3"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Thu Feb 21 10:33:58 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:52 2013 -0400"
      },
      "message": "tracing/syscalls: Annotate field-defining functions with __init\n\nThese two functions are called during kernel boot only.\n\nLink: http://lkml.kernel.org/r/51258796.7020704@huawei.com\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "7e4f44b153e1ec07bb64c1c1671cdf492465bbf3",
      "tree": "7477c5f2e6e904391204ac5899bb32f59fb083bc",
      "parents": [
        "f71130de5c7fba92faf3901784714e37a234c08f"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Thu Feb 21 10:33:33 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:51 2013 -0400"
      },
      "message": "tracing: Annotate event field-defining functions with __init\n\nThose functions are called either during kernel boot or module init.\n\nBefore:\n\n$ dmesg | grep \u0027Freeing unused kernel memory\u0027\nFreeing unused kernel memory: 1208k freed\nFreeing unused kernel memory: 1360k freed\nFreeing unused kernel memory: 1960k freed\n\nAfter:\n\n$ dmesg | grep \u0027Freeing unused kernel memory\u0027\nFreeing unused kernel memory: 1236k freed\nFreeing unused kernel memory: 1388k freed\nFreeing unused kernel memory: 1960k freed\n\nLink: http://lkml.kernel.org/r/5125877D.5000201@huawei.com\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f71130de5c7fba92faf3901784714e37a234c08f",
      "tree": "3632ac6de403c726b2ea8bb890f573c9fd6c54bc",
      "parents": [
        "15693458c4bc0693fd63a50d60f35b628fcf4e29"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizefan@huawei.com",
        "time": "Thu Feb 21 10:32:38 2013 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:51 2013 -0400"
      },
      "message": "tracing: Add a helper function for event print functions\n\nMove duplicate code in event print functions to a helper function.\n\nThis shrinks the size of the kernel by ~13K.\n\n   text    data     bss     dec     hex filename\n6596137 1743966 10138672        18478775        119f6b7 vmlinux.o.old\n6583002 1743849 10138672        18465523        119c2f3 vmlinux.o.new\n\nLink: http://lkml.kernel.org/r/51258746.2060304@huawei.com\n\nSigned-off-by: Li Zefan \u003clizefan@huawei.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "15693458c4bc0693fd63a50d60f35b628fcf4e29",
      "tree": "9ce7c378ec85134b84852b474e301e135187c0c0",
      "parents": [
        "b627344fef0c38fa4e3050348e168e46db87c905"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Feb 28 19:59:17 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:50 2013 -0400"
      },
      "message": "tracing/ring-buffer: Move poll wake ups into ring buffer code\n\nMove the logic to wake up on ring buffer data into the ring buffer\ncode itself. This simplifies the tracing code a lot and also has the\nadded benefit that waiters on one of the instance buffers can be woken\nonly when data is added to that instance instead of data added to\nany instance.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b627344fef0c38fa4e3050348e168e46db87c905",
      "tree": "d828a640959fcb39667cbc56cd7cf8e75f34636f",
      "parents": [
        "cc60cdc952be09bca5b0bff9fefc7aa6185c3049"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Feb 28 13:44:11 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:49 2013 -0400"
      },
      "message": "tracing: Fix read blocking on trace_pipe_raw\n\nIf the ring buffer is empty, a read to trace_pipe_raw wont block.\nThe tracing code has the infrastructure to wake up waiting readers,\nbut the trace_pipe_raw doesn\u0027t take advantage of that.\n\nWhen a read is done to trace_pipe_raw without the O_NONBLOCK flag\nset, have the read block until there\u0027s data in the requested buffer.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "cc60cdc952be09bca5b0bff9fefc7aa6185c3049",
      "tree": "d16c601f5848b556b3f02487a74af0835ede82fa",
      "parents": [
        "189e5784f6c5e001a84127b83f03bc76a8bfb1ec"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Feb 28 09:17:16 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:49 2013 -0400"
      },
      "message": "tracing: Fix polling on trace_pipe_raw\n\nThe trace_pipe_raw never implemented polling and this was casing\nissues for several utilities. This is now implemented.\n\nBlocked reads still are on the TODO list.\n\nReported-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nTested-by: Mauro Carvalho Chehab \u003cmchehab@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "189e5784f6c5e001a84127b83f03bc76a8bfb1ec",
      "tree": "56aa2f0cc1d00fbc74f70b84b1c5f2eabe53cb19",
      "parents": [
        "92edca073c374f66b8eee20ec6426fb0cdb6c4d5"
      ],
      "author": {
        "name": "Steven Rostedt (Red Hat)",
        "email": "rostedt@goodmis.org",
        "time": "Thu Feb 28 20:03:06 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:48 2013 -0400"
      },
      "message": "tracing: Do not block on splice if either file or splice NONBLOCK flag is set\n\nCurrently only the splice NONBLOCK flag is checked to determine if\nthe splice read should block or not. But the file descriptor NONBLOCK\nflag also needs to be checked.\n\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": "d1a291437f75f6c841819b7855d95a21958cc822",
      "tree": "73566370a7150d05f14d2f5ebb705064d4d2a0f9",
      "parents": [
        "772482216f170ddc62fa92a3cc3271cdd1993525"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Feb 27 20:23:57 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:46 2013 -0400"
      },
      "message": "tracing: Use kmem_cache_alloc instead of kmalloc in trace_events.c\n\nThe event structures used by the trace events are mostly persistent,\nbut they are also allocated by kmalloc, which is not the best at\nallocating space for what is used. By converting these kmallocs\ninto kmem_cache_allocs, we can save over 50K of space that is\npermanently allocated.\n\nAfter boot we have:\n\n slab name          active allocated size\n ---------          ------ --------- ----\nftrace_event_file    979   1005     56   67    1\nftrace_event_field   2301   2310     48   77    1\n\nThe ftrace_event_file has at boot up 979 active objects out of\n1005 allocated in the slabs. Each object is 56 bytes. In a normal\nkmalloc, that would allocate 64 bytes for each object.\n\n 1005 - 979  \u003d 26 objects not used\n 26 * 56 \u003d 1456 bytes wasted\n\nBut if we used kmalloc:\n\n 64 - 56 \u003d 8 bytes unused per allocation\n 8 * 979 \u003d 7832 bytes wasted\n\n 7832 - 1456 \u003d 6376 bytes in savings\n\nDoing the same for ftrace_event_field where there\u0027s 2301 objects\nallocated in a slab that can hold 2310 with 48 bytes each we have:\n\n 2310 - 2301 \u003d 9 objects not used\n 9 * 48 \u003d 432 bytes wasted\n\nA kmalloc would also use 64 bytes per object:\n\n 64 - 48 \u003d 16 bytes unused per allocation\n 16 * 2301 \u003d 36816 bytes wasted!\n\n 36816 - 432 \u003d 36384 bytes in savings\n\nThis change gives us a total of 42760 bytes in savings. At least\non my machine, but as there\u0027s a lot of these persistent objects\nfor all configurations that use trace points, this is a net win.\n\nThanks to Ezequiel Garcia for his trace_analyze presentation which\npointed out the wasted space in my code.\n\nCc: Ezequiel Garcia \u003celezegarcia@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "772482216f170ddc62fa92a3cc3271cdd1993525",
      "tree": "77b874b932c082e4de2abc73a68ba813455affbd",
      "parents": [
        "0c8916c34203734d3b05953ebace52d7c2969f16"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Feb 27 16:28:06 2013 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:46 2013 -0400"
      },
      "message": "tracing: Get trace_events kernel command line working again\n\nWith the new descriptors used to allow multiple buffers in the\ntracing directory added, the kernel command line parameter\ntrace_events\u003d... no longer works. This is because the top level\n(global) trace array now has a list of descriptors associated\nwith the events and the files in the debugfs directory. But in\nearly bootup, when the command line is processed and the events\nenabled, the trace array list of events has not been set up yet.\n\nWithout the list of events in the trace array, the setting of\nevents to record will fail because it would not match any events.\n\nThe solution is to set up the top level array in two stages.\nThe first is to just add the ftrace file descriptors that just point\nto the events. This will allow events to be enabled and start tracing.\nThe second stage is called after the filesystem is set up, and this\nstage will create the debugfs event files and directories associated\nwith the trace array events.\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": "ccb469a198cffac94a7eea0b69f715f06e2ddf15",
      "tree": "a4de18987f64f115373a22379eef17d6d30ce9b8",
      "parents": [
        "2b6080f28c7cc3efc8625ab71495aae89aeb63a0"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Aug 02 10:32:10 2012 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 15 00:34:42 2013 -0400"
      },
      "message": "tracing: Pass the ftrace_file to the buffer lock reserve code\n\nPass the struct ftrace_event_file *ftrace_file to the\ntrace_event_buffer_lock_reserve() (new function that replaces the\ntrace_current_buffer_lock_reserver()).\n\nThe ftrace_file holds a pointer to the trace_array that is in use.\nIn the case of multiple buffers with different trace_arrays, this\nallows different events to be recorded into different buffers.\n\nAlso fixed some of the stale comments in include/trace/ftrace.h\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"
    }
  ],
  "next": "ae3b5093ad6004b52e2825f3db1ad8200a2724d8"
}
