)]}'
{
  "log": [
    {
      "commit": "96200591a34f8ecb98481c626125df43a2463b55",
      "tree": "314c376b01f254d04f9aaf449b1f9147ad177fa6",
      "parents": [
        "7031281e02bf951a2259849217193fb9d75a9762",
        "68efa37df779b3e04280598e8b5b3a1919b65fee"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Nov 21 14:07:23 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Nov 21 14:07:23 2009 +0100"
      },
      "message": "Merge branch \u0027tracing/hw-breakpoints\u0027 into perf/core\n\nConflicts:\n\tarch/x86/kernel/kprobes.c\n\tkernel/trace/Makefile\n\nMerge reason: hw-breakpoints perf integration is looking\n              good in testing and in reviews, plus conflicts\n              are mounting up - so merge \u0026 resolve.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "77b44d1b7c28360910cdbd427fb62d485c08674c",
      "tree": "00db4f966b488abb88e5f3884ab2635e06f3f1d6",
      "parents": [
        "91365bbe4f8c39a821f390f785d606304d6dee3c"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "mhiramat@redhat.com",
        "time": "Tue Nov 03 19:12:47 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 04 13:02:48 2009 +0100"
      },
      "message": "tracing/kprobes: Rename Kprobe-tracer to kprobe-event\n\nRename Kprobes-based event tracer to kprobes-based tracing event\n(kprobe-event), since it is not a tracer but an extensible\ntracing event interface.\n\nThis also changes CONFIG_KPROBE_TRACER to CONFIG_KPROBE_EVENT\nand sets it y by default.\n\nSigned-off-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Jim Keniston \u003cjkenisto@us.ibm.com\u003e\nCc: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Frank Ch. Eigler \u003cfche@redhat.com\u003e\nCc: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: K.Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nLKML-Reference: \u003c20091104001247.3454.14131.stgit@harusame\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0f8f86c7bdd1c954fbe153af437a0d91a6c5721a",
      "tree": "94a8d419a470a4f9852ca397bb9bbe48db92ff5c",
      "parents": [
        "dca2d6ac09d9ef59ff46820d4f0c94b08a671202",
        "f39cdf25bf77219676ec5360980ac40b1a7e144a"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Oct 18 01:09:09 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Oct 18 01:12:33 2009 +0200"
      },
      "message": "Merge commit \u0027perf/core\u0027 into perf/hw-breakpoint\n\nConflicts:\n\tkernel/Makefile\n\tkernel/trace/Makefile\n\tkernel/trace/trace.h\n\tsamples/Makefile\n\nMerge reason: We need to be uptodate with the perf events development\nbranch because we plan to rewrite the breakpoints API on top of\nperf events.\n"
    },
    {
      "commit": "d7a4b414eed51f1653bb05ebe84122bf9a7ae18b",
      "tree": "bd6603a0c27de4c138a1767871897e9cd3e1a1d2",
      "parents": [
        "1f0ab40976460bc4673fa204ce917a725185d8f2",
        "a724eada8c2a7b62463b73ccf73fd0bb6e928aeb"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 23 23:08:43 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 23 23:08:43 2009 +0200"
      },
      "message": "Merge commit \u0027linus/master\u0027 into tracing/kprobes\n\nConflicts:\n\tkernel/trace/Makefile\n\tkernel/trace/trace.h\n\tkernel/trace/trace_event_types.h\n\tkernel/trace/trace_export.c\n\nMerge reason:\n\tSync with latest significant tracing core changes.\n"
    },
    {
      "commit": "6161352142d5fed4cd753b32e5ccde66e705b14e",
      "tree": "d64d0e3e6c44440181ddb5d1bc6884067fee0749",
      "parents": [
        "fd39e055c4fefa4553efc9030f9903afdc6ee323"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Thu Sep 17 16:11:28 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Sep 19 11:42:12 2009 +0200"
      },
      "message": "tracing, perf: Convert the power tracer into an event tracer\n\nThis patch converts the existing power tracer into an event tracer,\nso that power events (C states and frequency changes) can be\ntracked via \"perf\".\n\nThis also removes the perl script that was used to demo the tracer;\nits functionality is being replaced entirely with timechart.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c20090912130542.6d314860@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "413d37d1eb69c1765b9ace0a612dac9b6c990e66",
      "tree": "6f483714046c388ab9f57b33f17f365cd4e57446",
      "parents": [
        "d93f12f3f417e49a175800da85c6fcb2a5096e03"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "mhiramat@redhat.com",
        "time": "Thu Aug 13 16:35:11 2009 -0400"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Aug 27 02:31:54 2009 +0200"
      },
      "message": "tracing: Add kprobe-based event tracer\n\nAdd kprobes-based event tracer on ftrace.\n\nThis tracer is similar to the events tracer which is based on Tracepoint\ninfrastructure. Instead of Tracepoint, this tracer is based on kprobes\n(kprobe and kretprobe). It probes anywhere where kprobes can probe(this\n means, all functions body except for __kprobes functions).\n\nSimilar to the events tracer, this tracer doesn\u0027t need to be activated\nvia current_tracer, instead of that, just set probe points via\n/sys/kernel/debug/tracing/kprobe_events. And you can set filters on each\nprobe events via /sys/kernel/debug/tracing/events/kprobes/\u003cEVENT\u003e/filter.\n\nThis tracer supports following probe arguments for each probe.\n\n  %REG  : Fetch register REG\n  sN    : Fetch Nth entry of stack (N \u003e\u003d 0)\n  sa    : Fetch stack address.\n  @ADDR : Fetch memory at ADDR (ADDR should be in kernel)\n  @SYM[+|-offs] : Fetch memory at SYM +|- offs (SYM should be a data symbol)\n  aN    : Fetch function argument. (N \u003e\u003d 0)\n  rv    : Fetch return value.\n  ra    : Fetch return address.\n  +|-offs(FETCHARG) : fetch memory at FETCHARG +|- offs address.\n\nSee Documentation/trace/kprobetrace.txt in the next patch for details.\n\nChanges from v13:\n - Support \u0027sa\u0027 for stack address.\n - Use call-\u003edata instead of container_of() macro.\n\n[fweisbec@gmail.com: Fixed conflict against latest tracing/core]\n\nSigned-off-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: Ananth N Mavinakayanahalli \u003cananth@in.ibm.com\u003e\nCc: Avi Kivity \u003cavi@redhat.com\u003e\nCc: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\nCc: Frank Ch. Eigler \u003cfche@redhat.com\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Jim Keniston \u003cjkenisto@us.ibm.com\u003e\nCc: K.Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Przemysław Pawełczyk \u003cprzemyslaw@pawelczyk.it\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Sam Ravnborg \u003csam@ravnborg.org\u003e\nCc: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nLKML-Reference: \u003c20090813203510.31965.29123.stgit@localhost.localdomain\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "eadb8a091b27a840de7450f84ecff5ef13476424",
      "tree": "58c3782d40def63baa8167f3d31e3048cb4c7660",
      "parents": [
        "73874005cd8800440be4299bd095387fff4b90ac",
        "65795efbd380a832ae508b04dba8f8e53f0b84d9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 17 12:52:15 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jun 17 12:56:49 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into tracing/hw-breakpoints\n\nConflicts:\n\tarch/x86/Kconfig\n\tarch/x86/kernel/traps.c\n\tarch/x86/power/cpu.c\n\tarch/x86/power/cpu_32.c\n\tkernel/Makefile\n\nSemantic conflict:\n\tarch/x86/kernel/hw_breakpoint.c\n\nMerge reason: Resolve the conflicts, move from put_cpu_no_sched() to\n              put_cpu() in arch/x86/kernel/hw_breakpoint.c.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "55782138e47d9baf2f7d3a7af9e7cf42adf72c56",
      "tree": "c7ccabae20e27bbeb08b69a358e8b86c98d1d9f3",
      "parents": [
        "f57a8a1911342265e7acdc190333c4e9235a6632"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Tue Jun 09 13:43:05 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Jun 09 12:34:23 2009 -0400"
      },
      "message": "tracing/events: convert block trace points to TRACE_EVENT()\n\nTRACE_EVENT is a more generic way to define tracepoints. Doing so adds\nthese new capabilities to this tracepoint:\n\n  - zero-copy and per-cpu splice() tracing\n  - binary tracing without printf overhead\n  - structured logging records exposed under /debug/tracing/events\n  - trace events embedded in function tracer output and other plugins\n  - user-defined, per tracepoint filter expressions\n  ...\n\nCons:\n\n  - no dev_t info for the output of plug, unplug_timer and unplug_io events.\n    no dev_t info for getrq and sleeprq events if bio \u003d\u003d NULL.\n    no dev_t info for rq_abort,...,rq_requeue events if rq-\u003erq_disk \u003d\u003d NULL.\n\n    This is mainly because we can\u0027t get the deivce from a request queue.\n    But this may change in the future.\n\n  - A packet command is converted to a string in TP_assign, not TP_print.\n    While blktrace do the convertion just before output.\n\n    Since pc requests should be rather rare, this is not a big issue.\n\n  - In blktrace, an event can have 2 different print formats, but a TRACE_EVENT\n    has a unique format, which means we have some unused data in a trace entry.\n\n    The overhead is minimized by using __dynamic_array() instead of __array().\n\nI\u0027ve benchmarked the ioctl blktrace vs the splice based TRACE_EVENT tracing:\n\n      dd                   dd + ioctl blktrace       dd + TRACE_EVENT (splice)\n1     7.36s, 42.7 MB/s     7.50s, 42.0 MB/s          7.41s, 42.5 MB/s\n2     7.43s, 42.3 MB/s     7.48s, 42.1 MB/s          7.43s, 42.4 MB/s\n3     7.38s, 42.6 MB/s     7.45s, 42.2 MB/s          7.41s, 42.5 MB/s\n\nSo the overhead of tracing is very small, and no regression when using\nthose trace events vs blktrace.\n\nAnd the binary output of TRACE_EVENT is much smaller than blktrace:\n\n # ls -l -h\n -rw-r--r-- 1 root root 8.8M 06-09 13:24 sda.blktrace.0\n -rw-r--r-- 1 root root 195K 06-09 13:24 sda.blktrace.1\n -rw-r--r-- 1 root root 2.7M 06-09 13:25 trace_splice.out\n\nFollowing are some comparisons between TRACE_EVENT and blktrace:\n\nplug:\n  kjournald-480   [000]   303.084981: block_plug: [kjournald]\n  kjournald-480   [000]   303.084981:   8,0    P   N [kjournald]\n\nunplug_io:\n  kblockd/0-118   [000]   300.052973: block_unplug_io: [kblockd/0] 1\n  kblockd/0-118   [000]   300.052974:   8,0    U   N [kblockd/0] 1\n\nremap:\n  kjournald-480   [000]   303.085042: block_remap: 8,0 W 102736992 + 8 \u003c- (8,8) 33384\n  kjournald-480   [000]   303.085043:   8,0    A   W 102736992 + 8 \u003c- (8,8) 33384\n\nbio_backmerge:\n  kjournald-480   [000]   303.085086: block_bio_backmerge: 8,0 W 102737032 + 8 [kjournald]\n  kjournald-480   [000]   303.085086:   8,0    M   W 102737032 + 8 [kjournald]\n\ngetrq:\n  kjournald-480   [000]   303.084974: block_getrq: 8,0 W 102736984 + 8 [kjournald]\n  kjournald-480   [000]   303.084975:   8,0    G   W 102736984 + 8 [kjournald]\n\n  bash-2066  [001]  1072.953770:   8,0    G   N [bash]\n  bash-2066  [001]  1072.953773: block_getrq: 0,0 N 0 + 0 [bash]\n\nrq_complete:\n  konsole-2065  [001]   300.053184: block_rq_complete: 8,0 W () 103669040 + 16 [0]\n  konsole-2065  [001]   300.053191:   8,0    C   W 103669040 + 16 [0]\n\n  ksoftirqd/1-7   [001]  1072.953811:   8,0    C   N (5a 00 08 00 00 00 00 00 24 00) [0]\n  ksoftirqd/1-7   [001]  1072.953813: block_rq_complete: 0,0 N (5a 00 08 00 00 00 00 00 24 00) 0 + 0 [0]\n\nrq_insert:\n  kjournald-480   [000]   303.084985: block_rq_insert: 8,0 W 0 () 102736984 + 8 [kjournald]\n  kjournald-480   [000]   303.084986:   8,0    I   W 102736984 + 8 [kjournald]\n\nChangelog from v2 -\u003e v3:\n\n- use the newly introduced __dynamic_array().\n\nChangelog from v1 -\u003e v2:\n\n- use __string() instead of __array() to minimize the memory required\n  to store hex dump of rq-\u003ecmd().\n\n- support large pc requests.\n\n- add missing blk_fill_rwbs_rq() in block_rq_requeue TRACE_EVENT.\n\n- some cleanups.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4A2DF669.5070905@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0722db015c246204044299eae3b02d18d3ca4faf",
      "tree": "cc9a6b21961d62e1788ee2b9cbd0ae23b43f11a0",
      "parents": [
        "432039933a16b8227b7b267f46ac1c1b9b3adf14"
      ],
      "author": {
        "name": "K.Prasad",
        "email": "prasad@linux.vnet.ibm.com",
        "time": "Mon Jun 01 23:46:40 2009 +0530"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Jun 02 22:47:00 2009 +0200"
      },
      "message": "hw-breakpoints: ftrace plugin for kernel symbol tracing using HW Breakpoint interfaces\n\nThis patch adds an ftrace plugin to detect and profile memory access over kernel\nvariables. It uses HW Breakpoint interfaces to \u0027watch memory addresses.\n\nSigned-off-by: K.Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "0ad5d703c6c0fcd385d956555460df95dff7eb7e",
      "tree": "4b777100f9be4fe90ca4bd043b9f98df672b5b3b",
      "parents": [
        "44347d947f628060b92449702071bfe1d31dfb75",
        "1cb81b143fa8f0e4629f10690862e2e52ca792ff"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 11:18:34 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 13:36:22 2009 +0200"
      },
      "message": "Merge branch \u0027tracing/hw-branch-tracing\u0027 into tracing/core\n\nMerge reason: this topic is ready for upstream now. It passed\n              Oleg\u0027s review and Andrew had no further mm/*\n              objections/observations either.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5092dbc96f3acdac5433b27c06860352dc6d23b9",
      "tree": "641b6b25439bf879769e20b4dc0f0bc9a6e6d702",
      "parents": [
        "aa20ae8444fc6c318272c643f856d8d8ad3e198d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue May 05 22:47:18 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 06 00:08:50 2009 -0400"
      },
      "message": "ring-buffer: add benchmark and tester\n\nThis patch adds code that can benchmark the ring buffer as well as\ntest it. This code can be compiled into the kernel (not recommended)\nor as a module.\n\nA separate ring buffer is used to not interfer with other users, like\nftrace. It creates a producer and a consumer (option to disable creation\nof the consumer) and will run for 10 seconds, then sleep for 10 seconds\nand then repeat.\n\nWhile running, the producer will write 10 byte loads into the ring\nbuffer with just putting in the current CPU number. The reader will\ncontinually try to read the buffer. The reader will alternate from reading\nthe buffer via event by event, or by full pages.\n\nThe output is a pr_info, thus it will fill up the syslogs.\n\n  Starting ring buffer hammer\n  End ring buffer hammer\n  Time:     9000349 (usecs)\n  Overruns: 12578640\n  Read:     5358440  (by events)\n  Entries:  0\n  Total:    17937080\n  Missed:   0\n  Hit:      17937080\n  Entries per millisec: 1993\n  501 ns per entry\n  Sleeping for 10 secs\n  Starting ring buffer hammer\n  End ring buffer hammer\n  Time:     9936350 (usecs)\n  Overruns: 0\n  Read:     28146644  (by pages)\n  Entries:  74\n  Total:    28146718\n  Missed:   0\n  Hit:      28146718\n  Entries per millisec: 2832\n  353 ns per entry\n  Sleeping for 10 secs\n\nTime:      is the time the test ran\nOverruns:  the number of events that were overwritten and not read\nRead:      the number of events read (either by pages or events)\nEntries:   the number of entries left in the buffer\n                 (the by pages will only read full pages)\nTotal:     Entries + Read + Overruns\nMissed:    the number of entries that failed to write\nHit:       the number of entries that were written\n\nThe above example shows that it takes ~353 nanosecs per entry when\nthere is a reader, reading by pages (and no overruns)\n\nThe event by event reader slowed the producer down to 501 nanosecs.\n\n[ Impact: see how changes to the ring buffer affect stability and performance ]\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f42c85e74faa422cf0bc747ed808681145448f88",
      "tree": "3775dc0a402f7da5247aa8ceb92ae89590038199",
      "parents": [
        "97f2025153499faa17267a0d4e18c7afaf73f39d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Apr 13 12:25:37 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 14 12:57:59 2009 -0400"
      },
      "message": "tracing/events: move the ftrace event tracing code to core\n\nThis patch moves the ftrace creation into include/trace/ftrace.h and\nsimplifies the work of developers in adding new tracepoints.\nJust the act of creating the trace points in include/trace and including\ndefine_trace.h will create the events in the debugfs/tracing/events\ndirectory.\n\nThis patch removes the need of include/trace/trace_events.h\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "56449f437add737a1e5e1cb7e00f63ac8ead1938",
      "tree": "d7c8f0f783534d3cfe550606b871d9bbeaa6e3f3",
      "parents": [
        "a34b50ddc265bae058c66661b096ef6384c5a8b1"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 14 11:24:36 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 14 18:35:13 2009 +0200"
      },
      "message": "tracing: make the trace clocks available generally\n\nJeremy Fitzhardinge reported this build failure:\n\n LD\t .tmp_vmlinux1\n arch/x86/kernel/built-in.o: In function `ds_take_timestamp\u0027:\n git/linux/arch/x86/kernel/ds.c:1380: undefined reference to `trace_clock_global\u0027\n git/linux/arch/x86/kernel/ds.c:1380: undefined reference to `trace_clock_global\u0027\n\nWhich is due to !CONFIG_TRACING \u0026\u0026 CONFIG_X86_DS\u003dy.\n\nExpose the trace clock code to CONFIG_X86_DS as well.\n\n[ Unfortunately librarizing doesnt work well - ancient architectures\n  with no raw_local_irq_save() primitive break the build. ]\n\nReported-by: Jeremy Fitzhardinge \u003cjeremy@goop.org\u003e\nLKML-Reference: \u003c49E4413F.7070700@goop.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5f77a88b3f8268b11940b51d2e03d26a663ceb90",
      "tree": "b9540f9391b6f03860666193787619b5bdff1375",
      "parents": [
        "77d9f465d46fd67cdb82ee5e1ab99dd57a17c486"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Wed Apr 08 03:14:01 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 14 00:00:55 2009 +0200"
      },
      "message": "tracing/infrastructure: separate event tracer from event support\n\nAdd a new config option, CONFIG_EVENT_TRACING that gets selected\nwhen CONFIG_TRACING is selected and adds everything needed by the stuff\nin trace_export - basically all the event tracing support needed by e.g.\nbprint, minus the actual events, which are only included if\nCONFIG_EVENT_TRACER is selected.\n\nSo CONFIG_EVENT_TRACER can be used to turn on or off the generated events\n(what I think of as the \u0027event tracer\u0027), while CONFIG_EVENT_TRACING turns\non or off the base event tracing support used by both the event tracer and\nthe other things such as bprint that can\u0027t be configured out.\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: fweisbec@gmail.com\nLKML-Reference: \u003c1239178441.10295.34.camel@tropicana\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7ce7e4249921d5073e764f7ff7ad83cfa9894bd7",
      "tree": "d8a3026e85d3230ce39ca99f446abe76a710c337",
      "parents": [
        "2d622719f1572ef31e0616444a515eba3094d050"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Sun Mar 22 03:31:04 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Mar 22 18:38:46 2009 +0100"
      },
      "message": "tracing: add per-event filtering\n\nThis patch adds per-event filtering to the event tracing subsystem.\n\nIt adds a \u0027filter\u0027 debugfs file to each event directory.  This file can\nbe written to to set filters; reading from it will display the current\nset of filters set for that event.\n\nBasically, any field listed in the \u0027format\u0027 file for an event can be\nfiltered on (including strings, but not yet other array types) using\neither matching (\u0027\u003d\u003d\u0027) or non-matching (\u0027!\u003d\u0027) \u0027predicates\u0027.  A\n\u0027predicate\u0027 can be either a single expression:\n\n # echo pid !\u003d 0 \u003e filter\n\n # cat filter\n pid !\u003d 0\n\nor a compound expression of up to 8 sub-expressions combined using \u0027\u0026\u0026\u0027\nor \u0027||\u0027:\n\n # echo comm \u003d\u003d Xorg \u003e filter\n # echo \"\u0026\u0026 sig !\u003d 29\" \u003e filter\n\n # cat filter\n comm \u003d\u003d Xorg\n \u0026\u0026 sig !\u003d 29\n\nOnly events having field values matching an expression will be available\nin the trace output; non-matching events are discarded.\n\nNote that a compound expression is built up by echoing each\nsub-expression separately - it\u0027s not the most efficient way to do\nthings, but it keeps the parser simple and assumes that compound\nexpressions will be relatively uncommon.  In any case, a subsequent\npatch introducing a way to set filters for entire subsystems should\nmitigate any need to do this for lots of events.\n\nSetting a filter without an \u0027\u0026\u0026\u0027 or \u0027||\u0027 clears the previous filter\ncompletely and sets the filter to the new expression:\n\n # cat filter\n comm \u003d\u003d Xorg\n \u0026\u0026 sig !\u003d 29\n\n # echo comm !\u003d Xorg\n\n # cat filter\n comm !\u003d Xorg\n\nTo clear a filter, echo 0 to the filter file:\n\n # echo 0 \u003e filter\n # cat filter\n none\n\nThe limit of 8 predicates for a compound expression is arbitrary - for\nefficiency, it\u0027s implemented as an array of pointers to predicates, and\n8 seemed more than enough for any filter...\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c1237710665.7703.48.camel@charm-linux\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ac199db0189c091f2863312061c0575937f68810",
      "tree": "0068aaa77ca00102ca60754eb32329f06821bba0",
      "parents": [
        "28bea271e58e429eccfad3d7ee2ad12d6ee015bf"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Mar 19 20:26:15 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 20 10:17:07 2009 +0100"
      },
      "message": "ftrace: event profile hooks\n\nImpact: new tracing infrastructure feature\n\nProvide infrastructure to generate software perf counter events\nfrom tracepoints.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c20090319194233.557364871@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ee08c6eccb7d1295516f7cf420fddf7b14e9146f",
      "tree": "ec6d209e47bb1a8910d16c1c8b4ea65959850689",
      "parents": [
        "4c6ed8f496fe89ff81b3d6e617a531bedfb613e4"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Mar 07 05:52:59 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 06:25:43 2009 +0100"
      },
      "message": "tracing/ftrace: syscall tracing infrastructure, basics\n\nProvide basic callbacks to do syscall tracing.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nLKML-Reference: \u003c1236401580-5758-2-git-send-email-fweisbec@gmail.com\u003e\n[ simplified it to a trace_printk() for now. ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "769b0441f438c4bb4872cb8560eb6fe51bcc09ee",
      "tree": "9908682dfd89e97c3097a7c3adcae35d821e1895",
      "parents": [
        "1ba28e02a18cbdbea123836f6c98efb09cbf59ec"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Mar 06 17:21:49 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 06 17:59:12 2009 +0100"
      },
      "message": "tracing/core: drop the old trace_printk() implementation in favour of trace_bprintk()\n\nImpact: faster and lighter tracing\n\nNow that we have trace_bprintk() which is faster and consume lesser\nmemory than trace_printk() and has the same purpose, we can now drop\nthe old implementation in favour of the binary one from trace_bprintk(),\nwhich means we move all the implementation of trace_bprintk() to\ntrace_printk(), so the Api doesn\u0027t change except that we must now use\ntrace_seq_bprintk() to print the TRACE_PRINT entries.\n\nSome changes result of this:\n\n- Previously, trace_bprintk depended of a single tracer and couldn\u0027t\n  work without. This tracer has been dropped and the whole implementation\n  of trace_printk() (like the module formats management) is now integrated\n  in the tracing core (comes with CONFIG_TRACING), though we keep the file\n  trace_printk (previously trace_bprintk.c) where we can find the module\n  management. Thus we don\u0027t overflow trace.c\n\n- changes some parts to use trace_seq_bprintk() to print TRACE_PRINT entries.\n\n- change a bit trace_printk/trace_vprintk macros to support non-builtin formats\n  constants, and fix \u0027const\u0027 qualifiers warnings. But this is all transparent for\n  developers.\n\n- etc...\n\nV2:\n\n- Rebase against last changes\n- Fix mispell on the changelog\n\nV3:\n\n- Rebase against last changes (moving trace_printk() to kernel.h)\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c1236356510-8381-5-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1427cdf0592368bdec57276edaf714040ee8744f",
      "tree": "4b214ee49643db383328cf53a31959eb0627a167",
      "parents": [
        "546e5354a6e4ec760ac03ef1148e9a4762abb5f5"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Fri Mar 06 17:21:47 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 06 17:59:11 2009 +0100"
      },
      "message": "tracing: infrastructure for supporting binary record\n\nImpact: save on memory for tracing\n\nCurrent tracers are typically using a struct(like struct ftrace_entry,\nstruct ctx_switch_entry, struct special_entr etc...)to record a binary\nevent. These structs can only record a their own kind of events.\nA new kind of tracer need a new struct and a lot of code too handle it.\n\nSo we need a generic binary record for events. This infrastructure\nis for this purpose.\n\n[fweisbec@gmail.com: rebase against latest -tip, make it safe while sched\ntracing as reported by Steven Rostedt]\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c1236356510-8381-3-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "770cb24345c0f6e0d47bd2b94aa6d67bea6f8b54",
      "tree": "ec76651c686c02249c1455446801cf2b9d823879",
      "parents": [
        "33b0c229e3abeae00493ed1d6f0b07191977a0a2"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 05 21:35:29 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 05 21:46:44 2009 -0500"
      },
      "message": "tracing: add format files for ftrace default entries\n\nImpact: allow user apps to read binary format of basic ftrace entries\n\nCurrently, only defined raw events export their formats so a binary\nreader can parse them. There\u0027s no reason that the default ftrace entries\ncan\u0027t export their formats.\n\nThis patch adds a subsystem called \"ftrace\" in the events directory\nthat includes the ftrace entries for basic ftrace recorded items.\n\nThese only have three files in the events directory:\n\n type             : printf\n available_types  : printf\n format           : format for the event entry\n\nFor example:\n\n # cat /debug/tracing/events/ftrace/wakeup/format\nname: wakeup\nID: 3\nformat:\n        field:unsigned char type;       offset:0;       size:1;\n        field:unsigned char flags;      offset:1;       size:1;\n        field:unsigned char preempt_count;      offset:2;       size:1;\n        field:int pid;  offset:4;       size:4;\n        field:int tgid; offset:8;       size:4;\n\n        field:unsigned int prev_pid;    offset:12;      size:4;\n        field:unsigned char prev_prio;  offset:16;      size:1;\n        field:unsigned char prev_state; offset:17;      size:1;\n        field:unsigned int next_pid;    offset:20;      size:4;\n        field:unsigned char next_prio;  offset:24;      size:1;\n        field:unsigned char next_state; offset:25;      size:1;\n        field:unsigned int next_cpu;    offset:28;      size:4;\n\nprint fmt: \"%u:%u:%u  \u003d\u003d+ %u:%u:%u [%03u]\"\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "14131f2f98ac350ee9e73faed916d2238a8b6a0d",
      "tree": "bf490d104276142e914f1245bbc9f44cb0d2bc9b",
      "parents": [
        "6409c4da289d6905f7ae2bd0630438368439bda2"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 26 18:47:11 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 26 18:44:06 2009 +0100"
      },
      "message": "tracing: implement trace_clock_*() APIs\n\nImpact: implement new tracing timestamp APIs\n\nAdd three trace clock variants, with differing scalability/precision\ntradeoffs:\n\n -   local: CPU-local trace clock\n -  medium: scalable global clock with some jitter\n -  global: globally monotonic, serialized clock\n\nMake the ring-buffer use the local trace clock internally.\n\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f3fe8e4a38fd19dbb3f8ffb1826aa840ae304a65",
      "tree": "9df43f7711f836173adebcefe2f4776bd3e30340",
      "parents": [
        "b77e38aa240c3bd9c55c98b9f7c81541e042eae5"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Feb 24 10:22:57 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Feb 24 21:54:07 2009 -0500"
      },
      "message": "tracing: add schedule events to event trace\n\nThis patch changes the trace/sched.h to use the DECLARE_TRACE_FMT\nsuch that they are automatically registered with the event tracer.\n\nAnd it also adds the tracing sched headers to kernel/trace/events.c\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "b77e38aa240c3bd9c55c98b9f7c81541e042eae5",
      "tree": "bbb40993e76edc52d2cae1040b941ba4e4d2f965",
      "parents": [
        "7c37730cd31ddb2d3a1da142af9b18c29b8c433b"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Feb 24 10:21:36 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Feb 24 21:54:05 2009 -0500"
      },
      "message": "tracing: add event trace infrastructure\n\nThis patch creates the event tracing infrastructure of ftrace.\nIt will create the files:\n\n /debug/tracing/available_events\n /debug/tracing/set_event\n\nThe available_events will list the trace points that have been\nregistered with the event tracer.\n\nset_events will allow the user to enable or disable an event hook.\n\nexample:\n\n # echo sched_wakeup \u003e /debug/tracing/set_event\n\nWill enable the sched_wakeup event (if it is registered).\n\n # echo \"!sched_wakeup\" \u003e\u003e /debug/tracing/set_event\n\nWill disable the sched_wakeup event (and only that event).\n\n # echo \u003e /debug/tracing/set_event\n\nWill disable all events (notice the \u0027\u003e\u0027)\n\n # cat /debug/tracing/available_events \u003e /debug/tracing/set_event\n\nWill enable all registered event hooks.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "2db270a80b8f2238e536876cfb3987af02684df8",
      "tree": "352bf63f9d48cf686a2a36c157707789a29fe7d1",
      "parents": [
        "44b0635481437140b0e29d6023f05e805d5e7620"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Feb 07 20:46:45 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 09 10:51:02 2009 +0100"
      },
      "message": "tracing/blktrace: move the tracing file to kernel/trace\n\nImpact: cleanup\n\nMove blktrace.c to kernel/trace, also move its config entry.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nAcked-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e1d8aa9f1dd655a3534b22fcfbecb70cdb125766",
      "tree": "eb01b005a1d378515d5839bf1c7ea9836355ec9c",
      "parents": [
        "002bb86d8d42f18937aef396c3ecd65c7e02e21a"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Jan 12 23:15:46 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 14 12:11:43 2009 +0100"
      },
      "message": "tracing: add a new workqueue tracer\n\nImpact: new tracer\n\nThe workqueue tracer provides some statistical informations\nabout each cpu workqueue thread such as the number of the\nworks inserted and executed since their creation. It can help\nto evaluate the amount of work each of them have to perform.\nFor example it can help a developer to decide whether he should\nchoose a per cpu workqueue instead of a singlethreaded one.\n\nIt only traces statistical informations for now but it will probably later\nprovide event tracing too.\n\nSuch a tracer could help too, and be improved, to help rt priority sorted\nworkqueue development.\n\nTo have a snapshot of the workqueues state at any time, just do\n\ncat /debugfs/tracing/trace_stat/workqueues\n\nIe:\n\n  1    125        125       reiserfs/1\n  1      0          0       scsi_tgtd/1\n  1      0          0       aio/1\n  1      0          0       ata/1\n  1    114        114       kblockd/1\n  1      0          0       kintegrityd/1\n  1   2147       2147       events/1\n\n  0      0          0       kpsmoused\n  0    105        105       reiserfs/0\n  0      0          0       scsi_tgtd/0\n  0      0          0       aio/0\n  0      0          0       ata_aux\n  0      0          0       ata/0\n  0      0          0       cqueue\n  0      0          0       kacpi_notify\n  0      0          0       kacpid\n  0    149        149       kblockd/0\n  0      0          0       kintegrityd/0\n  0   1000       1000       khelper\n  0   2270       2270       events/0\n\nChanges in V2:\n\n_ Drop the static array based on NR_CPU and dynamically allocate the stat array\n  with num_possible_cpus() and other cpu mask facilities....\n_ Trace workqueue insertion at a bit lower level (insert_work instead of queue_work) to handle\n  even the workqueue barriers.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "99793e3dbe39a50d871eedc361659a894601e2bf",
      "tree": "a676d42a42f4c884e38121e5a5a4d6630929a9f7",
      "parents": [
        "3e80680208ba6ce9635ca7c21ad0019442ea166a",
        "a103e2ab7377dbbef2506be59c49a3f2ae10b60b"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 06 10:18:43 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 06 10:18:43 2009 +0100"
      },
      "message": "Merge branches \u0027tracing/kmemtrace2\u0027 and \u0027tracing/ftrace\u0027 into tracing/urgent\n"
    },
    {
      "commit": "36994e58a48fb8f9651c7dc845a6de298aba5bfc",
      "tree": "fac4b8a1c30560e91460651487f3a57ef7f2b5cc",
      "parents": [
        "7a51cffbd10886c0557677dd916c090097c691ef"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Dec 29 13:42:23 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 30 09:36:13 2008 +0100"
      },
      "message": "tracing/kmemtrace: normalize the raw tracer event to the unified tracing API\n\nImpact: new tracer plugin\n\nThis patch adapts kmemtrace raw events tracing to the unified tracing API.\n\nTo enable and use this tracer, just do the following:\n\n echo kmemtrace \u003e /debugfs/tracing/current_tracer\n cat /debugfs/tracing/trace\n\nYou will have the following output:\n\n # tracer: kmemtrace\n #\n #\n # ALLOC  TYPE  REQ   GIVEN  FLAGS           POINTER         NODE    CALLER\n # FREE   |      |     |       |              |   |            |        |\n # |\n\ntype_id 1 call_site 18446744071565527833 ptr 18446612134395152256\ntype_id 0 call_site 18446744071565585597 ptr 18446612134405955584 bytes_req 4096 bytes_alloc 4096 gfp_flags 208 node -1\ntype_id 1 call_site 18446744071565585534 ptr 18446612134405955584\ntype_id 0 call_site 18446744071565585597 ptr 18446612134405955584 bytes_req 4096 bytes_alloc 4096 gfp_flags 208 node -1\ntype_id 0 call_site 18446744071565636711 ptr 18446612134345164672 bytes_req 240 bytes_alloc 240 gfp_flags 208 node -1\ntype_id 1 call_site 18446744071565585534 ptr 18446612134405955584\ntype_id 0 call_site 18446744071565585597 ptr 18446612134405955584 bytes_req 4096 bytes_alloc 4096 gfp_flags 208 node -1\ntype_id 0 call_site 18446744071565636711 ptr 18446612134345164912 bytes_req 240 bytes_alloc 240 gfp_flags 208 node -1\ntype_id 1 call_site 18446744071565585534 ptr 18446612134405955584\ntype_id 0 call_site 18446744071565585597 ptr 18446612134405955584 bytes_req 4096 bytes_alloc 4096 gfp_flags 208 node -1\ntype_id 0 call_site 18446744071565636711 ptr 18446612134345165152 bytes_req 240 bytes_alloc 240 gfp_flags 208 node -1\ntype_id 0 call_site 18446744071566144042 ptr 18446612134346191680 bytes_req 1304 bytes_alloc 1312 gfp_flags 208 node -1\ntype_id 1 call_site 18446744071565585534 ptr 18446612134405955584\ntype_id 0 call_site 18446744071565585597 ptr 18446612134405955584 bytes_req 4096 bytes_alloc 4096 gfp_flags 208 node -1\ntype_id 1 call_site 18446744071565585534 ptr 18446612134405955584\n\nThat was to stay backward compatible with the format output produced in\ninux/tracepoint.h.\n\nThis is the default ouput, but note that I tried something else.\n\nIf you change an option:\n\necho kmem_minimalistic \u003e /debugfs/trace_options\n\nand then cat /debugfs/trace, you will have the following output:\n\n # tracer: kmemtrace\n #\n #\n # ALLOC  TYPE  REQ   GIVEN  FLAGS           POINTER         NODE    CALLER\n # FREE   |      |     |       |              |   |            |        |\n # |\n\n   -      C                            0xffff88007c088780          file_free_rcu\n   +      K   4096   4096   000000d0   0xffff88007cad6000     -1   getname\n   -      C                            0xffff88007cad6000          putname\n   +      K   4096   4096   000000d0   0xffff88007cad6000     -1   getname\n   +      K    240    240   000000d0   0xffff8800790dc780     -1   d_alloc\n   -      C                            0xffff88007cad6000          putname\n   +      K   4096   4096   000000d0   0xffff88007cad6000     -1   getname\n   +      K    240    240   000000d0   0xffff8800790dc870     -1   d_alloc\n   -      C                            0xffff88007cad6000          putname\n   +      K   4096   4096   000000d0   0xffff88007cad6000     -1   getname\n   +      K    240    240   000000d0   0xffff8800790dc960     -1   d_alloc\n   +      K   1304   1312   000000d0   0xffff8800791d7340     -1   reiserfs_alloc_inode\n   -      C                            0xffff88007cad6000          putname\n   +      K   4096   4096   000000d0   0xffff88007cad6000     -1   getname\n   -      C                            0xffff88007cad6000          putname\n   +      K    992   1000   000000d0   0xffff880079045b58     -1   alloc_inode\n   +      K    768   1024   000080d0   0xffff88007c096400     -1   alloc_pipe_info\n   +      K    240    240   000000d0   0xffff8800790dca50     -1   d_alloc\n   +      K    272    320   000080d0   0xffff88007c088780     -1   get_empty_filp\n   +      K    272    320   000080d0   0xffff88007c088000     -1   get_empty_filp\n\nYeah I shall confess kmem_minimalistic should be: kmem_alternative.\n\nWhatever, I find it more readable but this a personal opinion of course.\nWe can drop it if you want.\n\nOn the ALLOC/FREE column, + means an allocation and - a free.\n\nOn the type column, you have K \u003d kmalloc, C \u003d cache, P \u003d page\n\nI would like the flags to be GFP_* strings but that would not be easy to not\nbreak the column with strings....\n\nAbout the node...it seems to always be -1. I don\u0027t know why but that shouldn\u0027t\nbe difficult to find.\n\nI moved linux/tracepoint.h to trace/tracepoint.h as well. I think that would\nbe more easy to find the tracer headers if they are all in their common\ndirectory.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "dbd0b4b33074aa6b7832a9d9a5bd985eca5c1aa2",
      "tree": "b2f498a25c176cdba29cb1f9d1e854d38204192e",
      "parents": [
        "f633cef0200bbaec539e2dbb0bc4bed7f022f98b"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Dec 28 20:44:51 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Dec 29 12:55:45 2008 +0100"
      },
      "message": "tracing/ftrace: provide the base infrastructure for histogram tracing\n\nImpact: extend the tracing API\n\nThe goal of this patch is to normalize and make more easy the\nimplementation of statistical (histogram) tracing.\n\nIt implements a trace_stat file into the /debugfs/tracing directory where\none can print a one-shot output of statistics/histogram entries.\n\nA tracer has to provide two basic iterator callbacks:\n\n  stat_start() \u003d\u003e the first entry\n  stat_next(prev, idx) \u003d\u003e the next one.\n\nNote that it is adapted for arrays or hash tables or lists.... since it\nprovides a pointer to the previous entry and the current index of the\niterator.\n\nThese two callbacks are called to get a snapshot of the statistics at each\nopening of the trace_stat file because. The values are so updated between\ntwo \"cat trace_stat\". And the tracer is free to lock its datas during the\niteration to keep consistent values.\n\nSince it is almost always interesting to sort statisticals values to\naddress the problems by priority, this infrastructure provides a \"sorting\"\nof the stat entries too if desired. A tracer has just to provide a\nstat_cmp callback to compare two entries and the stat tracing\ninfrastructure will build a sorted list of the given entries.\n\nA last callback, called stat_headers, can be implemented by a tracer to\noutput headers on its trace.\n\nIf one of these callbacks is changed on runtime, it just have to signal it\nto the stat tracing API by calling the init_tracer_stat() helper.\n\nChanges in V2:\n\n- Fix a memory leak if the user opens multiple times the trace_stat file\n  without closing it. Now we always free our list before rebuilding it.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f0868d1e23a8efec33beb3aa688aab7fdb1ae093",
      "tree": "73593e14d0d127fe3fe055a85b6e16b50a43578a",
      "parents": [
        "c47956d9ae3341d2d1998bff26620fa3338c01e4"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Dec 23 23:24:12 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Dec 29 12:46:11 2008 +0100"
      },
      "message": "ftrace: set up trace event hash infrastructure\n\nImpact: simplify/generalize/refactor trace.c\n\nThe trace.c file is becoming more difficult to maintain due to the\ngrowing number of events. There is several formats that an event may\nbe printed. This patch sets up the infrastructure of an event hash to\nallow for events to register how they should be printed.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a93751cab71d63126687551823ed3e70cd85854a",
      "tree": "665e9bf274c457edd672ad44320fad962e6c16f5",
      "parents": [
        "c2724775ce57c98b8af9694857b941dc61056516"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markut.t.metzger@intel.com",
        "time": "Thu Dec 11 13:53:26 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 12 08:08:14 2008 +0100"
      },
      "message": "x86, bts, ftrace: adapt the hw-branch-tracer to the ds.c interface\n\nImpact: restructure code, cleanup\n\nRemove BTS bits from the hw-branch-tracer (renamed from bts-tracer) and\nuse the ds interface.\n\nSigned-off-by: Markus Metzger \u003cmarkut.t.metzger@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c7cc77307669336a08928ab8668bdb3f3bcc021b",
      "tree": "c9f2997a7266cc5d8c5b61e964d8e014f274f5d3",
      "parents": [
        "0bfc24559d7945506184d86739fe365a181f06b7",
        "d144d5ee6a265823d39f75ecfed351a516295183",
        "437f24fb897d409a9978eb71ecfaf279dcd94acd",
        "f3f47a6768a29448866da4422b6f6bee485c947f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 27 10:56:13 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 27 10:56:13 2008 +0100"
      },
      "message": "Merge branches \u0027tracing/blktrace\u0027, \u0027tracing/ftrace\u0027, \u0027tracing/function-graph-tracer\u0027 and \u0027tracing/power-tracer\u0027 into tracing/core\n"
    },
    {
      "commit": "f3f47a6768a29448866da4422b6f6bee485c947f",
      "tree": "ba4bf1b79cbd13412871eec50250294d7140fd09",
      "parents": [
        "509dceef6470442d8c7b8a43ec34125205840b3c"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@infradead.org",
        "time": "Sun Nov 23 16:49:58 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 08:29:32 2008 +0100"
      },
      "message": "tracing: add \"power-tracer\": C/P state tracer to help power optimization\n\nImpact: new \"power-tracer\" ftrace plugin\n\nThis patch adds a C/P-state ftrace plugin that will generate\ndetailed statistics about the C/P-states that are being used,\nso that we can look at detailed decisions that the C/P-state\ncode is making, rather than the too high level \"average\"\nthat we have today.\n\nAn example way of using this is:\n\n mount -t debugfs none /sys/kernel/debug\n echo cstate \u003e /sys/kernel/debug/tracing/current_tracer\n echo 1 \u003e /sys/kernel/debug/tracing/tracing_enabled\n sleep 1\n echo 0 \u003e /sys/kernel/debug/tracing/tracing_enabled\n cat /sys/kernel/debug/tracing/trace | perl scripts/trace/cstate.pl \u003e out.svg\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "fb52607afcd0629776f1dc9e657647ceae81dd50",
      "tree": "7bf43b41ff8510d3098c089913cce56a9049f0fd",
      "parents": [
        "509dceef6470442d8c7b8a43ec34125205840b3c"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Nov 25 21:07:04 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 01:59:45 2008 +0100"
      },
      "message": "tracing/function-return-tracer: change the name into function-graph-tracer\n\nImpact: cleanup\n\nThis patch changes the name of the \"return function tracer\" into\nfunction-graph-tracer which is a more suitable name for a tracing\nwhich makes one able to retrieve the ordered call stack during\nthe code flow.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1e9b51c28312f7334394aa30be56ff52c2b65b7e",
      "tree": "c0a231d83541263ee938e3452475409323e4e9a9",
      "parents": [
        "8bba1bf5e2434c83f2fe8b1422604ace9bbe4cb8"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Tue Nov 25 09:24:15 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 25 17:31:13 2008 +0100"
      },
      "message": "x86, bts, ftrace: a BTS ftrace plug-in prototype\n\nImpact: add new ftrace plugin\n\nA prototype for a BTS ftrace plug-in.\n\nThe tracer collects branch trace in a cyclic buffer for each cpu.\n\nThe tracer is not configurable and the trace for each snapshot is\nappended when doing cat /debug/tracing/trace.\n\nThis is a proof of concept that will be extended with future patches\nto become a (hopefully) useful tool.\n\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "94b80ffd650b22e1fd493ccf6bad7efda4b8ea85",
      "tree": "9f28b0e460f1b99eabb282b34d7fdaa8d80f12d6",
      "parents": [
        "80e5ea4506791af206266c5921c97f11d3b17866"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Nov 12 16:18:45 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 22:28:40 2008 +0100"
      },
      "message": "ftrace: rename trace_unlikely.c file\n\nImpact: File name change of trace_unlikely.c\n\nThe \"unlikely\" name for the tracer is quite ugly. We renamed all the\nparts of it to \"branch\" and now it is time to rename the file too.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2ed84eeb8808cf3c9f039213ca137ffd7d753f0e",
      "tree": "3aa22269a1fd5ed0b66826120ca9b572400962b5",
      "parents": [
        "68d119f0a66f7e3663304343b072e56a2693446b"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Nov 12 15:24:24 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 22:27:58 2008 +0100"
      },
      "message": "trace: rename unlikely profiler to branch profiler\n\nImpact: name change of unlikely tracer and profiler\n\nIngo Molnar suggested changing the config from UNLIKELY_PROFILE\nto BRANCH_PROFILING. I never did like the \"unlikely\" name so I\nwent one step farther, and renamed all the unlikely configurations\nto a \"BRANCH\" variant.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "52f232cb720a7babb752849cbc2cab2d24021209",
      "tree": "47c7e800549457bd5ab9b54f47729acac6e10780",
      "parents": [
        "1f0d69a9fc815db82f15722bf05227190b1d714d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 12 00:14:40 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 11:52:02 2008 +0100"
      },
      "message": "tracing: likely/unlikely branch annotation tracer\n\nImpact: new likely/unlikely branch tracer\n\nThis patch adds a way to record the instances of the likely() and unlikely()\nbranch condition annotations.\n\nWhen \"unlikely\" is set in /debugfs/tracing/iter_ctrl the unlikely conditions\nwill be added to any of the ftrace tracers. The change takes effect when\na new tracer is passed into the current_tracer file.\n\nFor example:\n\n bash-3471  [003]   357.014755: [INCORRECT] sched_info_dequeued:sched_stats.h:177\n bash-3471  [003]   357.014756: [correct] update_curr:sched_fair.c:489\n bash-3471  [003]   357.014758: [correct] calc_delta_fair:sched_fair.c:411\n bash-3471  [003]   357.014759: [correct] account_group_exec_runtime:sched_stats.h:356\n bash-3471  [003]   357.014761: [correct] update_curr:sched_fair.c:489\n bash-3471  [003]   357.014763: [INCORRECT] calc_delta_fair:sched_fair.c:411\n bash-3471  [003]   357.014765: [correct] calc_delta_mine:sched.c:1279\n\nWhich shows the normal tracer heading, as well as whether the condition was\ncorrect \"[correct]\" or was mistaken \"[INCORRECT]\", followed by the function,\nfile name and line number.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1f0d69a9fc815db82f15722bf05227190b1d714d",
      "tree": "21e0a9664fd47827d9168938a965b39b85b6e287",
      "parents": [
        "cb9382e5a94e54d0356d730954396c746ae66d6e"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 12 00:14:39 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 11:52:02 2008 +0100"
      },
      "message": "tracing: profile likely and unlikely annotations\n\nImpact: new unlikely/likely profiler\n\nAndrew Morton recently suggested having an in-kernel way to profile\nlikely and unlikely macros. This patch achieves that goal.\n\nWhen configured, every(*) likely and unlikely macro gets a counter attached\nto it. When the condition is hit, the hit and misses of that condition\nare recorded. These numbers can later be retrieved by:\n\n  /debugfs/tracing/profile_likely    - All likely markers\n  /debugfs/tracing/profile_unlikely  - All unlikely markers.\n\n# cat /debug/tracing/profile_unlikely | head\n correct incorrect  %        Function                  File              Line\n ------- ---------  -        --------                  ----              ----\n    2167        0   0 do_arch_prctl                  process_64.c         832\n       0        0   0 do_arch_prctl                  process_64.c         804\n    2670        0   0 IS_ERR                         err.h                34\n   71230     5693   7 __switch_to                    process_64.c         673\n   76919        0   0 __switch_to                    process_64.c         639\n   43184    33743  43 __switch_to                    process_64.c         624\n   12740    64181  83 __switch_to                    process_64.c         594\n   12740    64174  83 __switch_to                    process_64.c         590\n\n# cat /debug/tracing/profile_unlikely | \\\n  awk \u0027{ if ($3 \u003e 25) print $0; }\u0027 |head -20\n   44963    35259  43 __switch_to                    process_64.c         624\n   12762    67454  84 __switch_to                    process_64.c         594\n   12762    67447  84 __switch_to                    process_64.c         590\n    1478      595  28 syscall_get_error              syscall.h            51\n       0     2821 100 syscall_trace_leave            ptrace.c             1567\n       0        1 100 native_smp_prepare_cpus        smpboot.c            1237\n   86338   265881  75 calc_delta_fair                sched_fair.c         408\n  210410   108540  34 calc_delta_mine                sched.c              1267\n       0    54550 100 sched_info_queued              sched_stats.h        222\n   51899    66435  56 pick_next_task_fair            sched_fair.c         1422\n       6       10  62 yield_task_fair                sched_fair.c         982\n    7325     2692  26 rt_policy                      sched.c              144\n       0     1270 100 pre_schedule_rt                sched_rt.c           1261\n    1268    48073  97 pick_next_task_rt              sched_rt.c           884\n       0    45181 100 sched_info_dequeued            sched_stats.h        177\n       0       15 100 sched_move_task                sched.c              8700\n       0       15 100 sched_move_task                sched.c              8690\n   53167    33217  38 schedule                       sched.c              4457\n       0    80208 100 sched_info_switch              sched_stats.h        270\n   30585    49631  61 context_switch                 sched.c              2619\n\n# cat /debug/tracing/profile_likely | awk \u0027{ if ($3 \u003e 25) print $0; }\u0027\n   39900    36577  47 pick_next_task                 sched.c              4397\n   20824    15233  42 switch_mm                      mmu_context_64.h     18\n       0        7 100 __cancel_work_timer            workqueue.c          560\n     617    66484  99 clocksource_adjust             timekeeping.c        456\n       0   346340 100 audit_syscall_exit             auditsc.c            1570\n      38   347350  99 audit_get_context              auditsc.c            732\n       0   345244 100 audit_syscall_entry            auditsc.c            1541\n      38     1017  96 audit_free                     auditsc.c            1446\n       0     1090 100 audit_alloc                    auditsc.c            862\n    2618     1090  29 audit_alloc                    auditsc.c            858\n       0        6 100 move_masked_irq                migration.c          9\n       1      198  99 probe_sched_wakeup             trace_sched_switch.c 58\n       2        2  50 probe_wakeup                   trace_sched_wakeup.c 227\n       0        2 100 probe_wakeup_sched_switch      trace_sched_wakeup.c 144\n    4514     2090  31 __grab_cache_page              filemap.c            2149\n   12882   228786  94 mapping_unevictable            pagemap.h            50\n       4       11  73 __flush_cpu_slab               slub.c               1466\n  627757   330451  34 slab_free                      slub.c               1731\n    2959    61245  95 dentry_lru_del_init            dcache.c             153\n     946     1217  56 load_elf_binary                binfmt_elf.c         904\n     102       82  44 disk_put_part                  genhd.h              206\n       1        1  50 dst_gc_task                    dst.c                82\n       0       19 100 tcp_mss_split_point            tcp_output.c         1126\n\nAs you can see by the above, there\u0027s a bit of work to do in rethinking\nthe use of some unlikelys and likelys. Note: the unlikely case had 71 hits\nthat were more than 25%.\n\nNote:  After submitting my first version of this patch, Andrew Morton\n  showed me a version written by Daniel Walker, where I picked up\n  the following ideas from:\n\n  1)  Using __builtin_constant_p to avoid profiling fixed values.\n  2)  Using __FILE__ instead of instruction pointers.\n  3)  Using the preprocessor to stop all profiling of likely\n       annotations from vsyscall_64.c.\n\nThanks to Andrew Morton, Arjan van de Ven, Theodore Tso and Ingo Molnar\nfor their feed back on this patch.\n\n(*) Not ever unlikely is recorded, those that are used by vsyscalls\n (a few of them) had to have profiling disabled.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Theodore Tso \u003ctytso@mit.edu\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nCc: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "15e6cb3673ea6277999642802406a764b49391b0",
      "tree": "d0a46a918caa64d5fb1ed37be3e026b30e94fe77",
      "parents": [
        "caf4b323b02a16c92fba449952ac6515ddc76d7a"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Nov 11 07:14:25 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 11 10:29:12 2008 +0100"
      },
      "message": "tracing: add a tracer to catch execution time of kernel functions\n\nImpact: add new tracing plugin which can trace full (entry+exit) function calls\n\nThis tracer uses the low level function return ftrace plugin to\nmeasure the execution time of the kernel functions.\n\nThe first field is the caller of the function, the second is the\nmeasured function, and the last one is the execution time in\nnanoseconds.\n\n- v3:\n\n- HAVE_FUNCTION_RET_TRACER have been added. Each arch that support ftrace return\n  should enable it.\n- ftrace_return_stub becomes ftrace_stub.\n- CONFIG_FUNCTION_RET_TRACER depends now on CONFIG_FUNCTION_TRACER\n- Return traces printing can be used for other tracers on trace.c\n- Adapt to the new tracing API (no more ctrl_update callback)\n- Correct the check of \"disabled\" during insertion.\n- Minor changes...\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "606576ce816603d9fe1fb453a88bc6eea16ca709",
      "tree": "7c6844ff4d75f249df49e9e5fe97062d301c3a1f",
      "parents": [
        "c2db8054c1eaf99983d8deee347876b01c26c2cf"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Oct 06 19:06:12 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 20 18:27:03 2008 +0200"
      },
      "message": "ftrace: rename FTRACE to FUNCTION_TRACER\n\nDue to confusion between the ftrace infrastructure and the gcc profiling\ntracer \"ftrace\", this patch renames the config options from FTRACE to\nFUNCTION_TRACER.  The other two names that are offspring from FTRACE\nDYNAMIC_FTRACE and FTRACE_MCOUNT_RECORD will stay the same.\n\nThis patch was generated mostly by script, and partially by hand.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7a8e76a3829f1067b70f715771ff88baf2fbf3c3",
      "tree": "71126d4ad6f89abd00cac688318aff14323a96bb",
      "parents": [
        "5aa60c6073456812251caf9177cb921b2de68f77"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Sep 29 23:02:38 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:38:54 2008 +0200"
      },
      "message": "tracing: unified trace buffer\n\nThis is a unified tracing buffer that implements a ring buffer that\nhopefully everyone will eventually be able to use.\n\nThe events recorded into the buffer have the following structure:\n\n  struct ring_buffer_event {\n\tu32 type:2, len:3, time_delta:27;\n\tu32 array[];\n  };\n\nThe minimum size of an event is 8 bytes. All events are 4 byte\naligned inside the buffer.\n\nThere are 4 types (all internal use for the ring buffer, only\nthe data type is exported to the interface users).\n\n RINGBUF_TYPE_PADDING: this type is used to note extra space at the end\n\tof a buffer page.\n\n RINGBUF_TYPE_TIME_EXTENT: This type is used when the time between events\n\tis greater than the 27 bit delta can hold. We add another\n\t32 bits, and record that in its own event (8 byte size).\n\n RINGBUF_TYPE_TIME_STAMP: (Not implemented yet). This will hold data to\n\thelp keep the buffer timestamps in sync.\n\nRINGBUF_TYPE_DATA: The event actually holds user data.\n\nThe \"len\" field is only three bits. Since the data must be\n4 byte aligned, this field is shifted left by 2, giving a\nmax length of 28 bytes. If the data load is greater than 28\nbytes, the first array field holds the full length of the\ndata load and the len field is set to zero.\n\nExample, data size of 7 bytes:\n\n\ttype \u003d RINGBUF_TYPE_DATA\n\tlen \u003d 2\n\ttime_delta: \u003ctime-stamp\u003e - \u003cprev_event-time-stamp\u003e\n\tarray[0..1]: \u003c7 bytes of data\u003e \u003c1 byte empty\u003e\n\nThis event is saved in 12 bytes of the buffer.\n\nAn event with 82 bytes of data:\n\n\ttype \u003d RINGBUF_TYPE_DATA\n\tlen \u003d 0\n\ttime_delta: \u003ctime-stamp\u003e - \u003cprev_event-time-stamp\u003e\n\tarray[0]: 84 (Note the alignment)\n\tarray[1..14]: \u003c82 bytes of data\u003e \u003c2 bytes empty\u003e\n\nThe above event is saved in 92 bytes (if my math is correct).\n82 bytes of data, 2 bytes empty, 4 byte header, 4 byte length.\n\nDo not reference the above event struct directly. Use the following\nfunctions to gain access to the event table, since the\nring_buffer_event structure may change in the future.\n\nring_buffer_event_length(event): get the length of the event.\n\tThis is the size of the memory used to record this\n\tevent, and not the size of the data pay load.\n\nring_buffer_time_delta(event): get the time delta of the event\n\tThis returns the delta time stamp since the last event.\n\tNote: Even though this is in the header, there should\n\t\tbe no reason to access this directly, accept\n\t\tfor debugging.\n\nring_buffer_event_data(event): get the data from the event\n\tThis is the function to use to get the actual data\n\tfrom the event. Note, it is only a pointer to the\n\tdata inside the buffer. This data must be copied to\n\tanother location otherwise you risk it being written\n\tover in the buffer.\n\nring_buffer_lock: A way to lock the entire buffer.\nring_buffer_unlock: unlock the buffer.\n\nring_buffer_alloc: create a new ring buffer. Can choose between\n\toverwrite or consumer/producer mode. Overwrite will\n\toverwrite old data, where as consumer producer will\n\tthrow away new data if the consumer catches up with the\n\tproducer.  The consumer/producer is the default.\n\nring_buffer_free: free the ring buffer.\n\nring_buffer_resize: resize the buffer. Changes the size of each cpu\n\tbuffer. Note, it is up to the caller to provide that\n\tthe buffer is not being used while this is happening.\n\tThis requirement may go away but do not count on it.\n\nring_buffer_lock_reserve: locks the ring buffer and allocates an\n\tentry on the buffer to write to.\nring_buffer_unlock_commit: unlocks the ring buffer and commits it to\n\tthe buffer.\n\nring_buffer_write: writes some data into the ring buffer.\n\nring_buffer_peek: Look at a next item in the cpu buffer.\nring_buffer_consume: get the next item in the cpu buffer and\n\tconsume it. That is, this function increments the head\n\tpointer.\n\nring_buffer_read_start: Start an iterator of a cpu buffer.\n\tFor now, this disables the cpu buffer, until you issue\n\ta finish. This is just because we do not want the iterator\n\tto be overwritten. This restriction may change in the future.\n\tBut note, this is used for static reading of a buffer which\n\tis usually done \"after\" a trace. Live readings would want\n\tto use the ring_buffer_consume above, which will not\n\tdisable the ring buffer.\n\nring_buffer_read_finish: Finishes the read iterator and reenables\n\tthe ring buffer.\n\nring_buffer_iter_peek: Look at the next item in the cpu iterator.\nring_buffer_read: Read the iterator and increment it.\nring_buffer_iter_reset: Reset the iterator to point to the beginning\n\tof the cpu buffer.\nring_buffer_iter_empty: Returns true if the iterator is at the end\n\tof the cpu buffer.\n\nring_buffer_size: returns the size in bytes of each cpu buffer.\n\tNote, the real size is this times the number of CPUs.\n\nring_buffer_reset_cpu: Sets the cpu buffer to empty\nring_buffer_reset: sets all cpu buffers to empty\n\nring_buffer_swap_cpu: swaps a cpu buffer from one buffer with a\n\tcpu buffer of another buffer. This is handy when you\n\twant to take a snap shot of a running trace on just one\n\tcpu. Having a backup buffer, to swap with facilitates this.\n\tFtrace max latencies use this.\n\nring_buffer_empty: Returns true if the ring buffer is empty.\nring_buffer_empty_cpu: Returns true if the cpu buffer is empty.\n\nring_buffer_record_disable: disable all cpu buffers (read only)\nring_buffer_record_disable_cpu: disable a single cpu buffer (read only)\nring_buffer_record_enable: enable all cpu buffers.\nring_buffer_record_enabl_cpu: enable a single cpu buffer.\n\nring_buffer_entries: The number of entries in a ring buffer.\nring_buffer_overruns: The number of entries removed due to writing wrap.\n\nring_buffer_time_stamp: Get the time stamp used by the ring buffer\nring_buffer_normalize_time_stamp: normalize the ring buffer time stamp\n\tinto nanosecs.\n\nI still need to implement the GTOD feature. But we need support from\nthe cpu frequency infrastructure.  But this can be done at a later\ntime without affecting the ring buffer interface.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1f5c2abbdeb2bb07b20c6a66bfecefe6c867b1ee",
      "tree": "0ba861c8817994f3c46446368b806f54c037b09d",
      "parents": [
        "b5ad384e79add1d87fff54070000dadcf218ffab"
      ],
      "author": {
        "name": "Frédéric Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Sep 23 11:36:20 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:38:49 2008 +0200"
      },
      "message": "tracing/ftrace: give an entry on the config for boot tracer\n\nBring the entry to choose the boot tracer on the kernel config.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "fb1b6d8b5154c692172a424e45fbd0573295cb93",
      "tree": "d9a7ad2c629a6133998402354e77cd721e4962b4",
      "parents": [
        "5bf9a1ee350a10feb94107de32a203d81fbbe706"
      ],
      "author": {
        "name": "Steven Noonan",
        "email": "steven@uplinklabs.net",
        "time": "Fri Sep 19 03:06:43 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:37:43 2008 +0200"
      },
      "message": "ftrace: add nop tracer\n\nA no-op tracer which can serve two purposes:\n\n 1. A template for development of a new tracer.\n 2. A convenient way to see ftrace_printk() calls without\n    an irrelevant trace making the output messy.\n\n[ mingo@elte.hu: resolved conflicts ]\nSigned-off-by: Steven Noonan \u003csteven@uplinklabs.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e5a81b629ea8feb9e7530cfac35cfb41c45facf3",
      "tree": "71437955371e0913521d4ddb02db974df9fd8d34",
      "parents": [
        "b3a320417484a6d6b9d28098944df58341353992"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Aug 27 23:31:01 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:36:19 2008 +0200"
      },
      "message": "ftrace: add stack tracer\n\nThis is another tracer using the ftrace infrastructure, that examines\nat each function call the size of the stack. If the stack use is greater\nthan the previous max it is recorded.\n\nYou can always see (and set) the max stack size seen. By setting it\nto zero will start the recording again. The backtrace is also available.\n\nFor example:\n\n# cat /debug/tracing/stack_max_size\n1856\n\n# cat /debug/tracing/stack_trace\n[\u003cc027764d\u003e] stack_trace_call+0x8f/0x101\n[\u003cc021b966\u003e] ftrace_call+0x5/0x8\n[\u003cc02553cc\u003e] clocksource_get_next+0x12/0x48\n[\u003cc02542a5\u003e] update_wall_time+0x538/0x6d1\n[\u003cc0245913\u003e] do_timer+0x23/0xb0\n[\u003cc0257657\u003e] tick_do_update_jiffies64+0xd9/0xf1\n[\u003cc02576b9\u003e] tick_sched_timer+0x4a/0xad\n[\u003cc0250fe6\u003e] __run_hrtimer+0x3e/0x75\n[\u003cc02518ed\u003e] hrtimer_interrupt+0xf1/0x154\n[\u003cc022c870\u003e] smp_apic_timer_interrupt+0x71/0x84\n[\u003cc021b7e9\u003e] apic_timer_interrupt+0x2d/0x34\n[\u003cc0238597\u003e] finish_task_switch+0x29/0xa0\n[\u003cc05abd13\u003e] schedule+0x765/0x7be\n[\u003cc05abfca\u003e] schedule_timeout+0x1b/0x90\n[\u003cc05ab4d4\u003e] wait_for_common+0xab/0x101\n[\u003cc05ab5ac\u003e] wait_for_completion+0x12/0x14\n[\u003cc033cfc3\u003e] blk_execute_rq+0x84/0x99\n[\u003cc0402470\u003e] scsi_execute+0xc2/0x105\n[\u003cc040250a\u003e] scsi_execute_req+0x57/0x7f\n[\u003cc043afe0\u003e] sr_test_unit_ready+0x3e/0x97\n[\u003cc043bbd6\u003e] sr_media_change+0x43/0x205\n[\u003cc046b59f\u003e] media_changed+0x48/0x77\n[\u003cc046b5ff\u003e] cdrom_media_changed+0x31/0x37\n[\u003cc043b091\u003e] sr_block_media_changed+0x16/0x18\n[\u003cc02b9e69\u003e] check_disk_change+0x1b/0x63\n[\u003cc046f4c3\u003e] cdrom_open+0x7a1/0x806\n[\u003cc043b148\u003e] sr_block_open+0x78/0x8d\n[\u003cc02ba4c0\u003e] do_open+0x90/0x257\n[\u003cc02ba869\u003e] blkdev_open+0x2d/0x56\n[\u003cc0296a1f\u003e] __dentry_open+0x14d/0x23c\n[\u003cc0296b32\u003e] nameidata_to_filp+0x24/0x38\n[\u003cc02a1c68\u003e] do_filp_open+0x347/0x626\n[\u003cc02967ef\u003e] do_sys_open+0x47/0xbc\n[\u003cc02968b0\u003e] sys_open+0x23/0x2b\n[\u003cc021aadd\u003e] sysenter_do_call+0x12/0x26\n\nI\u0027ve tested this on both x86_64 and i386.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ec1bb60bbff0386c3ec25360e7a8c72f467a6ff1",
      "tree": "893c04336763acd84d575fd713773b882e8bc8a6",
      "parents": [
        "5373fdbdc1dba69aa956098650f71b731d471885",
        "37f5d732f34fa099676b2c52b8a57bab01a011de"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jul 10 11:43:08 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jul 10 11:43:08 2008 +0200"
      },
      "message": "Merge branch \u0027tracing/sysprof\u0027 into auto-ftrace-next\n"
    },
    {
      "commit": "f984b51e0779a6dd30feedc41404013ca54e5d05",
      "tree": "ae7e80f53707e9069a9607072a554b51c660075b",
      "parents": [
        "d61fc44853f46fb002228b18aa5f30db21fcd4ac"
      ],
      "author": {
        "name": "Pekka Paalanen",
        "email": "pq@iki.fi",
        "time": "Mon May 12 21:20:57 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat May 24 11:22:43 2008 +0200"
      },
      "message": "ftrace: add mmiotrace plugin\n\nOn Sat, 22 Mar 2008 13:07:47 +0100\nIngo Molnar \u003cmingo@elte.hu\u003e wrote:\n\n\u003e \u003e \u003e i\u0027d suggest the following: pull x86.git and sched-devel.git into a\n\u003e \u003e \u003e single tree [the two will combine without rejects]. Then try to add a\n\u003e \u003e \u003e kernel/tracing/trace_mmiotrace.c ftrace plugin. The trace_sysprof.c\n\u003e \u003e \u003e plugin might be a good example.\n\u003e \u003e\n\u003e \u003e I did this and now I have mmiotrace enabled/disabled via the tracing\n\u003e \u003e framework (what do we call this, since ftrace is one of the tracers?).\n\u003e\n\u003e cool! could you send the patches for that? (even if they are not fully\n\u003e functional yet)\n\nPatch attached in the end. Nice to see how much code disappeared. I tried\nto mark all the features I had to break with XXX-comments.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "f06c38103ea9dbca27c3f4d77f444ddefb5477cd",
      "tree": "9452cf51a1acb2a2019d1680668d051370b08981",
      "parents": [
        "677aa9f77e8de3791b481a0cec6c8b84d1eec626"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 12 21:20:47 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 23:39:00 2008 +0200"
      },
      "message": "ftrace: add sysprof plugin\n\nvery first baby version.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d05cdb25d80f06f77aa6bddb53cd1390d4d91a0b",
      "tree": "6c7f70f5252cbd42a1949c2d7019fe9f337bd205",
      "parents": [
        "06fa75ab566c50e01bfd7b055bde85cf9b1bc98a"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon May 12 21:20:54 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 21:13:23 2008 +0200"
      },
      "message": "ftrace: fix dynamic ftrace selftest\n\nWith the adding of the configuration changes in the Makefile to prevent\ntracing of functions in the ftrace code, all tracing of all the ftrace\ncode has been removed. Unfortunately, one of the selftests, relied on\na function to be traced. With the new change, the function was no longer\ntraced and the test failed.\n\nThis patch separates out the test function into its own file so that\nwe can add the \"-pg\" flag to the compilation of that function and the\nadding of the mcount call to that function.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "b53dde9d34f2df396540988ebc65c33400f57b04",
      "tree": "1592aebcfd56b4a7abd37bf44f27a01a0c039340",
      "parents": [
        "3594136ad67a54d77bcb2547e70011754a2f91d5"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 12 21:20:51 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:56:53 2008 +0200"
      },
      "message": "ftrace: disable -pg for the tracer itself\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "6cd8a4bb2f97527a9ceb30bc77ea4e959c6a95e3",
      "tree": "845af8f3c7f8956b4f3591759a0d67248af243a2",
      "parents": [
        "81d68a96a39844853b37f20cc8282d9b65b78ef3"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:32:54 2008 +0200"
      },
      "message": "ftrace: trace preempt off critical timings\n\nAdd preempt off timings. A lot of kernel core code is taken from the RT patch\nlatency trace that was written by Ingo Molnar.\n\nThis adds \"preemptoff\" and \"preemptirqsoff\" to /debugfs/tracing/available_tracers\n\nNow instead of just tracing irqs off, preemption off can be selected\nto be recorded.\n\nWhen this is selected, it shares the same files as irqs off timings.\nOne can either trace preemption off, irqs off, or one or the other off.\n\nBy echoing \"preemptoff\" into /debugfs/tracing/current_tracer, recording\nof preempt off only is performed. \"irqsoff\" will only record the time\nirqs are disabled, but \"preemptirqsoff\" will take the total time irqs\nor preemption are disabled. Runtime switching of these options is now\nsupported by simpling echoing in the appropriate trace name into\n/debugfs/tracing/current_tracer.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "81d68a96a39844853b37f20cc8282d9b65b78ef3",
      "tree": "bbc05f415930c15fb5a1004620bd77585fcec43a",
      "parents": [
        "352ad25aa4a189c667cb2af333948d34692a2d27"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:32:46 2008 +0200"
      },
      "message": "ftrace: trace irq disabled critical timings\n\nThis patch adds latency tracing for critical timings\n(how long interrupts are disabled for).\n\n \"irqsoff\" is added to /debugfs/tracing/available_tracers\n\nNote:\n  tracing_max_latency\n    also holds the max latency for irqsoff (in usecs).\n   (default to large number so one must start latency tracing)\n\n  tracing_thresh\n    threshold (in usecs) to always print out if irqs off\n    is detected to be longer than stated here.\n    If irq_thresh is non-zero, then max_irq_latency\n    is ignored.\n\nHere\u0027s an example of a trace with ftrace_enabled \u003d 0\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\npreemption latency trace v1.1.5 on 2.6.24-rc7\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n--------------------------------------------------------------------\n latency: 100 us, #3/3, CPU#1 | (M:rt VP:0, KP:0, SP:0 HP:0 #P:2)\n    -----------------\n    | task: swapper-0 (uid:0 nice:0 policy:0 rt_prio:0)\n    -----------------\n \u003d\u003e started at: _spin_lock_irqsave+0x2a/0xb7\n \u003d\u003e ended at:   _spin_unlock_irqrestore+0x32/0x5f\n\n                 _------\u003d\u003e CPU#\n                / _-----\u003d\u003e irqs-off\n               | / _----\u003d\u003e need-resched\n               || / _---\u003d\u003e hardirq/softirq\n               ||| / _--\u003d\u003e preempt-depth\n               |||| /\n               |||||     delay\n   cmd     pid ||||| time  |   caller\n      \\   /    |||||   \\   |   /\n swapper-0     1d.s3    0us+: _spin_lock_irqsave+0x2a/0xb7 (e1000_update_stats+0x47/0x64c [e1000])\n swapper-0     1d.s3  100us : _spin_unlock_irqrestore+0x32/0x5f (e1000_update_stats+0x641/0x64c [e1000])\n swapper-0     1d.s3  100us : trace_hardirqs_on_caller+0x75/0x89 (_spin_unlock_irqrestore+0x32/0x5f)\n\nvim:ft\u003dhelp\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAnd this is a trace with ftrace_enabled \u003d\u003d 1\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\npreemption latency trace v1.1.5 on 2.6.24-rc7\n--------------------------------------------------------------------\n latency: 102 us, #12/12, CPU#1 | (M:rt VP:0, KP:0, SP:0 HP:0 #P:2)\n    -----------------\n    | task: swapper-0 (uid:0 nice:0 policy:0 rt_prio:0)\n    -----------------\n \u003d\u003e started at: _spin_lock_irqsave+0x2a/0xb7\n \u003d\u003e ended at:   _spin_unlock_irqrestore+0x32/0x5f\n\n                 _------\u003d\u003e CPU#\n                / _-----\u003d\u003e irqs-off\n               | / _----\u003d\u003e need-resched\n               || / _---\u003d\u003e hardirq/softirq\n               ||| / _--\u003d\u003e preempt-depth\n               |||| /\n               |||||     delay\n   cmd     pid ||||| time  |   caller\n      \\   /    |||||   \\   |   /\n swapper-0     1dNs3    0us+: _spin_lock_irqsave+0x2a/0xb7 (e1000_update_stats+0x47/0x64c [e1000])\n swapper-0     1dNs3   46us : e1000_read_phy_reg+0x16/0x225 [e1000] (e1000_update_stats+0x5e2/0x64c [e1000])\n swapper-0     1dNs3   46us : e1000_swfw_sync_acquire+0x10/0x99 [e1000] (e1000_read_phy_reg+0x49/0x225 [e1000])\n swapper-0     1dNs3   46us : e1000_get_hw_eeprom_semaphore+0x12/0xa6 [e1000] (e1000_swfw_sync_acquire+0x36/0x99 [e1000])\n swapper-0     1dNs3   47us : __const_udelay+0x9/0x47 (e1000_read_phy_reg+0x116/0x225 [e1000])\n swapper-0     1dNs3   47us+: __delay+0x9/0x50 (__const_udelay+0x45/0x47)\n swapper-0     1dNs3   97us : preempt_schedule+0xc/0x84 (__delay+0x4e/0x50)\n swapper-0     1dNs3   98us : e1000_swfw_sync_release+0xc/0x55 [e1000] (e1000_read_phy_reg+0x211/0x225 [e1000])\n swapper-0     1dNs3   99us+: e1000_put_hw_eeprom_semaphore+0x9/0x35 [e1000] (e1000_swfw_sync_release+0x50/0x55 [e1000])\n swapper-0     1dNs3  101us : _spin_unlock_irqrestore+0xe/0x5f (e1000_update_stats+0x641/0x64c [e1000])\n swapper-0     1dNs3  102us : _spin_unlock_irqrestore+0x32/0x5f (e1000_update_stats+0x641/0x64c [e1000])\n swapper-0     1dNs3  102us : trace_hardirqs_on_caller+0x75/0x89 (_spin_unlock_irqrestore+0x32/0x5f)\n\nvim:ft\u003dhelp\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "352ad25aa4a189c667cb2af333948d34692a2d27",
      "tree": "83a11c626b3818711d3b88061964c9ea603f7b68",
      "parents": [
        "35e8e302e5d6e32675df2fc1dd3a53dfa6630dc1"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:32:36 2008 +0200"
      },
      "message": "ftrace: tracer for scheduler wakeup latency\n\nThis patch adds the tracer that tracks the wakeup latency of the\nhighest priority waking task.\n\n  \"wakeup\" is added to /debugfs/tracing/available_tracers\n\nAlso added to /debugfs/tracing\n\n  tracing_max_latency\n     holds the current max latency for the wakeup\n\n  wakeup_thresh\n     if set to other than zero, a log will be recorded\n     for every wakeup that takes longer than the number\n     entered in here (usecs for all counters)\n     (deletes previous trace)\n\nExamples:\n\n  (with ftrace_enabled \u003d 0)\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\npreemption latency trace v1.1.5 on 2.6.24-rc8\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n--------------------------------------------------------------------\n latency: 26 us, #2/2, CPU#1 | (M:rt VP:0, KP:0, SP:0 HP:0 #P:2)\n    -----------------\n    | task: migration/0-3 (uid:0 nice:-5 policy:1 rt_prio:99)\n    -----------------\n\n                 _------\u003d\u003e CPU#\n                / _-----\u003d\u003e irqs-off\n               | / _----\u003d\u003e need-resched\n               || / _---\u003d\u003e hardirq/softirq\n               ||| / _--\u003d\u003e preempt-depth\n               |||| /\n               |||||     delay\n   cmd     pid ||||| time  |   caller\n      \\   /    |||||   \\   |   /\n   quilt-8551  0d..3    0us+: wake_up_process+0x15/0x17 \u003cffffffff80233e80\u003e (sched_exec+0xc9/0x100 \u003cffffffff80235343\u003e)\n   quilt-8551  0d..4   26us : sched_switch_callback+0x73/0x81 \u003cffffffff80338d2f\u003e (schedule+0x483/0x6d5 \u003cffffffff8048b3ee\u003e)\n\nvim:ft\u003dhelp\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n  (with ftrace_enabled \u003d 1)\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\npreemption latency trace v1.1.5 on 2.6.24-rc8\n--------------------------------------------------------------------\n latency: 36 us, #45/45, CPU#0 | (M:rt VP:0, KP:0, SP:0 HP:0 #P:2)\n    -----------------\n    | task: migration/1-5 (uid:0 nice:-5 policy:1 rt_prio:99)\n    -----------------\n\n                 _------\u003d\u003e CPU#\n                / _-----\u003d\u003e irqs-off\n               | / _----\u003d\u003e need-resched\n               || / _---\u003d\u003e hardirq/softirq\n               ||| / _--\u003d\u003e preempt-depth\n               |||| /\n               |||||     delay\n   cmd     pid ||||| time  |   caller\n      \\   /    |||||   \\   |   /\n    bash-10653 1d..3    0us : wake_up_process+0x15/0x17 \u003cffffffff80233e80\u003e (sched_exec+0xc9/0x100 \u003cffffffff80235343\u003e)\n    bash-10653 1d..3    1us : try_to_wake_up+0x271/0x2e7 \u003cffffffff80233dcf\u003e (sub_preempt_count+0xc/0x7a \u003cffffffff8023309e\u003e)\n    bash-10653 1d..2    2us : try_to_wake_up+0x296/0x2e7 \u003cffffffff80233df4\u003e (update_rq_clock+0x9/0x20 \u003cffffffff802303f3\u003e)\n    bash-10653 1d..2    2us : update_rq_clock+0x1e/0x20 \u003cffffffff80230408\u003e (__update_rq_clock+0xc/0x90 \u003cffffffff80230366\u003e)\n    bash-10653 1d..2    3us : __update_rq_clock+0x1b/0x90 \u003cffffffff80230375\u003e (sched_clock+0x9/0x29 \u003cffffffff80214529\u003e)\n    bash-10653 1d..2    4us : try_to_wake_up+0x2a6/0x2e7 \u003cffffffff80233e04\u003e (activate_task+0xc/0x3f \u003cffffffff8022ffca\u003e)\n    bash-10653 1d..2    4us : activate_task+0x2d/0x3f \u003cffffffff8022ffeb\u003e (enqueue_task+0xe/0x66 \u003cffffffff8022ff66\u003e)\n    bash-10653 1d..2    5us : enqueue_task+0x5b/0x66 \u003cffffffff8022ffb3\u003e (enqueue_task_rt+0x9/0x3c \u003cffffffff80233351\u003e)\n    bash-10653 1d..2    6us : try_to_wake_up+0x2ba/0x2e7 \u003cffffffff80233e18\u003e (check_preempt_wakeup+0x12/0x99 \u003cffffffff80234f84\u003e)\n[...]\n    bash-10653 1d..5   33us : tracing_record_cmdline+0xcf/0xd4 \u003cffffffff80338aad\u003e (_spin_unlock+0x9/0x33 \u003cffffffff8048d3ec\u003e)\n    bash-10653 1d..5   34us : _spin_unlock+0x19/0x33 \u003cffffffff8048d3fc\u003e (sub_preempt_count+0xc/0x7a \u003cffffffff8023309e\u003e)\n    bash-10653 1d..4   35us : wakeup_sched_switch+0x65/0x2ff \u003cffffffff80339f66\u003e (_spin_lock_irqsave+0xc/0xa9 \u003cffffffff8048d08b\u003e)\n    bash-10653 1d..4   35us : _spin_lock_irqsave+0x19/0xa9 \u003cffffffff8048d098\u003e (add_preempt_count+0xe/0x77 \u003cffffffff8023311a\u003e)\n    bash-10653 1d..4   36us : sched_switch_callback+0x73/0x81 \u003cffffffff80338d2f\u003e (schedule+0x483/0x6d5 \u003cffffffff8048b3ee\u003e)\n\nvim:ft\u003dhelp\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe [...] was added here to not waste your email box space.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "35e8e302e5d6e32675df2fc1dd3a53dfa6630dc1",
      "tree": "5b5b503666d882bbb4d805b7b20b4f3b11d2c40e",
      "parents": [
        "1b29b01887e6032dcaf818c14999c7a39593b4e7"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:32:27 2008 +0200"
      },
      "message": "ftrace: add tracing of context switches\n\nThis patch adds context switch tracing, of the format of:\n\n                  _------\u003d\u003e CPU#\n                 / _-----\u003d\u003e irqs-off\n                | / _----\u003d\u003e need-resched\n                || / _---\u003d\u003e hardirq/softirq\n                ||| / _--\u003d\u003e preempt-depth\n                |||| /\n                |||||     delay\n    cmd     pid ||||| time  |      pid:prio:state\n       \\   /    |||||   \\   |      /\n  swapper-0     1d..3    137us+:  0:140:R --\u003e 2912:120\n     sshd-2912  1d..3    216us+:  2912:120:S --\u003e 0:140\n  swapper-0     1d..3    261us+:  0:140:R --\u003e 2912:120\n     bash-2920  0d..3    267us+:  2920:120:S --\u003e 0:140\n     sshd-2912  1d..3    330us!:  2912:120:S --\u003e 0:140\n  swapper-0     1d..3   2389us+:  0:140:R --\u003e 2847:120\n yum-upda-2847  1d..3   2411us!:  2847:120:S --\u003e 0:140\n  swapper-0     0d..3  11089us+:  0:140:R --\u003e 3139:120\n gdm-bina-3139  0d..3  11113us!:  3139:120:S --\u003e 0:140\n  swapper-0     1d..3 102328us+:  0:140:R --\u003e 2847:120\n yum-upda-2847  1d..3 102348us!:  2847:120:S --\u003e 0:140\n\n \"sched_switch\" is added to /debugfs/tracing/available_tracers\n\n[ Eugene Teo \u003ceugeneteo@kernel.sg: remove unused tracing_sched_switch_enabled ]\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "1b29b01887e6032dcaf818c14999c7a39593b4e7",
      "tree": "6bcef64d5a7822b0f259a52b852af8cade6b3468",
      "parents": [
        "bc0c38d139ec7fcd5c030aea16b008f3732e42ac"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:32:13 2008 +0200"
      },
      "message": "ftrace: function tracer\n\nThis is a simple trace that uses the ftrace infrastructure. It is\ndesigned to be fast and small, and easy to use. It is useful to\nrecord things that happen over a very short period of time, and\nnot to analyze the system in general.\n\n Updates:\n\n  available_tracers\n     \"function\" is added to this file.\n\n  current_tracer\n    To enable the function tracer:\n\n      echo function \u003e /debugfs/tracing/current_tracer\n\n     To disable the tracer:\n\n       echo disable \u003e /debugfs/tracing/current_tracer\n\nThe output of the function_trace file is as follows\n\n  \"echo noverbose \u003e /debugfs/tracing/iter_ctrl\"\n\npreemption latency trace v1.1.5 on 2.6.24-rc7-tst\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n--------------------------------------------------------------------\n latency: 0 us, #419428/4361791, CPU#1 | (M:desktop VP:0, KP:0, SP:0 HP:0 #P:4)\n    -----------------\n    | task: -0 (uid:0 nice:0 policy:0 rt_prio:0)\n    -----------------\n\n                 _------\u003d\u003e CPU#\n                / _-----\u003d\u003e irqs-off\n               | / _----\u003d\u003e need-resched\n               || / _---\u003d\u003e hardirq/softirq\n               ||| / _--\u003d\u003e preempt-depth\n               |||| /\n               |||||     delay\n   cmd     pid ||||| time  |   caller\n      \\   /    |||||   \\   |   /\n swapper-0     0d.h. 1595128us+: set_normalized_timespec+0x8/0x2d \u003cc043841d\u003e (ktime_get_ts+0x4a/0x4e \u003cc04499d4\u003e)\n swapper-0     0d.h. 1595131us+: _spin_lock+0x8/0x18 \u003cc0630690\u003e (hrtimer_interrupt+0x6e/0x1b0 \u003cc0449c56\u003e)\n\nOr with verbose turned on:\n\n  \"echo verbose \u003e /debugfs/tracing/iter_ctrl\"\n\npreemption latency trace v1.1.5 on 2.6.24-rc7-tst\n--------------------------------------------------------------------\n latency: 0 us, #419428/4361791, CPU#1 | (M:desktop VP:0, KP:0, SP:0 HP:0 #P:4)\n    -----------------\n    | task: -0 (uid:0 nice:0 policy:0 rt_prio:0)\n    -----------------\n\n         swapper     0 0 9 00000000 00000000 [f3675f41] 1595.128ms (+0.003ms): set_normalized_timespec+0x8/0x2d \u003cc043841d\u003e (ktime_get_ts+0x4a/0x4e \u003cc04499d4\u003e)\n         swapper     0 0 9 00000000 00000001 [f3675f45] 1595.131ms (+0.003ms): _spin_lock+0x8/0x18 \u003cc0630690\u003e (hrtimer_interrupt+0x6e/0x1b0 \u003cc0449c56\u003e)\n         swapper     0 0 9 00000000 00000002 [f3675f48] 1595.135ms (+0.003ms): _spin_lock+0x8/0x18 \u003cc0630690\u003e (hrtimer_interrupt+0x6e/0x1b0 \u003cc0449c56\u003e)\n\nThe \"trace\" file is not affected by the verbose mode, but is by the symonly.\n\n echo \"nosymonly\" \u003e /debugfs/tracing/iter_ctrl\n\ntracer:\n[   81.479967] CPU 0: bash:3154 register_ftrace_function+0x5f/0x66 \u003cffffffff80337a4d\u003e \u003c-- _spin_unlock_irqrestore+0xe/0x5a \u003cffffffff8048cc8f\u003e\n[   81.479967] CPU 0: bash:3154 _spin_unlock_irqrestore+0x3e/0x5a \u003cffffffff8048ccbf\u003e \u003c-- sub_preempt_count+0xc/0x7a \u003cffffffff80233d7b\u003e\n[   81.479968] CPU 0: bash:3154 sub_preempt_count+0x30/0x7a \u003cffffffff80233d9f\u003e \u003c-- in_lock_functions+0x9/0x24 \u003cffffffff8025a75d\u003e\n[   81.479968] CPU 0: bash:3154 vfs_write+0x11d/0x155 \u003cffffffff8029a043\u003e \u003c-- dnotify_parent+0x12/0x78 \u003cffffffff802d54fb\u003e\n[   81.479968] CPU 0: bash:3154 dnotify_parent+0x2d/0x78 \u003cffffffff802d5516\u003e \u003c-- _spin_lock+0xe/0x70 \u003cffffffff8048c910\u003e\n[   81.479969] CPU 0: bash:3154 _spin_lock+0x1b/0x70 \u003cffffffff8048c91d\u003e \u003c-- add_preempt_count+0xe/0x77 \u003cffffffff80233df7\u003e\n[   81.479969] CPU 0: bash:3154 add_preempt_count+0x3e/0x77 \u003cffffffff80233e27\u003e \u003c-- in_lock_functions+0x9/0x24 \u003cffffffff8025a75d\u003e\n\n echo \"symonly\" \u003e /debugfs/tracing/iter_ctrl\n\ntracer:\n[   81.479913] CPU 0: bash:3154 register_ftrace_function+0x5f/0x66 \u003c-- _spin_unlock_irqrestore+0xe/0x5a\n[   81.479913] CPU 0: bash:3154 _spin_unlock_irqrestore+0x3e/0x5a \u003c-- sub_preempt_count+0xc/0x7a\n[   81.479913] CPU 0: bash:3154 sub_preempt_count+0x30/0x7a \u003c-- in_lock_functions+0x9/0x24\n[   81.479914] CPU 0: bash:3154 vfs_write+0x11d/0x155 \u003c-- dnotify_parent+0x12/0x78\n[   81.479914] CPU 0: bash:3154 dnotify_parent+0x2d/0x78 \u003c-- _spin_lock+0xe/0x70\n[   81.479914] CPU 0: bash:3154 _spin_lock+0x1b/0x70 \u003c-- add_preempt_count+0xe/0x77\n[   81.479914] CPU 0: bash:3154 add_preempt_count+0x3e/0x77 \u003c-- in_lock_functions+0x9/0x24\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "bc0c38d139ec7fcd5c030aea16b008f3732e42ac",
      "tree": "adaaf5e2ca49bbd7025bc357f87df9cb47641022",
      "parents": [
        "16444a8a40d4c7b4f6de34af0cae1f76a4f6c901"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:32:06 2008 +0200"
      },
      "message": "ftrace: latency tracer infrastructure\n\nThis patch adds the latency tracer infrastructure. This patch\ndoes not add anything that will select and turn it on, but will\nbe used by later patches.\n\nIf it were to be compiled, it would add the following files\nto the debugfs:\n\n The root tracing directory:\n\n  /debugfs/tracing/\n\nThis patch also adds the following files:\n\n  available_tracers\n     list of available tracers. Currently no tracers are\n     available. Looking into this file only shows\n     \"none\" which is used to unregister all tracers.\n\n  current_tracer\n     The trace that is currently active. Empty on start up.\n     To switch to a tracer simply echo one of the tracers that\n     are listed in available_tracers:\n\n   example: (used with later patches)\n\n      echo function \u003e /debugfs/tracing/current_tracer\n\n     To disable the tracer:\n\n       echo disable \u003e /debugfs/tracing/current_tracer\n\n  tracing_enabled\n     echoing \"1\" into this file starts the ftrace function tracing\n      (if sysctl kernel.ftrace_enabled\u003d1)\n     echoing \"0\" turns it off.\n\n  latency_trace\n      This file is readonly and holds the result of the trace.\n\n  trace\n      This file outputs a easier to read version of the trace.\n\n  iter_ctrl\n      Controls the way the output of traces look.\n      So far there\u0027s two controls:\n        echoing in \"symonly\" will only show the kallsyms variables\n            without the addresses (if kallsyms was configured)\n        echoing in \"verbose\" will change the output to show\n            a lot more data, but not very easy to understand by\n            humans.\n        echoing in \"nosymonly\" turns off symonly.\n        echoing in \"noverbose\" turns off verbose.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "16444a8a40d4c7b4f6de34af0cae1f76a4f6c901",
      "tree": "9c290bcdbdc1ecf8f578c30b3b36914e14fdaacc",
      "parents": [
        "6e766410c4babd37bc7cd5e25009c179781742c8"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:31:58 2008 +0200"
      },
      "message": "ftrace: add basic support for gcc profiler instrumentation\n\nIf CONFIG_FTRACE is selected and /proc/sys/kernel/ftrace_enabled is\nset to a non-zero value the ftrace routine will be called everytime\nwe enter a kernel function that is not marked with the \"notrace\"\nattribute.\n\nThe ftrace routine will then call a registered function if a function\nhappens to be registered.\n\n[ This code has been highly hacked by Steven Rostedt and Ingo Molnar,\n  so don\u0027t blame Arnaldo for all of this ;-) ]\n\nUpdate:\n  It is now possible to register more than one ftrace function.\n  If only one ftrace function is registered, that will be the\n  function that ftrace calls directly. If more than one function\n  is registered, then ftrace will call a function that will loop\n  through the functions to call.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    }
  ]
}
