)]}'
{
  "log": [
    {
      "commit": "a8fb2608053547bc3152ea61a5ec7cdfce5d942c",
      "tree": "08f5fd61dd3fce05a2472f457c48ec249966b372",
      "parents": [
        "d11007703c31db534674ebeeb9eb047bbbe758bd"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jun 10 14:53:16 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jun 10 20:56:54 2010 -0400"
      },
      "message": "perf/tracing: Fix regression of perf losing kprobe events\n\nWith the addition of the code to shrink the kernel tracepoint\ninfrastructure, we lost kprobes being traced by perf. The reason\nis that I tested if the \"tp_event-\u003eclass-\u003eperf_probe\" existed before\nenabling it. This prevents \"ftrace only\" events (like the function\ntrace events) from being enabled by perf.\n\nUnfortunately, kprobe events do not use perf_probe. This causes\nkprobes to be missed by perf. To fix this, we add the test to\nsee if \"tp_event-\u003eclass-\u003ereg\" exists as well as perf_probe.\n\nNormal trace events have only \"perf_probe\" but no \"reg\" function,\nand kprobes and syscalls have the \"reg\" but no \"perf_probe\".\nThe ftrace unique events do not have either, so this is a valid\ntest. If a kprobe or syscall is not to be probed by perf, the\n\"reg\" function is called anyway, and will return a failure and\nprevent perf from probing it.\n\nReported-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nTested-by: Srikar Dronamraju \u003csrikar@linux.vnet.ibm.com\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "546cf44a1b507c1cbb5cf42bbe6169780567f36f",
      "tree": "ab0373b82198dcae5870fa2af1916102894069f1",
      "parents": [
        "74048f895fa8cbf8119b4999f1f44881a825f954"
      ],
      "author": {
        "name": "Randy Dunlap",
        "email": "randy.dunlap@oracle.com",
        "time": "Sat May 29 11:45:07 2010 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 31 09:58:20 2010 +0200"
      },
      "message": "blktrace: Fix new kernel-doc warnings\n\nFix blktrace.c kernel-doc warnings:\n Warning(kernel/trace/blktrace.c:858): No description found for parameter \u0027ignore\u0027\n Warning(kernel/trace/blktrace.c:890): No description found for parameter \u0027ignore\u0027\n\nSigned-off-by: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Jens Axboe \u003cjens.axboe@oracle.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c20100529114507.c466fc1e.randy.dunlap@oracle.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2e97942fe57864588774f173cf4cd7bb68968b76",
      "tree": "bf0eeda8c13a6e851ad755b7114ceaa82c51fd97",
      "parents": [
        "3771f0771154675d4a0ca780be2411f3cc357208"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri May 21 16:22:33 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 31 08:46:09 2010 +0200"
      },
      "message": "perf_events, trace: Fix perf_trace_destroy(), mutex went missing\n\nSteve spotted I forgot to do the destroy under event_mutex.\n\nReported-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1274451913.1674.1707.camel@laptop\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3771f0771154675d4a0ca780be2411f3cc357208",
      "tree": "106512f307e2aa0a89f92c01598d5fa75903af47",
      "parents": [
        "8a49542c0554af7d0073aac0ee73ee65b807ef34"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri May 21 12:31:09 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 31 08:46:09 2010 +0200"
      },
      "message": "perf_events, trace: Fix probe unregister race\n\ntracepoint_probe_unregister() does not synchronize against the probe\ncallbacks, so do that explicitly. This properly serializes the callbacks\nand the free of the data used therein.\n\nAlso, use this_cpu_ptr() where possible.\n\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1274438476.1674.1702.camel@laptop\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bc7d352c5e76c74c628a39b99777a1bdddde5e81",
      "tree": "3cc0a80defb54d284e2a9a1e69b1224064921775",
      "parents": [
        "b3f2f6cd1ff935ecac9a5346904b899d7af689fe",
        "92af1abde4f2d74c9e5f7b670a1971779ed0b051"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 12:35:01 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun May 30 12:35:01 2010 -0700"
      },
      "message": "Merge branch \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  perf tui: Fix last use_browser problem related to .perfconfig\n  perf symbols: Add the build id cache to the vmlinux path\n  perf tui: Reset use_browser if stdout is not a tty\n  ring-buffer: Move zeroing out excess in page to ring buffer code\n  ring-buffer: Reset \"real_end\" when page is filled\n"
    },
    {
      "commit": "c5617b200ac52e35f7e8cf05a17b0a2d50f6b3e9",
      "tree": "40d5e99660c77c5791392d349a93113c044dbf14",
      "parents": [
        "cad719d86e9dbd06634eaba6401e022c8101d6b2",
        "49c177461bfbedeccbab22bf3905db2f9da7f1c3"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 15:23:47 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu May 27 15:23:47 2010 -0700"
      },
      "message": "Merge branch \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (61 commits)\n  tracing: Add __used annotation to event variable\n  perf, trace: Fix !x86 build bug\n  perf report: Support multiple events on the TUI\n  perf annotate: Fix up usage of the build id cache\n  x86/mmiotrace: Remove redundant instruction prefix checks\n  perf annotate: Add TUI interface\n  perf tui: Remove annotate from popup menu after failure\n  perf report: Don\u0027t start the TUI if -D is used\n  perf: Fix getline undeclared\n  perf: Optimize perf_tp_event_match()\n  perf: Remove more code from the fastpath\n  perf: Optimize the !vmalloc backed buffer\n  perf: Optimize perf_output_copy()\n  perf: Fix wakeup storm for RO mmap()s\n  perf-record: Share per-cpu buffers\n  perf-record: Remove -M\n  perf: Ensure that IOC_OUTPUT isn\u0027t used to create multi-writer buffers\n  perf, trace: Optimize tracepoints by using per-tracepoint-per-cpu hlist to track events\n  perf, trace: Optimize tracepoints by removing IRQ-disable from perf/tracepoint interaction\n  perf tui: Allow disabling the TUI on a per command basis in ~/.perfconfig\n  ...\n"
    },
    {
      "commit": "2711ca237a084286ea1c2dcf82ab2aadab23a00d",
      "tree": "a795fa0e31e8557befd803153a33827b1d0c8764",
      "parents": [
        "b3230c8b44da5838cf396942d5c1ab19f8e8f720"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 21 13:32:26 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 25 11:57:26 2010 -0400"
      },
      "message": "ring-buffer: Move zeroing out excess in page to ring buffer code\n\nCurrently the trace splice code zeros out the excess bytes in the page before\nsending it off to userspace.\n\nThis is to make sure userspace is not getting anything it should not be\nwhen reading the pages, because the excess data was never initialized\nto zero before writing (for perfomance reasons).\n\nBut the splice code has no business in doing this work, it should be\ndone by the ring buffer. With the latest changes for recording lost\nevents, the splice code gets it wrong anyway.\n\nMove the zeroing out of excess bytes into the ring buffer code.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b3230c8b44da5838cf396942d5c1ab19f8e8f720",
      "tree": "21a212bb598da40cdb936f7b4492d9b05895d4fc",
      "parents": [
        "49c177461bfbedeccbab22bf3905db2f9da7f1c3"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 21 11:55:21 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 25 11:57:24 2010 -0400"
      },
      "message": "ring-buffer: Reset \"real_end\" when page is filled\n\nThe code to store the \"lost events\" requires knowing the real end\nof the page. Since the \u0027commit\u0027 includes the padding at the end of\na page a \"real_end\" variable was used to keep track of the end not\nincluding the padding.\n\nIf events were lost, the reader can place the count of events in\nthe padded area if there is enough room.\n\nThe bug this patch fixes is that when we fill the page we do not\nreset the real_end variable, and if the writer had wrapped a few\ntimes, the real_end would be incorrect.\n\nThis patch simply resets the real_end if the page was filled.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "87f44bbc246c5244c76a701f8eefba7788bce64a",
      "tree": "1370af780bf3bae9e025766f5bbfa9418bb8b68b",
      "parents": [
        "d67f088e084755bdceb4f15bc6e05e309db1eea7"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Tue May 25 11:02:55 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue May 25 11:28:49 2010 +0200"
      },
      "message": "perf, trace: Fix !x86 build bug\n\nPatch b7e2ecef92 (perf, trace: Optimize tracepoints by removing\nIRQ-disable from perf/tracepoint interaction) made the\nunfortunate mistake of assuming the world is x86 only, correct\nthis.\n\nThe problem was that perf_fetch_caller_regs() did\nlocal_save_flags() into regs-\u003eflags, and I re-used that to\nremove another local_save_flags(), forgetting !x86 doesn\u0027t have\nregs-\u003eflags.\n\nDo the reverse, remove the local_save_flags() from\nperf_fetch_caller_regs() and let the ftrace site do the\nlocal_save_flags() instead.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: acme@redhat.com\nCc: efault@gmx.de\nCc: fweisbec@gmail.com\nCc: rostedt@goodmis.org\nLKML-Reference: \u003c1274778175.5882.623.camel@twins\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ee9a3607fb03e804ddf624544105f4e34260c380",
      "tree": "ce41b6e0fa10982a306f6c142a92dbf3c9961284",
      "parents": [
        "b492e95be0ae672922f4734acf3f5d35c30be948",
        "d515e86e639890b33a09390d062b0831664f04a2"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 21:27:26 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 21:27:26 2010 +0200"
      },
      "message": "Merge branch \u0027master\u0027 into for-2.6.35\n\nConflicts:\n\tfs/ext3/fsync.c\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "35f3d14dbbc58447c61e38a162ea10add6b31dc7",
      "tree": "3e03cd540b7dcdac82195c4e76862c0ce6daaaf0",
      "parents": [
        "3d42b3612891baecf709d93f28655a6882a65d41"
      ],
      "author": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Thu May 20 10:43:18 2010 +0200"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Fri May 21 21:12:40 2010 +0200"
      },
      "message": "pipe: add support for shrinking and growing pipes\n\nThis patch adds F_GETPIPE_SZ and F_SETPIPE_SZ fcntl() actions for\ngrowing and shrinking the size of a pipe and adjusts pipe.c and splice.c\n(and relay and network splice) usage to work with these larger (or smaller)\npipes.\n\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ff5f149b6aec8edbfa3698721667acd043009a33",
      "tree": "d052553eb296dfee3f01b1cb2b717cb7ccf3127a",
      "parents": [
        "f0218b3e9974f06014b61be8987159f4a20e011e",
        "580d607cd666dfabfc1c7b0fb08c8ac690c7c87f"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 21 11:49:57 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 21 11:49:57 2010 -0400"
      },
      "message": "Merge branch \u0027perf/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip into trace/tip/tracing/core-7\n\nConflicts:\n\tinclude/linux/ftrace_event.h\n\tinclude/trace/ftrace.h\n\tkernel/trace/trace_event_perf.c\n\tkernel/trace/trace_kprobe.c\n\tkernel/trace/trace_syscalls.c\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "33cf23b0a535475aead57707cb9f4fe135a93544",
      "tree": "67e14f77f0eeab847a26a6cbfcb44eecb5fa2fda",
      "parents": [
        "7a9b149212f3716c598afe973b6261fd58453b7a",
        "95bb335c0ebe96afe926387a1ef3a096bd884a82"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:19:18 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri May 21 07:19:18 2010 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (182 commits)\n  [SCSI] aacraid: add an ifdef\u0027d device delete case instead of taking the device offline\n  [SCSI] aacraid: prohibit access to array container space\n  [SCSI] aacraid: add support for handling ATA pass-through commands.\n  [SCSI] aacraid: expose physical devices for models with newer firmware\n  [SCSI] aacraid: respond automatically to volumes added by config tool\n  [SCSI] fcoe: fix fcoe module ref counting\n  [SCSI] libfcoe: FIP Keep-Alive messages for VPorts are sent with incorrect port_id and wwn\n  [SCSI] libfcoe: Fix incorrect MAC address clearing\n  [SCSI] fcoe: fix a circular locking issue with rtnl and sysfs mutex\n  [SCSI] libfc: Move the port_id into lport\n  [SCSI] fcoe: move link speed checking into its own routine\n  [SCSI] libfc: Remove extra pointer check\n  [SCSI] libfc: Remove unused fc_get_host_port_type\n  [SCSI] fcoe: fixes wrong error exit in fcoe_create\n  [SCSI] libfc: set seq_id for incoming sequence\n  [SCSI] qla2xxx: Updates to ISP82xx support.\n  [SCSI] qla2xxx: Optionally disable target reset.\n  [SCSI] qla2xxx: ensure flash operation and host reset via sg_reset are mutually exclusive\n  [SCSI] qla2xxx: Silence bogus warning by gcc for wrap and did.\n  [SCSI] qla2xxx: T10 DIF support added.\n  ...\n"
    },
    {
      "commit": "1c024eca51fdc965290acf342ae16a476c2189d0",
      "tree": "28dc160cc70a20eeb8b8825d6d52ea88a6188413",
      "parents": [
        "b7e2ecef92d2e7785e6d76b41e5ba8bcbc45259d"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed May 19 14:02:22 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri May 21 11:37:56 2010 +0200"
      },
      "message": "perf, trace: Optimize tracepoints by using per-tracepoint-per-cpu hlist to track events\n\nAvoid the swevent hash-table by using per-tracepoint\nhlists.\n\nAlso, avoid conditionals on the fast path by ordering\nwith probe unregister so that we should never get on\nthe callback path without the data being there.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c20100521090710.473188012@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b7e2ecef92d2e7785e6d76b41e5ba8bcbc45259d",
      "tree": "341c3a03743108bbdf82ee0eed9f4c4085f1b694",
      "parents": [
        "1c34bde13a3cdcd4c7c6322f8052e67c2c91caf1"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed May 19 10:52:27 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri May 21 11:37:56 2010 +0200"
      },
      "message": "perf, trace: Optimize tracepoints by removing IRQ-disable from perf/tracepoint interaction\n\nImproves performance.\n\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c1274259525.5605.10352.camel@twins\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "dfacc4d6c98b89609250269f518c1f54c30454ef",
      "tree": "e7effbee7bdc85d18f7b26ab9cb5c9f700d1481a",
      "parents": [
        "f869097e884d8cb65b2bb7831ca57b7dffb66fdd",
        "85cb68b27c428d477169f3aa46c72dba103a17bd"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 20 14:38:55 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 20 14:38:55 2010 +0200"
      },
      "message": "Merge branch \u0027perf/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into perf/core\n"
    },
    {
      "commit": "4f41c013f553957765902fb01475972f0af3e8e7",
      "tree": "ddaa54947cc990094a4b270f2f8b3d6da195044f",
      "parents": [
        "ef4f30f54e265c2f6f9ac9eda4db158a4e16050b"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue May 18 18:08:32 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue May 18 18:35:46 2010 +0200"
      },
      "message": "perf/ftrace: Optimize perf/tracepoint interaction for single events\n\nWhen we\u0027ve got but a single event per tracepoint\nthere is no reason to try and multiplex it so don\u0027t.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nTested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "752f114fb83c5839de37a250b4f8257ed5438341",
      "tree": "c565c3b6670d21ad7f5cd6cdda5864a76d3f2e0c",
      "parents": [
        "b8ae30ee26d379db436b0b8c8c3ff1b52f69e5d1",
        "ad56b0797e67df5e04b2f1a1e02900145c5c16f2"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 08:35:04 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 08:35:04 2010 -0700"
      },
      "message": "Merge branch \u0027tracing-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  tracing: Fix \"integer as NULL pointer\" warning.\n  tracing: Fix tracepoint.h DECLARE_TRACE() to allow more than one header\n  tracing: Make the documentation clear on trace_event boot option\n  ring-buffer: Wrap open-coded WARN_ONCE\n  tracing: Convert nop macros to static inlines\n  tracing: Fix sleep time function profiling\n  tracing: Show sample std dev in function profiling\n  tracing: Add documentation for trace commands mod, traceon/traceoff\n  ring-buffer: Make benchmark handle missed events\n  ring-buffer: Make non-consuming read less expensive with lots of cpus.\n  tracing: Add graph output support for irqsoff tracer\n  tracing: Have graph flags passed in to ouput functions\n  tracing: Add ftrace events for graph tracer\n  tracing: Dump either the oops\u0027s cpu source or all cpus buffers\n  tracing: Fix uninitialized variable of tracing/trace output\n"
    },
    {
      "commit": "b8ae30ee26d379db436b0b8c8c3ff1b52f69e5d1",
      "tree": "506aa0b4bdbf90f61e7e9261c7db90aa1452dcce",
      "parents": [
        "4d7b4ac22fbec1a03206c6cde353f2fd6942f828",
        "9c6f7e43b4e02c161b53e97ba913855246876c61"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 08:27:54 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 08:27:54 2010 -0700"
      },
      "message": "Merge branch \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027sched-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (49 commits)\n  stop_machine: Move local variable closer to the usage site in cpu_stop_cpu_callback()\n  sched, wait: Use wrapper functions\n  sched: Remove a stale comment\n  ondemand: Make the iowait-is-busy time a sysfs tunable\n  ondemand: Solve a big performance issue by counting IOWAIT time as busy\n  sched: Intoduce get_cpu_iowait_time_us()\n  sched: Eliminate the ts-\u003eidle_lastupdate field\n  sched: Fold updating of the last_update_time_info into update_ts_time_stats()\n  sched: Update the idle statistics in get_cpu_idle_time_us()\n  sched: Introduce a function to update the idle statistics\n  sched: Add a comment to get_cpu_idle_time_us()\n  cpu_stop: add dummy implementation for UP\n  sched: Remove rq argument to the tracepoints\n  rcu: need barrier() in UP synchronize_sched_expedited()\n  sched: correctly place paranioa memory barriers in synchronize_sched_expedited()\n  sched: kill paranoia check in synchronize_sched_expedited()\n  sched: replace migration_thread with cpu_stop\n  stop_machine: reimplement using cpu_stop\n  cpu_stop: implement stop_cpu[s]()\n  sched: Fix select_idle_sibling() logic in select_task_rq_fair()\n  ...\n"
    },
    {
      "commit": "4d7b4ac22fbec1a03206c6cde353f2fd6942f828",
      "tree": "2d96a9e9c28cf6fa628a278decc00ad55a8b043b",
      "parents": [
        "3aaf51ace5975050ab43c7d4d7e439e0ae7d13d7",
        "94f3ca95787ada3d64339a4ecb2754236ab563f6"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 08:19:03 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 08:19:03 2010 -0700"
      },
      "message": "Merge branch \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (311 commits)\n  perf tools: Add mode to build without newt support\n  perf symbols: symbol inconsistency message should be done only at verbose\u003d1\n  perf tui: Add explicit -lslang option\n  perf options: Type check all the remaining OPT_ variants\n  perf options: Type check OPT_BOOLEAN and fix the offenders\n  perf options: Check v type in OPT_U?INTEGER\n  perf options: Introduce OPT_UINTEGER\n  perf tui: Add workaround for slang \u003c 2.1.4\n  perf record: Fix bug mismatch with -c option definition\n  perf options: Introduce OPT_U64\n  perf tui: Add help window to show key associations\n  perf tui: Make \u003c- exit menus too\n  perf newt: Add single key shortcuts for zoom into DSO and threads\n  perf newt: Exit browser unconditionally when CTRL+C, q or Q is pressed\n  perf newt: Fix the \u0027A\u0027/\u0027a\u0027 shortcut for annotate\n  perf newt: Make \u003c- exit the ui_browser\n  x86, perf: P4 PMU - fix counters management logic\n  perf newt: Make \u003c- zoom out filters\n  perf report: Report number of events, not samples\n  perf hist: Clarify events_stats fields usage\n  ...\n\nFix up trivial conflicts in kernel/fork.c and tools/perf/builtin-record.c\n"
    },
    {
      "commit": "f0218b3e9974f06014b61be8987159f4a20e011e",
      "tree": "29a593c4d71ab18cb0c450a34e79bf6bea66877e",
      "parents": [
        "1eaa4787a774c4896518c81f24e8bccaa2244924",
        "9d192e118a094087494997ea1c8a2faf39af38c5"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 17 22:26:53 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 18 00:35:23 2010 -0400"
      },
      "message": "Merge branch \u0027perf/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip into trace/tip/tracing/core-6\n\nConflicts:\n\tinclude/trace/ftrace.h\n\tkernel/trace/trace_kprobe.c\n\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e1f7992e015ae1373d66c8068d0a45e4111a0aed",
      "tree": "8d4ce98a0039a5ab13e72f1c1862a595be1d9987",
      "parents": [
        "553552ce1796c32cf4e3d4f45cd5b537de91dd1d"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon May 10 11:23:00 2010 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 14 14:33:24 2010 -0400"
      },
      "message": "tracing: Fix function declarations if !CONFIG_STACKTRACE\n\nftrace_trace_stack() and frace_trace_userstacke() take a\nstruct ring_buffer argument, not struct trace_array. Commit\ne77405ad(\"tracing: pass around ring buffer instead of tracer\")\nmade this change.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4BE77C14.5010806@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "553552ce1796c32cf4e3d4f45cd5b537de91dd1d",
      "tree": "a65defc1055bcc3e9f34327d2cc59704e536948b",
      "parents": [
        "32c0edaeaad74a7883e736ae0f3798784cfc2a80"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Apr 23 11:12:36 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 14 14:33:22 2010 -0400"
      },
      "message": "tracing: Combine event filter_active and enable into single flags field\n\nThe filter_active and enable both use an int (4 bytes each) to\nset a single flag. We can save 4 bytes per event by combining the\ntwo into a single integer.\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n4913961\t1088356\t 861512\t6863829\t 68bbd5\tvmlinux.orig\n4894944\t1018052\t 861512\t6774508\t 675eec\tvmlinux.id\n4894871\t1012292\t 861512\t6768675\t 674823\tvmlinux.flags\n\nThis gives us another 5K in savings.\n\nThe modification of both the enable and filter fields are done\nunder the event_mutex, so it is still safe to combine the two.\n\nNote: Although Mathieu gave his Acked-by, he would like it documented\n that the reads of flags are not protected by the mutex. The way the\n code works, these reads will not break anything, but will have a\n residual effect. Since this behavior is the same even before this\n patch, describing this situation is left to another patch, as this\n patch does not change the behavior, but just brought it to Mathieu\u0027s\n attention.\n\nv2: Updated the event trace self test to for this change.\n\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "32c0edaeaad74a7883e736ae0f3798784cfc2a80",
      "tree": "e70784ed690172cb0f1b4365b93aa077d40219c9",
      "parents": [
        "80decc70afc57c87eee9d6b836aec2ecacba3457"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Apr 23 10:38:03 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 14 14:33:15 2010 -0400"
      },
      "message": "tracing: Remove duplicate id information in event structure\n\nNow that the trace_event structure is embedded in the ftrace_event_call\nstructure, there is no need for the ftrace_event_call id field.\nThe id field is the same as the trace_event type field.\n\nRemoving the id and re-arranging the structure brings down the tracepoint\nfootprint by another 5K.\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n4913961\t1088356\t 861512\t6863829\t 68bbd5\tvmlinux.orig\n4895024\t1023812\t 861512\t6780348\t 6775bc\tvmlinux.print\n4894944\t1018052\t 861512\t6774508\t 675eec\tvmlinux.id\n\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "80decc70afc57c87eee9d6b836aec2ecacba3457",
      "tree": "3aec4c67a5518a9c4e60a6914c5dbb9eb82e952f",
      "parents": [
        "a9a5776380208a3e48a92d0c763ee1a3b486fb73"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Apr 23 10:00:22 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 14 14:20:34 2010 -0400"
      },
      "message": "tracing: Move print functions into event class\n\nCurrently, every event has its own trace_event structure. This is\nfine since the structure is needed anyway. But the print function\nstructure (trace_event_functions) is now separate. Since the output\nof the trace event is done by the class (with the exception of events\ndefined by DEFINE_EVENT_PRINT), it makes sense to have the class\ndefine the print functions that all events in the class can use.\n\nThis makes a bigger deal with the syscall events since all syscall events\nuse the same class. The savings here is another 30K.\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n4913961\t1088356\t 861512\t6863829\t 68bbd5\tvmlinux.orig\n4900382\t1048964\t 861512\t6810858\t 67ecea\tvmlinux.init\n4900446\t1049028\t 861512\t6810986\t 67ed6a\tvmlinux.preprint\n4895024\t1023812\t 861512\t6780348\t 6775bc\tvmlinux.print\n\nTo accomplish this, and to let the class know what event is being\nprinted, the event structure is embedded in the ftrace_event_call\nstructure. This should not be an issues since the event structure\nwas created for each event anyway.\n\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a9a5776380208a3e48a92d0c763ee1a3b486fb73",
      "tree": "5ecd41c3b373e2156f5bf748ae777e022296a30c",
      "parents": [
        "0405ab80aa94afb13bf9ac4a6fc9f2923d4b9114"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Apr 22 18:46:14 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 14 14:20:32 2010 -0400"
      },
      "message": "tracing: Allow events to share their print functions\n\nMultiple events may use the same method to print their data.\nInstead of having all events have a pointer to their print funtions,\nthe trace_event structure now points to a trace_event_functions structure\nthat will hold the way to print ouf the event.\n\nThe event itself is now passed to the print function to let the print\nfunction know what kind of event it should print.\n\nThis opens the door to consolidating the way several events print\ntheir output.\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n4913961\t1088356\t 861512\t6863829\t 68bbd5\tvmlinux.orig\n4900382\t1048964\t 861512\t6810858\t 67ecea\tvmlinux.init\n4900446\t1049028\t 861512\t6810986\t 67ed6a\tvmlinux.preprint\n\nThis change slightly increases the size but is needed for the next change.\n\nv3: Fix the branch tracer events to handle this change.\n\nv2: Fix the new function graph tracer event calls to handle this change.\n\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0405ab80aa94afb13bf9ac4a6fc9f2923d4b9114",
      "tree": "43eedc09bb15ecfda26adb661d59badeacea0de6",
      "parents": [
        "2e33af029556cb8bd22bf4f86f42d540249177ea"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Apr 22 11:46:44 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 14 14:20:30 2010 -0400"
      },
      "message": "tracing: Move raw_init from events to class\n\nThe raw_init function pointer in the event is used to initialize\nvarious kinds of events. The type of initialization needed is usually\nclassed to the kind of event it is.\n\nTwo events with the same class will always have the same initialization\nfunction, so it makes sense to move this to the class structure.\n\nPerhaps even making a special system structure would work since\nthe initialization is the same for all events within a system.\nBut since there\u0027s no system structure (yet), this will just move it\nto the class.\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n4913961\t1088356\t 861512\t6863829\t 68bbd5\tvmlinux.orig\n4900375\t1053380\t 861512\t6815267\t 67fe23\tvmlinux.fields\n4900382\t1048964\t 861512\t6810858\t 67ecea\tvmlinux.init\n\nThe text grew very slightly, but this is a constant growth that happened\nwith the changing of the C files that call the init code.\nThe bigger savings is the data which will be saved the more events share\na class.\n\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2e33af029556cb8bd22bf4f86f42d540249177ea",
      "tree": "8a479d21300c7692d61093846054f626e3e71ed5",
      "parents": [
        "2239291aeb0379fe47980b0e560e0eb9fd7e82ec"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Apr 22 10:35:55 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 14 14:20:23 2010 -0400"
      },
      "message": "tracing: Move fields from event to class structure\n\nMove the defined fields from the event to the class structure.\nSince the fields of the event are defined by the class they belong\nto, it makes sense to have the class hold the information instead\nof the individual events. The events of the same class would just\nhold duplicate information.\n\nAfter this change the size of the kernel dropped another 3K:\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n4913961\t1088356\t 861512\t6863829\t 68bbd5\tvmlinux.orig\n4900252\t1057412\t 861512\t6819176\t 680d68\tvmlinux.regs\n4900375\t1053380\t 861512\t6815267\t 67fe23\tvmlinux.fields\n\nAlthough the text increased, this was mainly due to the C files\nhaving to adapt to the change. This is a constant increase, where\nnew tracepoints will not increase the Text. But the big drop is\nin the data size (as well as needed allocations to hold the fields).\nThis will give even more savings as more tracepoints are created.\n\nNote, if just TRACE_EVENT()s are used and not DECLARE_EVENT_CLASS()\nwith several DEFINE_EVENT()s, then the savings will be lost. But\nwe are pushing developers to consolidate events with DEFINE_EVENT()\nso this should not be an issue.\n\nThe kprobes define a unique class to every new event, but are dynamic\nso it should not be a issue.\n\nThe syscalls however have a single class but the fields for the individual\nevents are different. The syscalls use a metadata to define the\nfields. I moved the fields list from the event to the metadata and\nadded a \"get_fields()\" function to the class. This function is used\nto find the fields. For normal events and kprobes, get_fields() just\nreturns a pointer to the fields list_head in the class. For syscall\nevents, it returns the fields list_head in the metadata for the event.\n\nv2:  Fixed the syscall fields. The syscall metadata needs a list\n     of fields for both enter and exit.\n\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "2239291aeb0379fe47980b0e560e0eb9fd7e82ec",
      "tree": "e75bb60ec24e6fd7137f01db48e0ea7e5b1eddd4",
      "parents": [
        "38516ab59fbc5b3bb278cf5e1fe2867c70cff32e"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Apr 21 12:27:06 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 14 14:19:14 2010 -0400"
      },
      "message": "tracing: Remove per event trace registering\n\nThis patch removes the register functions of TRACE_EVENT() to enable\nand disable tracepoints. The registering of a event is now down\ndirectly in the trace_events.c file. The tracepoint_probe_register()\nis now called directly.\n\nThe prototypes are no longer type checked, but this should not be\nan issue since the tracepoints are created automatically by the\nmacros. If a prototype is incorrect in the TRACE_EVENT() macro, then\nother macros will catch it.\n\nThe trace_event_class structure now holds the probes to be called\nby the callbacks. This removes needing to have each event have\na separate pointer for the probe.\n\nTo handle kprobes and syscalls, since they register probes in a\ndifferent manner, a \"reg\" field is added to the ftrace_event_class\nstructure. If the \"reg\" field is assigned, then it will be called for\nenabling and disabling of the probe for either ftrace or perf. To let\nthe reg function know what is happening, a new enum (trace_reg) is\ncreated that has the type of control that is needed.\n\nWith this new rework, the 82 kernel events and 618 syscall events\nhas their footprint dramatically lowered:\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n4913961\t1088356\t 861512\t6863829\t 68bbd5\tvmlinux.orig\n4914025\t1088868\t 861512\t6864405\t 68be15\tvmlinux.class\n4918492\t1084612\t 861512\t6864616\t 68bee8\tvmlinux.tracepoint\n4900252\t1057412\t 861512\t6819176\t 680d68\tvmlinux.regs\n\nThe size went from 6863829 to 6819176, that\u0027s a total of 44K\nin savings. With tracepoints being continuously added, this is\ncritical that the footprint becomes minimal.\n\nv5: Added #ifdef CONFIG_PERF_EVENTS around a reference to perf\n    specific structure in trace_events.c.\n\nv4: Fixed trace self tests to check probe because regfunc no longer\n    exists.\n\nv3: Updated to handle void *data in beginning of probe parameters.\n    Also added the tracepoint: check_trace_callback_type_##call().\n\nv2: Changed the callback probes to pass void * and typecast the\n    value within the function.\n\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "38516ab59fbc5b3bb278cf5e1fe2867c70cff32e",
      "tree": "904476d7780a27001281b9cb93c7959128f9a1d7",
      "parents": [
        "53da59aa6dd881fd0bbdd058a8a299d90ce9dd1d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Apr 20 17:04:50 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 14 09:50:34 2010 -0400"
      },
      "message": "tracing: Let tracepoints have data passed to tracepoint callbacks\n\nThis patch adds data to be passed to tracepoint callbacks.\n\nThe created functions from DECLARE_TRACE() now need a mandatory data\nparameter. For example:\n\nDECLARE_TRACE(mytracepoint, int value, value)\n\nWill create the register function:\n\nint register_trace_mytracepoint((void(*)(void *data, int value))probe,\n                                void *data);\n\nAs the first argument, all callbacks (probes) must take a (void *data)\nparameter. So a callback for the above tracepoint will look like:\n\nvoid myprobe(void *data, int value)\n{\n}\n\nThe callback may choose to ignore the data parameter.\n\nThis change allows callbacks to register a private data pointer along\nwith the function probe.\n\n\tvoid mycallback(void *data, int value);\n\n\tregister_trace_mytracepoint(mycallback, mydata);\n\nThen the mycallback() will receive the \"mydata\" as the first parameter\nbefore the args.\n\nA more detailed example:\n\n  DECLARE_TRACE(mytracepoint, TP_PROTO(int status), TP_ARGS(status));\n\n  /* In the C file */\n\n  DEFINE_TRACE(mytracepoint, TP_PROTO(int status), TP_ARGS(status));\n\n  [...]\n\n       trace_mytracepoint(status);\n\n  /* In a file registering this tracepoint */\n\n  int my_callback(void *data, int status)\n  {\n\tstruct my_struct my_data \u003d data;\n\t[...]\n  }\n\n  [...]\n\tmy_data \u003d kmalloc(sizeof(*my_data), GFP_KERNEL);\n\tinit_my_data(my_data);\n\tregister_trace_mytracepoint(my_callback, my_data);\n\nThe same callback can also be registered to the same tracepoint as long\nas the data registered is different. Note, the data must also be used\nto unregister the callback:\n\n\tunregister_trace_mytracepoint(my_callback, my_data);\n\nBecause of the data parameter, tracepoints declared this way can not have\nno args. That is:\n\n  DECLARE_TRACE(mytracepoint, TP_PROTO(void), TP_ARGS());\n\nwill cause an error.\n\nIf no arguments are needed, a new macro can be used instead:\n\n  DECLARE_TRACE_NOARGS(mytracepoint);\n\nSince there are no arguments, the proto and args fields are left out.\n\nThis is part of a series to make the tracepoint footprint smaller:\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n4913961\t1088356\t 861512\t6863829\t 68bbd5\tvmlinux.orig\n4914025\t1088868\t 861512\t6864405\t 68be15\tvmlinux.class\n4918492\t1084612\t 861512\t6864616\t 68bee8\tvmlinux.tracepoint\n\nAgain, this patch also increases the size of the kernel, but\nlays the ground work for decreasing it.\n\n v5: Fixed net/core/drop_monitor.c to handle these updates.\n\n v4: Moved the DECLARE_TRACE() DECLARE_TRACE_NOARGS out of the\n     #ifdef CONFIG_TRACE_POINTS, since the two are the same in both\n     cases. The __DECLARE_TRACE() is what changes.\n     Thanks to Frederic Weisbecker for pointing this out.\n\n v3: Made all register_* functions require data to be passed and\n     all callbacks to take a void * parameter as its first argument.\n     This makes the calling functions comply with C standards.\n\n     Also added more comments to the modifications of DECLARE_TRACE().\n\n v2: Made the DECLARE_TRACE() have the ability to pass arguments\n     and added a new DECLARE_TRACE_NOARGS() for tracepoints that\n     do not need any arguments.\n\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8f0820183056ad26dabc0202115848a92f1143fc",
      "tree": "c9e1cb9d41e37d5075704efbde3c97121820e0c5",
      "parents": [
        "23e117fa44429cc054cb27d5621d64e4ced91e52"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Apr 20 10:47:33 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 14 09:33:49 2010 -0400"
      },
      "message": "tracing: Create class struct for events\n\nThis patch creates a ftrace_event_class struct that event structs point to.\nThis class struct will be made to hold information to modify the\nevents. Currently the class struct only holds the events system name.\n\nThis patch slightly increases the size, but this change lays the ground work\nof other changes to make the footprint of tracepoints smaller.\n\nWith 82 standard tracepoints, and 618 system call tracepoints\n(two tracepoints per syscall: enter and exit):\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n4913961\t1088356\t 861512\t6863829\t 68bbd5\tvmlinux.orig\n4914025\t1088868\t 861512\t6864405\t 68be15\tvmlinux.class\n\nThis patch also cleans up some stale comments in ftrace.h.\n\nv2: Fixed missing semi-colon in macro.\n\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "23e117fa44429cc054cb27d5621d64e4ced91e52",
      "tree": "a4b9d0902b9c6f009b2c297515221c1b9bed3af8",
      "parents": [
        "668eb65f092902eb7dd526af73d4a7f025a94612",
        "a93d2f1744206827ccf416e2cdc5018aa503314e"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri May 14 09:29:52 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 14 09:29:52 2010 -0400"
      },
      "message": "Merge branch \u0027sched/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip into trace/tip/tracing/core-4\n"
    },
    {
      "commit": "27a9da6538ee18046d7bff8e36a9f783542c54c3",
      "tree": "9f9944ca8742ec52f7e4a674f7475fc0378abdb8",
      "parents": [
        "48652ced1533c3372f996a0d83b6e73b1f1c9381"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Tue May 04 20:36:56 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri May 07 11:28:17 2010 +0200"
      },
      "message": "sched: Remove rq argument to the tracepoints\n\nstruct rq isn\u0027t visible outside of sched.o so its near useless to\nexpose the pointer, also there are no users of it, so remove it.\n\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1272997616.1642.207.camel@laptop\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d9f599e1e6d019968b35d2dc63074b9e8964fa69",
      "tree": "6253e19189306cef7952310d6ef62fb6ab675481",
      "parents": [
        "4778e0e8c64f683a71632dba1cff1f85f76f83c4"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "error27@gmail.com",
        "time": "Sat Mar 20 17:39:11 2010 +0300"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 06 19:49:52 2010 -0400"
      },
      "message": "perf: Fix check at end of event search\n\nThe original code doesn\u0027t work because \"call\" is never NULL there.\n\nSigned-off-by: Dan Carpenter \u003cerror27@gmail.com\u003e\nLKML-Reference: \u003c20100320143911.GF5331@bicker\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "668eb65f092902eb7dd526af73d4a7f025a94612",
      "tree": "2ef89525a77f0541bf527dc33325969cf360c4a4",
      "parents": [
        "2e26ca7150a4f2ab3e69471dfc65f131e7dd7a05"
      ],
      "author": {
        "name": "Thiago Farina",
        "email": "tfransosi@gmail.com",
        "time": "Sun Jan 24 11:03:50 2010 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 05 12:01:26 2010 -0400"
      },
      "message": "tracing: Fix \"integer as NULL pointer\" warning.\n\nkernel/trace/trace_output.c:256:24: warning: Using plain integer as NULL pointer\n\nSigned-off-by: Thiago Farina \u003ctfransosi@gmail.com\u003e\nLKML-Reference: \u003c1264349038-1766-3-git-send-email-tfransosi@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "956097912c40a03bf22603a3be73503fd9ea9e44",
      "tree": "2d73d9dd1fed43cb1eeaa9137fefc72884e62694",
      "parents": [
        "4dbf6bc239c169b032777616806ecc648058f6b2"
      ],
      "author": {
        "name": "Borislav Petkov",
        "email": "bp@alien8.de",
        "time": "Sun May 02 08:03:54 2010 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 04 12:23:47 2010 -0400"
      },
      "message": "ring-buffer: Wrap open-coded WARN_ONCE\n\nWrap open-coded WARN_ONCE functionality into the equivalent macro.\n\nSigned-off-by: Borislav Petkov \u003cbp@alien8.de\u003e\nLKML-Reference: \u003c20100502060354.GA5281@liondog.tnic\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "feef47d0cb530e8419dfa0b48141b538b89b1b1a",
      "tree": "ad40b07e8b240eca134770120b5c644ec0062ce2",
      "parents": [
        "f93a20541134fa767e8dc4eb32e956d30b9f6b92"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Apr 23 05:59:55 2010 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat May 01 04:32:14 2010 +0200"
      },
      "message": "hw-breakpoints: Get the number of available registers on boot dynamically\n\nThe breakpoint generic layer assumes that archs always know in advance\nthe static number of address registers available to host breakpoints\nthrough the HBP_NUM macro.\n\nHowever this is not true for every archs. For example Arm needs to get\nthis information dynamically to handle the compatiblity between\ndifferent versions.\n\nTo solve this, this patch proposes to drop the static HBP_NUM macro\nand let the arch provide the number of available slots through a\nnew hw_breakpoint_slots() function. For archs that have\nCONFIG_HAVE_MIXED_BREAKPOINTS_REGS selected, it will be called once\nas the number of registers fits for instruction and data breakpoints\ntogether.\nFor the others it will be called first to get the number of\ninstruction breakpoint registers and another time to get the\ndata breakpoint registers, the targeted type is given as a\nparameter of hw_breakpoint_slots().\n\nReported-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Mahesh Salgaonkar \u003cmahesh@linux.vnet.ibm.com\u003e\nCc: K. Prasad \u003cprasad@linux.vnet.ibm.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Jason Wessel \u003cjason.wessel@windriver.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bf81623542332bc2cedf3db49cbb2edb724780d2",
      "tree": "47e4b784fefd533251b58ae1c2d8c8d280242bcf",
      "parents": [
        "5a2e3995951176e1aaa63d17ae2e1d26ac99003d"
      ],
      "author": {
        "name": "Kei Tokunaga",
        "email": "tokunaga.keiich@jp.fujitsu.com",
        "time": "Thu Apr 01 20:41:40 2010 +0900"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@suse.de",
        "time": "Fri Apr 30 12:51:10 2010 -0500"
      },
      "message": "[SCSI] add scsi trace core functions and put trace points\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nSigned-off-by: Tomohiro Kusumi \u003ckusumi.tomohiro@jp.fujitsu.com\u003e\nSigned-off-by: Kei Tokunaga \u003ctokunaga.keiich@jp.fujitsu.com\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@suse.de\u003e\n"
    },
    {
      "commit": "5a2e3995951176e1aaa63d17ae2e1d26ac99003d",
      "tree": "7305a7dc2c1822e5d4fec610d1c9bb6ddfadce70",
      "parents": [
        "59c31b69d278b760fb84266f99c1dcb0f73ec51d"
      ],
      "author": {
        "name": "Kei Tokunaga",
        "email": "tokunaga.keiich@jp.fujitsu.com",
        "time": "Thu Apr 01 20:40:58 2010 +0900"
      },
      "committer": {
        "name": "James Bottomley",
        "email": "James.Bottomley@suse.de",
        "time": "Fri Apr 30 12:50:22 2010 -0500"
      },
      "message": "[SCSI] ftrace: add __print_hex()\n\n__print_hex() prints values in an array in hex (w/o \u00270x\u0027) (space separated)\nEX) 92 33 32 f3 ee 4d\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Tomohiro Kusumi \u003ckusumi.tomohiro@jp.fujitsu.com\u003e\nSigned-off-by: Kei Tokunaga \u003ctokunaga.keiich@jp.fujitsu.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: James Bottomley \u003cJames.Bottomley@suse.de\u003e\n"
    },
    {
      "commit": "37e44bc50d91df1fe7edcf6f02fe168c6d802e64",
      "tree": "40058a2b27e94400dc4345ba13b334fb732ae532",
      "parents": [
        "e330b3bcd83199dd63a819d8d12e40f9edae6c77"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Apr 27 21:04:24 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 27 21:04:24 2010 -0400"
      },
      "message": "tracing: Fix sleep time function profiling\n\nWhen sleep_time is off the function profiler ignores the time that a task\nis scheduled out. When the task is scheduled out a timestamp is taken.\nWhen the task is scheduled back in, the timestamp is compared to the\ncurrent time and the saved calltimes are adjusted accordingly.\n\nBut when stopping the function profiler, the sched switch hook that\ndoes this adjustment was stopped before shutting down the tracer.\nThis allowed some tasks to not get their timestamps set when they\nscheduled out. When the function profiler started again, this would\nskew the times of the scheduler functions.\n\nThis patch moves the stopping of the sched switch to after the function\nprofiler is stopped. It also ignores zero set calltimes, which may\nhappen on start up.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e330b3bcd83199dd63a819d8d12e40f9edae6c77",
      "tree": "45d488ed1f112db14ca180af5f4d2d09515a1f09",
      "parents": [
        "07271aa42d13378e67ebd79ea9ca1c4a5e2ad46f"
      ],
      "author": {
        "name": "Chase Douglas",
        "email": "chase.douglas@canonical.com",
        "time": "Mon Apr 26 14:02:05 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 27 18:23:15 2010 -0400"
      },
      "message": "tracing: Show sample std dev in function profiling\n\nWhen combined with function graph tracing the ftrace function profiler\nalso prints the average run time of functions. While this gives us some\ngood information, it doesn\u0027t tell us anything about the variance of the\nrun times of the function. This change prints out the s^2 sample\nstandard deviation alongside the average.\n\nThis change adds one entry to the profile record structure. This\nincreases the memory footprint of the function profiler by 1/3 on a\n32-bit system, and by 1/5 on a 64-bit system when function graphing is\nenabled, though the memory is only allocated when the profiler is turned\non. During the profiling, one extra line of code adds the squared\ncalltime to the new record entry, so this should not adversly affect\nperformance.\n\nNote that the square of the sample standard deviation is printed because\nthere is no sqrt implementation for unsigned long long in the kernel.\n\nSigned-off-by: Chase Douglas \u003cchase.douglas@canonical.com\u003e\nLKML-Reference: \u003c1272304925-2436-1-git-send-email-chase.douglas@canonical.com\u003e\n\n[ fixed comment about ns^2 -\u003e us^2 conversion ]\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a838b2e634405fb89ddbf4fa9412acb33911911f",
      "tree": "987cb7b9bb5f7558b72760ba18a0979ac19212fd",
      "parents": [
        "72c9ddfd4c5bf54ef03cfdf57026416cb678eeba"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Apr 27 13:26:58 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 27 13:26:58 2010 -0400"
      },
      "message": "ring-buffer: Make benchmark handle missed events\n\nWith the addition of the \"missed events\" flags that is stored in the\ncommit field of the ring buffer page, the ring_buffer_benchmark\nwas not updated to handle this. If events are missed, then the\nmissed events flag is set in the ring buffer page, the benchmark\nwill count that flag as part of the size of the page and will hit the BUG()\nwhen it tries to read beyond the page.\n\nThe solution is simply to have the ring buffer benchmark mask off\nthe extra bits.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "72c9ddfd4c5bf54ef03cfdf57026416cb678eeba",
      "tree": "bd2c2b6b411975a8219d7138ba7699ee5d324e77",
      "parents": [
        "62b915f1060996a8e1f69be50e3b8e9e43b710cb"
      ],
      "author": {
        "name": "David Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Apr 20 15:47:11 2010 -0700"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 27 13:06:35 2010 -0400"
      },
      "message": "ring-buffer: Make non-consuming read less expensive with lots of cpus.\n\nWhen performing a non-consuming read, a synchronize_sched() is\nperformed once for every cpu which is actively tracing.\n\nThis is very expensive, and can make it take several seconds to open\nup the \u0027trace\u0027 file with lots of cpus.\n\nOnly one synchronize_sched() call is actually necessary.  What is\ndesired is for all cpus to see the disabling state change.  So we\ntransform the existing sequence:\n\n\tfor_each_cpu() {\n\t\tring_buffer_read_start();\n\t}\n\nwhere each ring_buffer_start() call performs a synchronize_sched(),\ninto the following:\n\n\tfor_each_cpu() {\n\t\tring_buffer_read_prepare();\n\t}\n\tring_buffer_read_prepare_sync();\n\tfor_each_cpu() {\n\t\tring_buffer_read_start();\n\t}\n\nwherein only the single ring_buffer_read_prepare_sync() call needs to\ndo the synchronize_sched().\n\nThe first phase, via ring_buffer_read_prepare(), allocates the \u0027iter\u0027\nmemory and increments -\u003erecord_disabled.\n\nIn the second phase, ring_buffer_read_prepare_sync() makes sure this\n-\u003erecord_disabled state is visible fully to all cpus.\n\nAnd in the final third phase, the ring_buffer_read_start() calls reset\nthe \u0027iter\u0027 objects allocated in the first phase since we now know that\nnone of the cpus are adding trace entries any more.\n\nThis makes openning the \u0027trace\u0027 file nearly instantaneous on a\nsparc64 Niagara2 box with 128 cpus tracing.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nLKML-Reference: \u003c20100420.154711.11246950.davem@davemloft.net\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "62b915f1060996a8e1f69be50e3b8e9e43b710cb",
      "tree": "26741f065b30b67022d680c3bc2afbda319638e1",
      "parents": [
        "d7a8d9e907cc294ec7a4a7046d1886375fbcc82e"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Fri Apr 02 19:01:22 2010 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 27 12:36:53 2010 -0400"
      },
      "message": "tracing: Add graph output support for irqsoff tracer\n\nAdd function graph output to irqsoff tracer.\n\nThe graph output is enabled by setting new \u0027display-graph\u0027 trace option.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nLKML-Reference: \u003c1270227683-14631-4-git-send-email-jolsa@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "d7a8d9e907cc294ec7a4a7046d1886375fbcc82e",
      "tree": "5487e297eafdf978a7355ff11f337c98ddf98f74",
      "parents": [
        "9106b69382912ddc403a307b69bf894a6f3004e4"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Fri Apr 02 19:01:21 2010 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Apr 26 17:30:18 2010 -0400"
      },
      "message": "tracing: Have graph flags passed in to ouput functions\n\nLet the function graph tracer have custom flags passed to its\noutput functions.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nLKML-Reference: \u003c1270227683-14631-3-git-send-email-jolsa@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "9106b69382912ddc403a307b69bf894a6f3004e4",
      "tree": "b4a08ee1cbdfd8c43544231fa3623c45b1bf9a17",
      "parents": [
        "77a7f2e94e6998e307917fe63fa4b6d5162d44e9"
      ],
      "author": {
        "name": "Jiri Olsa",
        "email": "jolsa@redhat.com",
        "time": "Fri Apr 02 19:01:20 2010 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Apr 26 16:55:08 2010 -0400"
      },
      "message": "tracing: Add ftrace events for graph tracer\n\nAdd ftrace events for graph tracer, so the graph output could be shared\nwith other tracers.\n\nSigned-off-by: Jiri Olsa \u003cjolsa@redhat.com\u003e\nLKML-Reference: \u003c1270227683-14631-2-git-send-email-jolsa@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "cecbca96da387428e220e307a9c945e37e2f4d9e",
      "tree": "2edefda983658c19a8f2b38ff951a3046597a4f7",
      "parents": [
        "b15c7b1cee119999e9eafcd602d24a595e77adac"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Apr 18 19:08:41 2010 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Apr 21 23:11:42 2010 +0200"
      },
      "message": "tracing: Dump either the oops\u0027s cpu source or all cpus buffers\n\nThe ftrace_dump_on_oops kernel parameter, sysctl and sysrq let one\ndump every cpu buffers when an oops or panic happens.\n\nIt\u0027s nice when you have few cpus but it may take ages if have many,\nplus you miss the real origin of the problem in all the cpu traces.\n\nSometimes, all you need is to dump the cpu buffer that triggered the\nopps, most of the time it is our main interest.\n\nThis patch modifies ftrace_dump_on_oops to handle this choice.\n\nThe ftrace_dump_on_oops kernel parameter, when it comes alone, has\nthe same behaviour than before. But ftrace_dump_on_oops\u003dorig_cpu\nwill only dump the buffer of the cpu that oops\u0027ed.\n\nSimilarly, sysctl kernel.ftrace_dump_on_oops\u003d1 and\necho 1 \u003e /proc/sys/kernel/ftrace_dump_on_oops keep their previous\nbehaviour. But setting 2 jumps into cpu origin dump mode.\n\nv2: Fix double setup\nv3: Fix spelling issues reported by Randy Dunlap\nv4: Also update __ftrace_dump in the selftests\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\n"
    },
    {
      "commit": "93ccae7a2227466a0d071fe52c51319f2f34c365",
      "tree": "ad98a4db74fff834ce79b83f21192713cc3665bc",
      "parents": [
        "df0faf4be02996135bc3a06b4f34360449c78084"
      ],
      "author": {
        "name": "Masami Hiramatsu",
        "email": "mhiramat@redhat.com",
        "time": "Mon Apr 12 13:17:08 2010 -0400"
      },
      "committer": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Wed Apr 14 17:26:28 2010 -0300"
      },
      "message": "tracing/kprobes: Support basic types on dynamic events\n\nSupport basic types of integer (u8, u16, u32, u64, s8, s16, s32, s64) in\nkprobe tracer. With this patch, users can specify above basic types on\neach arguments after \u0027:\u0027. If omitted, the argument type is set as\nunsigned long (u32 or u64, arch-dependent).\n\n e.g.\n  echo \u0027p account_system_time+0 hardirq_offset\u003d%si:s32\u0027 \u003e kprobe_events\n\n  adds a probe recording hardirq_offset in signed-32bits value on the\n  entry of account_system_time.\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Mike Galbraith \u003cefault@gmx.de\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c20100412171708.3790.18599.stgit@localhost6.localdomain6\u003e\nSigned-off-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\n"
    },
    {
      "commit": "b15c7b1cee119999e9eafcd602d24a595e77adac",
      "tree": "48765b70c65e80d62f0ce11a3245b4ef2299b060",
      "parents": [
        "c1ab9cab75098924fa8226a8a371de66977439df",
        "aa27497c2fb4c7f57706099bd489e683e5cc3e3b"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 14 12:15:23 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 14 12:15:23 2010 +0200"
      },
      "message": "Merge branch \u0027tip/tracing/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/core\n"
    },
    {
      "commit": "ca7e0c612005937a4a5a75d3fed90459993de65c",
      "tree": "b574fc0f0189b52ffc87ba20c418228db556faa1",
      "parents": [
        "8141d0050d76e5695011b5ab577ec66fb51a998c",
        "f5284e7635787224dda1a2bf82a4c56b1c75671f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 08 13:36:36 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 08 13:37:18 2010 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into perf/core\n\nSemantic conflict: arch/x86/kernel/cpu/perf_event_intel_ds.c\n\nMerge reason: pick up latest fixes, fix the conflict\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c1ab9cab75098924fa8226a8a371de66977439df",
      "tree": "767e77302ca8f2eb781c60624bc8518cd50ba6eb",
      "parents": [
        "ff0ff84a0767df48d728c36510365344a7e7d582",
        "f5284e7635787224dda1a2bf82a4c56b1c75671f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 08 09:06:12 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 08 10:18:47 2010 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into tracing/core\n\nConflicts:\n\tinclude/linux/module.h\n\tkernel/module.c\n\nSemantic conflict:\n\tinclude/trace/events/module.h\n\nMerge reason: Resolve the conflict with upstream commit 5fbfb18 (\"Fix up\n              possibly racy module refcounting\")\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "aa27497c2fb4c7f57706099bd489e683e5cc3e3b",
      "tree": "66fab7036e68592003548fd753b31d906d38b7ee",
      "parents": [
        "ff0ff84a0767df48d728c36510365344a7e7d582"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Mon Apr 05 17:11:05 2010 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Apr 05 11:01:22 2010 -0400"
      },
      "message": "tracing: Fix uninitialized variable of tracing/trace output\n\nBecause a local variable is not initialized, I got these\nwhen I did \u0027cat tracing/trace\u0027. (not trace_pipe):\n\nCPU:0 [LOST 18446744071579453134 EVENTS]\n              ps-3099  [000]   560.770221: lock_acquire: ffff880030865010 \u0026(\u0026dentry-\u003ed_lock)-\u003erlock\nCPU:0 [LOST 18446744071579453134 EVENTS]\n              ps-3099  [000]   560.770221: lock_release: ffff880030865010 \u0026(\u0026dentry-\u003ed_lock)-\u003erlock\nCPU:0 [LOST 18446612133255294080 EVENTS]\n              ps-3099  [000]   560.770221: lock_acquire: ffff880030865010 \u0026(\u0026dentry-\u003ed_lock)-\u003erlock\nCPU:0 [LOST 18446744071579453134 EVENTS]\n              ps-3099  [000]   560.770222: lock_release: ffff880030865010 \u0026(\u0026dentry-\u003ed_lock)-\u003erlock\nCPU:0 [LOST 18446744071579453134 EVENTS]\n              ps-3099  [000]   560.770222: lock_release: ffffffff816cfb98 dcache_lock\n\nSee peek_next_entry(), it does not set *lost_events when we \u0027cat tracing/trace\u0027\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4BB9A929.2000303@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "336f5899d287f06d8329e208fc14ce50f7ec9698",
      "tree": "9b762d450d5eb248a6ff8317badb7e223d93ed58",
      "parents": [
        "a4ab2773205e8b94c18625455f85e3b6bb9d7ad6",
        "db217dece3003df0841bacf9556b5c06aa097dae"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Apr 05 11:37:28 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Mon Apr 05 11:37:28 2010 +0900"
      },
      "message": "Merge branch \u0027master\u0027 into export-slabh\n"
    },
    {
      "commit": "8ce42c8b7fdf4fc008a6fc7349beb8f4dd5cb774",
      "tree": "bc05326ed8ade9137e3ce5fb5b1d439dcdce266f",
      "parents": [
        "0121b0c771f929bb5298554b70843ab46280c298",
        "6e03bb5ad363fdbe4e1e227cfb78f7978c662e18"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 04 12:13:10 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 04 12:13:10 2010 -0700"
      },
      "message": "Merge branch \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  perf: Always build the powerpc perf_arch_fetch_caller_regs version\n  perf: Always build the stub perf_arch_fetch_caller_regs version\n  perf, probe-finder: Build fix on Debian\n  perf/scripts: Tuple was set from long in both branches in python_process_event()\n  perf: Fix \u0027perf sched record\u0027 deadlock\n  perf, x86: Fix callgraphs of 32-bit processes on 64-bit kernels\n  perf, x86: Fix AMD hotplug \u0026 constraint initialization\n  x86: Move notify_cpu_starting() callback to a later stage\n  x86,kgdb: Always initialize the hw breakpoint attribute\n  perf: Use hot regs with software sched switch/migrate events\n  perf: Correctly align perf event tracing buffer\n"
    },
    {
      "commit": "ec5e61aabeac58670691bd0613388d16697d0d81",
      "tree": "59838509358f27334874b90756505785cde29b02",
      "parents": [
        "75ec5a245c7763c397f31ec8964d0a46c54a7386",
        "8bb39f9aa068262732fe44b965d7a6eb5a5a7d67"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 02 19:37:50 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 02 19:38:10 2010 +0200"
      },
      "message": "Merge branch \u0027perf/urgent\u0027 into perf/core\n\nConflicts:\n\tarch/x86/kernel/cpu/perf_event.c\n\nMerge reason: Resolve the conflict, pick up fixes\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "eb1e79611cc9bfe21978230e3521e77ea2d7874a",
      "tree": "0d5ebdb4a0b178fcd524d3b725da3e8a3cd6151e",
      "parents": [
        "b72c40949b0f04728f2993a1434598d3bad094ea"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Mar 23 00:08:59 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Apr 01 08:26:30 2010 +0200"
      },
      "message": "perf: Correctly align perf event tracing buffer\n\nThe trace event buffer used by perf to record raw sample events\nis typed as an array of char and may then not be aligned to 8\nby alloc_percpu().\n\nBut we need it to be aligned to 8 in sparc64 because we cast\nthis buffer into a random structure type built by the TRACE_EVENT()\nmacro to store the traces. So if a random 64 bits field is accessed\ninside, it may be not under an expected good alignment.\n\nUse an array of long instead to force the appropriate alignment, and\nperform a compile time check to ensure the size in byte of the buffer\nis a multiple of sizeof(long) so that its actual size doesn\u0027t get\nshrinked under us.\n\nThis fixes unaligned accesses reported while using perf lock\nin sparc 64.\n\nSuggested-by: David Miller \u003cdavem@davemloft.net\u003e\nSuggested-by: Tejun Heo \u003chtejun@gmail.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ff0ff84a0767df48d728c36510365344a7e7d582",
      "tree": "9f32396f4b5a53a3b55429a257c0630dffc8176e",
      "parents": [
        "bc21b478425ac73f66a5ec0b375a5e0d12d609ce"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Mar 31 22:11:42 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 31 22:57:08 2010 -0400"
      },
      "message": "ring-buffer: Add lost event count to end of sub buffer\n\nCurrently, binary readers of the ring buffer only know where events were\nlost, but not how many events were lost at that location.\nThis information is available, but it would require adding another\nfield to the sub buffer header to include it.\n\nBut when a event can not fit at the end of a sub buffer, it is written\nto the next sub buffer. This means there is a good chance that the\nbuffer may have room to hold this counter. If it does, write\nthe counter at the end of the sub buffer and set another flag\nin the data size field that states that this information exists.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "bc21b478425ac73f66a5ec0b375a5e0d12d609ce",
      "tree": "a5e8be66a9114f73d4c87112d515424f14e7bebd",
      "parents": [
        "66a8cb95ed04025664d1db4e952155ee1dccd048"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Mar 31 19:49:26 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 31 22:57:06 2010 -0400"
      },
      "message": "tracing: Show the lost events in the trace_pipe output\n\nNow that the ring buffer can keep track of where events are lost.\nUse this information to the output of trace_pipe:\n\n       hackbench-3588  [001]  1326.701660: lock_acquire: ffffffff816591e0 read rcu_read_lock\n       hackbench-3588  [001]  1326.701661: lock_acquire: ffff88003f4091f0 \u0026(\u0026dentry-\u003ed_lock)-\u003erlock\n       hackbench-3588  [001]  1326.701664: lock_release: ffff88003f4091f0 \u0026(\u0026dentry-\u003ed_lock)-\u003erlock\nCPU:1 [LOST 673 EVENTS]\n       hackbench-3588  [001]  1326.702711: kmem_cache_free: call_site\u003dffffffff81102b85 ptr\u003dffff880026d96738\n       hackbench-3588  [001]  1326.702712: lock_release: ffff88003e1480a8 \u0026mm-\u003emmap_sem\n       hackbench-3588  [001]  1326.702713: lock_acquire: ffff88003e1480a8 \u0026mm-\u003emmap_sem\n\nEven works with the function graph tracer:\n\n 2) ! 170.098 us  |                                            }\n 2)   4.036 us    |                                            rcu_irq_exit();\n 2)   3.657 us    |                                            idle_cpu();\n 2) ! 190.301 us  |                                          }\nCPU:2 [LOST 2196 EVENTS]\n 2)   0.853 us    |                            } /* cancel_dirty_page */\n 2)               |                            remove_from_page_cache() {\n 2)   1.578 us    |                              _raw_spin_lock_irq();\n 2)               |                              __remove_from_page_cache() {\n\nNote, it does not work with the iterator \"trace\" file, since it requires\nthe use of consuming the page from the ring buffer to determine how many\nevents were lost, which the iterator does not do.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "66a8cb95ed04025664d1db4e952155ee1dccd048",
      "tree": "74417422a78bc8198de46b0e52e490175af866e0",
      "parents": [
        "eb0c53771fb2f5f66b0edb3ebce33be4bbf1c285"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Mar 31 13:21:56 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 31 22:57:04 2010 -0400"
      },
      "message": "ring-buffer: Add place holder recording of dropped events\n\nCurrently, when the ring buffer drops events, it does not record\nthe fact that it did so. It does inform the writer that the event\nwas dropped by returning a NULL event, but it does not put in any\nplace holder where the event was dropped.\n\nThis is not a trivial thing to add because the ring buffer mostly\nruns in overwrite (flight recorder) mode. That is, when the ring\nbuffer is full, new data will overwrite old data.\n\nIn a produce/consumer mode, where new data is simply dropped when\nthe ring buffer is full, it is trivial to add the placeholder\nfor dropped events. When there\u0027s more room to write new data, then\na special event can be added to notify the reader about the dropped\nevents.\n\nBut in overwrite mode, any new write can overwrite events. A place\nholder can not be inserted into the ring buffer since there never\nmay be room. A reader could also come in at anytime and miss the\nplaceholder.\n\nLuckily, the way the ring buffer works, the read side can find out\nif events were lost or not, and how many events. Everytime a write\ntakes place, if it overwrites the header page (the next read) it\nupdates a \"overrun\" variable that keeps track of the number of\nlost events. When a reader swaps out a page from the ring buffer,\nit can record this number, perfom the swap, and then check to\nsee if the number changed, and take the diff if it has, which would be\nthe number of events dropped. This can be stored by the reader\nand returned to callers of the reader.\n\nSince the reader page swap will fail if the writer moved the head\npage since the time the reader page set up the swap, this gives room\nto record the overruns without worrying about races. If the reader\nsets up the pages, records the overrun, than performs the swap,\nif the swap succeeds, then the overrun variable has not been\nupdated since the setup before the swap.\n\nFor binary readers of the ring buffer, a flag is set in the header\nof each sub page (sub buffer) of the ring buffer. This flag is embedded\nin the size field of the data on the sub buffer, in the 31st bit (the size\ncan be 32 or 64 bits depending on the architecture), but only 27\nbits needs to be used for the actual size (less actually).\n\nWe could add a new field in the sub buffer header to also record the\nnumber of events dropped since the last read, but this will change the\nformat of the binary ring buffer a bit too much. Perhaps this change can\nbe made if the information on the number of events dropped is considered\nimportant enough.\n\nNote, the notification of dropped events is only used by consuming reads\nor peeking at the ring buffer. Iterating over the ring buffer does not\nkeep this information because the necessary data is only available when\na page swap is made, and the iterator does not swap out pages.\n\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: \"Luis Claudio R. Goncalves\" \u003clclaudio@uudg.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "292f60c0c4ab44aa2d589ba03c12e64a3b3c5e38",
      "tree": "0c33c9b23202a27c768dee45776503c9ec6b8306",
      "parents": [
        "e36673ec5126f15a8cddf6049aede7bdcf484c26"
      ],
      "author": {
        "name": "Julia Lawall",
        "email": "julia@diku.dk",
        "time": "Mon Mar 29 17:37:02 2010 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Mar 29 15:23:24 2010 -0400"
      },
      "message": "ring-buffer: Add missing unlock\n\nIn some error handling cases the lock is not unlocked.  The return is\nconverted to a goto, to share the unlock at the end of the function.\n\nA simplified version of the semantic patch that finds this problem is as\nfollows: (http://coccinelle.lip6.fr/)\n\n// \u003csmpl\u003e\n@r exists@\nexpression E1;\nidentifier f;\n@@\n\nf (...) { \u003c+...\n* spin_lock_irq (E1,...);\n... when !\u003d E1\n* return ...;\n...+\u003e }\n// \u003c/smpl\u003e\n\nSigned-off-by: Julia Lawall \u003cjulia@diku.dk\u003e\nLKML-Reference: \u003cPine.LNX.4.64.1003291736440.21896@ask.diku.dk\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "e36673ec5126f15a8cddf6049aede7bdcf484c26",
      "tree": "020070456e2875bc2293c36b4fb7415e4d717199",
      "parents": [
        "b72c40949b0f04728f2993a1434598d3bad094ea"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Mar 24 10:57:37 2010 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Mar 29 15:16:44 2010 -0400"
      },
      "message": "tracing: Fix lockdep warning in global_clock()\n\n# echo 1 \u003e events/enable\n # echo global \u003e trace_clock\n\n------------[ cut here ]------------\nWARNING: at kernel/lockdep.c:3162 check_flags+0xb2/0x190()\n...\n---[ end trace 3f86734a89416623 ]---\npossible reason: unannotated irqs-on.\n...\n\nThere\u0027s no reason to use the raw_local_irq_save() in trace_clock_global.\nThe local_irq_save() version is fine, and does not cause the bug in lockdep.\n\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4BA97FA1.7030606@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "833961d81f0ece46b7884f988cc65509e2c49646",
      "tree": "4c4bef2e8ec7d8510de827d83010b0fe76c4924f",
      "parents": [
        "3cacf42462c8c97e045a07a5fc92aa357489c8b5",
        "2271048d1b3b0aabf83d25b29c20646dcabedc05"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 26 15:10:13 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Mar 26 15:10:13 2010 -0700"
      },
      "message": "Merge branch \u0027tracing-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  ring-buffer: Do 8 byte alignment for 64 bit that can not handle 4 byte align\n"
    },
    {
      "commit": "faa4602e47690fb11221e00f9b9697c8dc0d4b19",
      "tree": "af667d1cdff7dc63b6893ee3f27a1f2503229ed1",
      "parents": [
        "7c5ecaf7666617889f337296c610815b519abfa9"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Mar 25 14:51:50 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 26 11:33:55 2010 +0100"
      },
      "message": "x86, perf, bts, mm: Delete the never used BTS-ptrace code\n\nSupport for the PMU\u0027s BTS features has been upstreamed in\nv2.6.32, but we still have the old and disabled ptrace-BTS,\nas Linus noticed it not so long ago.\n\nIt\u0027s buggy: TIF_DEBUGCTLMSR is trampling all over that MSR without\nregard for other uses (perf) and doesn\u0027t provide the flexibility\nneeded for perf either.\n\nIts users are ptrace-block-step and ptrace-bts, since ptrace-bts\nwas never used and ptrace-block-step can be implemented using a\nmuch simpler approach.\n\nSo axe all 3000 lines of it. That includes the *locked_memory*()\nAPIs in mm/mlock.c as well.\n\nReported-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Roland McGrath \u003croland@redhat.com\u003e\nCc: Oleg Nesterov \u003coleg@redhat.com\u003e\nCc: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nLKML-Reference: \u003c20100325135413.938004390@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2271048d1b3b0aabf83d25b29c20646dcabedc05",
      "tree": "4d20fa61a1d6fc2542b283b45c2a7a374fb2c3f5",
      "parents": [
        "a3d3203e4bb40f253b1541e310dc0f9305be7c84"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 18 17:54:19 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Mar 18 23:11:35 2010 -0400"
      },
      "message": "ring-buffer: Do 8 byte alignment for 64 bit that can not handle 4 byte align\n\nThe ring buffer uses 4 byte alignment while recording events into the\nbuffer, even on 64bit machines. This saves space when there are lots\nof events being recorded at 4 byte boundaries.\n\nThe ring buffer has a zero copy method to write into the buffer, with\nthe reserving of space and then committing it. This may cause problems\nwhen writing an 8 byte word into a 4 byte alignment (not 8). For x86 and\nPPC this is not an issue, but on some architectures this would cause an\nout-of-alignment exception.\n\nThis patch uses CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS to determine\nif it is OK to use 4 byte alignments on 64 bit machines. If it is not,\nit forces the ring buffer event header to be 8 bytes and not 4,\nand will align the length of the data to be 8 byte aligned.\nThis keeps the data payload at 8 byte alignments and will allow these\nmachines to run without issue.\n\nThe trick to this is that the header can be either 4 bytes or 8 bytes\ndepending on the length of the data payload. The 4 byte header\nhas a length field that supports up to 112 bytes. If the length of\nthe data is more than 112, the length field is set to zero, and the actual\nlength is stored in the next 4 bytes after the header.\n\nWhen CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set, the code forces\nzero in the 4 byte header forcing the length to be stored in the 4 byte\narray, even with a small data load. It also forces the length of the\ndata load to be 8 byte aligned. The combination of these two guarantee\nthat the data is always at 8 byte alignment.\n\nTested-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n           (on sparc64)\nReported-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "f82c37e7bb4c4d9b6a476c642d5c2d2efbd6f240",
      "tree": "09fc553c2fb6f527962048d139159dc139e04afc",
      "parents": [
        "c6b9e73f2fee8bb86058f296de808b326473456b",
        "dcd5c1662db59a6b82942f47fb6ac9dd63f6d3dd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 18 16:52:46 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Mar 18 16:52:46 2010 -0700"
      },
      "message": "Merge branch \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (35 commits)\n  perf: Fix unexported generic perf_arch_fetch_caller_regs\n  perf record: Don\u0027t try to find buildids in a zero sized file\n  perf: export perf_trace_regs and perf_arch_fetch_caller_regs\n  perf, x86: Fix hw_perf_enable() event assignment\n  perf, ppc: Fix compile error due to new cpu notifiers\n  perf: Make the install relative to DESTDIR if specified\n  kprobes: Calculate the index correctly when freeing the out-of-line execution slot\n  perf tools: Fix sparse CPU numbering related bugs\n  perf_event: Fix oops triggered by cpu offline/online\n  perf: Drop the obsolete profile naming for trace events\n  perf: Take a hot regs snapshot for trace events\n  perf: Introduce new perf_fetch_caller_regs() for hot regs snapshot\n  perf/x86-64: Use frame pointer to walk on irq and process stacks\n  lockdep: Move lock events under lockdep recursion protection\n  perf report: Print the map table just after samples for which no map was found\n  perf report: Add multiple event support\n  perf session: Change perf_session post processing functions to take histogram tree\n  perf session: Add storage for seperating event types in report\n  perf session: Change add_hist_entry to take the tree root instead of session\n  perf record: Add ID and to recorded event data when recording multiple events\n  ...\n"
    },
    {
      "commit": "dcd5c1662db59a6b82942f47fb6ac9dd63f6d3dd",
      "tree": "432f0d89d45fc62d666d46e591ffe109f111cb1e",
      "parents": [
        "9f591fd76afdc0e5192e9ed00a36f8efc0b4dfe6"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Mar 16 01:05:02 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 17 12:26:49 2010 +0100"
      },
      "message": "perf: Fix unexported generic perf_arch_fetch_caller_regs\n\nperf_arch_fetch_caller_regs() is exported for the overriden x86\nversion, but not for the generic weak version.\n\nAs a general rule, weak functions should not have their symbol\nexported in the same file they are defined.\n\nSo let\u0027s export it on trace_event_perf.c as it is used by trace\nevents only.\n\nThis fixes:\n\n\tERROR: \".perf_arch_fetch_caller_regs\" [fs/xfs/xfs.ko] undefined!\n\tERROR: \".perf_arch_fetch_caller_regs\" [arch/powerpc/platforms/cell/spufs/spufs.ko] undefined!\n\n-v2: And also only build it if trace events are enabled.\n-v3: Fix changelog mistake\n\nReported-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nLKML-Reference: \u003c1268697902-9518-1-git-send-regression-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4e3eaddd142e2142c048c5052a0a9d2604fccfc6",
      "tree": "5bc45a286502e54e790c54948f22364c5afd9d89",
      "parents": [
        "8655e7e3ddec60603c4f6c14cdf642e2ba198df8",
        "b97c4bc16734a2e597dac7f91ee9eb78f4aeef9a"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 13 14:43:01 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 13 14:43:01 2010 -0800"
      },
      "message": "Merge branch \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  locking: Make sparse work with inline spinlocks and rwlocks\n  x86/mce: Fix RCU lockdep splats\n  rcu: Increase RCU CPU stall timeouts if PROVE_RCU\n  ftrace: Replace read_barrier_depends() with rcu_dereference_raw()\n  rcu: Suppress RCU lockdep warnings during early boot\n  rcu, ftrace: Fix RCU lockdep splat in ftrace_perf_buf_prepare()\n  rcu: Suppress __mpol_dup() false positive from RCU lockdep\n  rcu: Make rcu_read_lock_sched_held() handle !PREEMPT\n  rcu: Add control variables to lockdep_rcu_dereference() diagnostics\n  rcu, cgroup: Relax the check in task_subsys_state() as early boot is now handled by lockdep-RCU\n  rcu: Use wrapper function instead of exporting tasklist_lock\n  sched, rcu: Fix rcu_dereference() for RCU-lockdep\n  rcu: Make task_subsys_state() RCU-lockdep checks handle boot-time use\n  rcu: Fix holdoff for accelerated GPs for last non-dynticked CPU\n  x86/gart: Unexport gart_iommu_aperture\n\nFix trivial conflicts in kernel/trace/ftrace.c\n"
    },
    {
      "commit": "8655e7e3ddec60603c4f6c14cdf642e2ba198df8",
      "tree": "711b6da2a665e26940c59b9db493c59d879f6cc6",
      "parents": [
        "461d208cfbd1f0af26027b2c35ded515e54b1ee6",
        "b6345879ccbd9b92864fbd7eb8ac48acdb4d6b15"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 13 14:40:50 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Mar 13 14:40:50 2010 -0800"
      },
      "message": "Merge branch \u0027tracing-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  tracing: Do not record user stack trace from NMI context\n  tracing: Disable buffer switching when starting or stopping trace\n  tracing: Use same local variable when resetting the ring buffer\n  function-graph: Init curr_ret_stack with ret_stack\n  ring-buffer: Move disabled check into preempt disable section\n  function-graph: Add tracing_thresh support to function_graph tracer\n  tracing: Update the comm field in the right variable in update_max_tr\n  function-graph: Use comment notation for func names of dangling \u0027}\u0027\n  function-graph: Fix unused reference to ftrace_set_func()\n  tracing: Fix warning in s_next of trace file ops\n  tracing: Include irqflags headers from trace clock\n"
    },
    {
      "commit": "b6345879ccbd9b92864fbd7eb8ac48acdb4d6b15",
      "tree": "5f7d831ab4de8f8c3577230ba8b15e0681eef52f",
      "parents": [
        "a2f8071428ed9a0f06865f417c962421c9a6b488"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Mar 12 20:03:30 2010 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 12 20:31:49 2010 -0500"
      },
      "message": "tracing: Do not record user stack trace from NMI context\n\nA bug was found with Li Zefan\u0027s ftrace_stress_test that caused applications\nto segfault during the test.\n\nPlacing a tracing_off() in the segfault code, and examining several\ntraces, I found that the following was always the case. The lock tracer\nwas enabled (lockdep being required) and userstack was enabled. Testing\nthis out, I just enabled the two, but that was not good enough. I needed\nto run something else that could trigger it. Running a load like hackbench\ndid not work, but executing a new program would. The following would\ntrigger the segfault within seconds:\n\n  # echo 1 \u003e /debug/tracing/options/userstacktrace\n  # echo 1 \u003e /debug/tracing/events/lock/enable\n  # while :; do ls \u003e /dev/null ; done\n\nEnabling the function graph tracer and looking at what was happening\nI finally noticed that all cashes happened just after an NMI.\n\n 1)               |    copy_user_handle_tail() {\n 1)               |      bad_area_nosemaphore() {\n 1)               |        __bad_area_nosemaphore() {\n 1)               |          no_context() {\n 1)               |            fixup_exception() {\n 1)   0.319 us    |              search_exception_tables();\n 1)   0.873 us    |            }\n[...]\n 1)   0.314 us    |  __rcu_read_unlock();\n 1)   0.325 us    |    native_apic_mem_write();\n 1)   0.943 us    |  }\n 1)   0.304 us    |  rcu_nmi_exit();\n[...]\n 1)   0.479 us    |  find_vma();\n 1)               |  bad_area() {\n 1)               |    __bad_area() {\n\nAfter capturing several traces of failures, all of them happened\nafter an NMI. Curious about this, I added a trace_printk() to the NMI\nhandler to read the regs-\u003eip to see where the NMI happened. In which I\nfound out it was here:\n\nffffffff8135b660 \u003cpage_fault\u003e:\nffffffff8135b660:       48 83 ec 78             sub    $0x78,%rsp\nffffffff8135b664:       e8 97 01 00 00          callq  ffffffff8135b800 \u003cerror_entry\u003e\n\nWhat was happening is that the NMI would happen at the place that a page\nfault occurred. It would call rcu_read_lock() which was traced by\nthe lock events, and the user_stack_trace would run. This would trigger\na page fault inside the NMI. I do not see where the CR2 register is\nsaved or restored in NMI handling. This means that it would corrupt\nthe page fault handling that the NMI interrupted.\n\nThe reason the while loop of ls helped trigger the bug, was that\neach execution of ls would cause lots of pages to be faulted in, and\nincrease the chances of the race happening.\n\nThe simple solution is to not allow user stack traces in NMI context.\nAfter this patch, I ran the above \"ls\" test for a couple of hours\nwithout any issues. Without this patch, the bug would trigger in less\nthan a minute.\n\nCc: stable@kernel.org\nReported-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a2f8071428ed9a0f06865f417c962421c9a6b488",
      "tree": "731d1e4f684fa5e5e27b56f1ed5f74d5945b20bd",
      "parents": [
        "283740c619d211e34572cc93c8cdba92ccbdb9cc"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Mar 12 19:56:00 2010 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 12 20:30:21 2010 -0500"
      },
      "message": "tracing: Disable buffer switching when starting or stopping trace\n\nWhen the trace iterator is read, tracing_start() and tracing_stop()\nis called to stop tracing while the iterator is processing the trace\noutput.\n\nThese functions disable both the standard buffer and the max latency\nbuffer. But if the wakeup tracer is running, it can switch these\nbuffers between the two disables:\n\n  buffer \u003d global_trace.buffer;\n  if (buffer)\n      ring_buffer_record_disable(buffer);\n\n      \u003c\u003c\u003c--------- swap happens here\n\n  buffer \u003d max_tr.buffer;\n  if (buffer)\n      ring_buffer_record_disable(buffer);\n\nWhat happens is that we disabled the same buffer twice. On tracing_start()\nwe can enable the same buffer twice. All ring_buffer_record_disable()\nmust be matched with a ring_buffer_record_enable() or the buffer\ncan be disable permanently, or enable prematurely, and cause a bug\nwhere a reset happens while a trace is commiting.\n\nThis patch protects these two by taking the ftrace_max_lock to prevent\na switch from occurring.\n\nFound with Li Zefan\u0027s ftrace_stress_test.\n\nCc: stable@kernel.org\nReported-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "283740c619d211e34572cc93c8cdba92ccbdb9cc",
      "tree": "3bdce475017ff9a5fe82c6d214d27b27e555320c",
      "parents": [
        "ea14eb714041d40fcc5180b5a586034503650149"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Mar 12 19:48:41 2010 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 12 20:29:20 2010 -0500"
      },
      "message": "tracing: Use same local variable when resetting the ring buffer\n\nIn the ftrace code that resets the ring buffer it references the\nbuffer with a local variable, but then uses the tr-\u003ebuffer as the\nparameter to reset. If the wakeup tracer is running, which can\nswitch the tr-\u003ebuffer with the max saved buffer, this can break\nthe requirement of disabling the buffer before the reset.\n\n   buffer \u003d tr-\u003ebuffer;\n   ring_buffer_record_disable(buffer);\n   synchronize_sched();\n   __tracing_reset(tr-\u003ebuffer, cpu);\n\nIf the tr-\u003ebuffer is swapped, then the reset is not happening to the\nbuffer that was disabled. This will cause the ring buffer to fail.\n\nFound with Li Zefan\u0027s ftrace_stress_test.\n\nCc: stable@kernel.org\nReported-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "ea14eb714041d40fcc5180b5a586034503650149",
      "tree": "a7cb72753c85cf79ac6fa31863d65d2f081e0823",
      "parents": [
        "52fbe9cde7fdb5c6fac196d7ebd2d92d05ef3cd4"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Mar 12 19:41:23 2010 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 12 20:28:02 2010 -0500"
      },
      "message": "function-graph: Init curr_ret_stack with ret_stack\n\nIf the graph tracer is active, and a task is forked but the allocating of\nthe processes graph stack fails, it can cause crash later on.\n\nThis is due to the temporary stack being NULL, but the curr_ret_stack\nvariable is copied from the parent. If it is not -1, then in\nftrace_graph_probe_sched_switch() the following:\n\n\tfor (index \u003d next-\u003ecurr_ret_stack; index \u003e\u003d 0; index--)\n\t\tnext-\u003eret_stack[index].calltime +\u003d timestamp;\n\nWill cause a kernel OOPS.\n\nFound with Li Zefan\u0027s ftrace_stress_test.\n\nCc: stable@kernel.org\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "52fbe9cde7fdb5c6fac196d7ebd2d92d05ef3cd4",
      "tree": "77ec9beecf7a58ed06f59c589f122caf87ec4f0b",
      "parents": [
        "915a0b575fdb2376135ed9334b3ccb1eb51db622"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Mon Mar 08 14:50:43 2010 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 12 20:26:56 2010 -0500"
      },
      "message": "ring-buffer: Move disabled check into preempt disable section\n\nThe ring buffer resizing and resetting relies on a schedule RCU\naction. The buffers are disabled, a synchronize_sched() is called\nand then the resize or reset takes place.\n\nBut this only works if the disabling of the buffers are within the\npreempt disabled section, otherwise a window exists that the buffers\ncan be written to while a reset or resize takes place.\n\nCc: stable@kernel.org\nReported-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4B949E43.2010906@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "639fe4b12f92b54c9c3b38c82cdafaa38cfd3e63",
      "tree": "145b856d6945bf8575e0b1636a91be6474f87562",
      "parents": [
        "45e16a6834b6af098702e5ea6c9a40de42ff77d8"
      ],
      "author": {
        "name": "Xiao Guangrong",
        "email": "xiaoguangrong@cn.fujitsu.com",
        "time": "Thu Mar 11 15:30:35 2010 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 11 15:21:29 2010 +0100"
      },
      "message": "perf: export perf_trace_regs and perf_arch_fetch_caller_regs\n\nExport perf_trace_regs and perf_arch_fetch_caller_regs since module will\nuse these.\n\nSigned-off-by: Xiao Guangrong \u003cxiaoguangrong@cn.fujitsu.com\u003e\n[ use EXPORT_PER_CPU_SYMBOL_GPL() ]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c4B989C1B.2090407@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "915a0b575fdb2376135ed9334b3ccb1eb51db622",
      "tree": "12070fc07897e0cd9170aeb351a96923d44d7813",
      "parents": [
        "e02c4fd3142dfb9412531bbfabd510a2a7c6ea46",
        "0e95017355dcf43031da6d0e360a748717e56df1"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 11 13:39:33 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 11 13:39:33 2010 +0100"
      },
      "message": "Merge branch \u0027tip/tracing/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent\n"
    },
    {
      "commit": "3f379b03fbfddd20536389a85c6456f8233d1f8d",
      "tree": "2847590a23aa0d72e799bd6d65a8a794abb565ac",
      "parents": [
        "54dbf96c921513bf98484a20ef366d51944a4c4d"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Fri Mar 05 15:03:25 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 11 13:38:01 2010 +0100"
      },
      "message": "ftrace: Replace read_barrier_depends() with rcu_dereference_raw()\n\nReplace the calls to read_barrier_depends() in\nftrace_list_func() with rcu_dereference_raw() to improve\nreadability.  The reason that we use rcu_dereference_raw() here\nis that removed entries are never freed, instead they are simply\nleaked.  This is one of a very few cases where use of\nrcu_dereference_raw() is the long-term right answer.  And I\ndon\u0027t yet know of any others.  ;-)\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nLKML-Reference: \u003c1267830207-9474-1-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "97d5a22005f38057b4bc0d95f81cd26510268794",
      "tree": "b981789b1cec8ac36527e52204e407b32efa0ea6",
      "parents": [
        "c530665c31c0140b74ca7689e7f836177796e5bd"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Mar 05 05:35:37 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Mar 10 14:47:18 2010 +0100"
      },
      "message": "perf: Drop the obsolete profile naming for trace events\n\nDrop the obsolete \"profile\" naming used by perf for trace events.\nPerf can now do more than simple events counting, so generalize\nthe API naming.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Jason Baron \u003cjbaron@redhat.com\u003e\n"
    },
    {
      "commit": "c530665c31c0140b74ca7689e7f836177796e5bd",
      "tree": "ac9ebb98aca58fdf84cc18958a94393a9a7bbdf3",
      "parents": [
        "5331d7b84613b8325362dde53dc2bff2fb87d351"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Mar 03 07:16:16 2010 +0100"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Mar 10 14:40:38 2010 +0100"
      },
      "message": "perf: Take a hot regs snapshot for trace events\n\nWe are taking a wrong regs snapshot when a trace event triggers.\nEither we use get_irq_regs(), which gives us the interrupted\nregisters if we are in an interrupt, or we use task_pt_regs()\nwhich gives us the state before we entered the kernel, assuming\nwe are lucky enough to be no kernel thread, in which case\ntask_pt_regs() returns the initial set of regs when the kernel\nthread was started.\n\nWhat we want is different. We need a hot snapshot of the regs,\nso that we can get the instruction pointer to record in the\nsample, the frame pointer for the callchain, and some other\nthings.\n\nLet\u0027s use the new perf_fetch_caller_regs() for that.\n\nComparison with perf record -e lock: -R -a -f -g\nBefore:\n\n        perf  [kernel]                   [k] __do_softirq\n               |\n               --- __do_softirq\n                  |\n                  |--55.16%-- __open\n                  |\n                   --44.84%-- __write_nocancel\n\nAfter:\n\n            perf  [kernel]           [k] perf_tp_event\n               |\n               --- perf_tp_event\n                  |\n                  |--41.07%-- lock_acquire\n                  |          |\n                  |          |--39.36%-- _raw_spin_lock\n                  |          |          |\n                  |          |          |--7.81%-- hrtimer_interrupt\n                  |          |          |          smp_apic_timer_interrupt\n                  |          |          |          apic_timer_interrupt\n\nThe old case was producing unreliable callchains. Now having\nright frame and instruction pointers, we have the trace we\nwant.\n\nAlso syscalls and kprobe events already have the right regs,\nlet\u0027s use them instead of wasting a retrieval.\n\nv2: Follow the rename perf_save_regs() -\u003e perf_fetch_caller_regs()\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nCc: H. Peter Anvin \u003chpa@zytor.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nCc: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Archs \u003clinux-arch@vger.kernel.org\u003e\n"
    },
    {
      "commit": "318ae2edc3b29216abd8a2510f3f80b764f06858",
      "tree": "ce595adde342f57f379d277b25e4dd206988a052",
      "parents": [
        "25cf84cf377c0aae5dbcf937ea89bc7893db5176",
        "3e58974027b04e84f68b964ef368a6cd758e2f84"
      ],
      "author": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 08 16:55:37 2010 +0100"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Mar 08 16:55:37 2010 +0100"
      },
      "message": "Merge branch \u0027for-next\u0027 into for-linus\n\nConflicts:\n\tDocumentation/filesystems/proc.txt\n\tarch/arm/mach-u300/include/mach/debug-macro.S\n\tdrivers/net/qlge/qlge_ethtool.c\n\tdrivers/net/qlge/qlge_main.c\n\tdrivers/net/typhoon.c\n"
    },
    {
      "commit": "0e95017355dcf43031da6d0e360a748717e56df1",
      "tree": "829989bfb494e8d2d773d9dc1bc014b7f28d3bed",
      "parents": [
        "1acaa1b2d9b5904c9cce06122990a2d71046ce16"
      ],
      "author": {
        "name": "Tim Bird",
        "email": "tim.bird@am.sony.com",
        "time": "Thu Feb 25 15:36:43 2010 -0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 05 21:20:57 2010 -0500"
      },
      "message": "function-graph: Add tracing_thresh support to function_graph tracer\n\nAdd support for tracing_thresh to the function_graph tracer.  This\nversion of this feature isolates the checks into new entry and\nreturn functions, to avoid adding more conditional code into the\nmain function_graph paths.\n\nWhen the tracing_thresh is set and the function graph tracer is\nenabled, only the functions that took longer than the time in\nmicroseconds that was set in tracing_thresh are recorded. To do this\nefficiently, only the function exits are recorded:\n\n [tracing]# echo 100 \u003e tracing_thresh\n [tracing]# echo function_graph \u003e current_tracer\n [tracing]# cat trace\n # tracer: function_graph\n #\n # CPU  DURATION                  FUNCTION CALLS\n # |     |   |                     |   |   |   |\n  1) ! 119.214 us  |  } /* smp_apic_timer_interrupt */\n  1)   \u003c\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d |\n  0) ! 101.527 us  |              } /* __rcu_process_callbacks */\n  0) ! 126.461 us  |            } /* rcu_process_callbacks */\n  0) ! 145.111 us  |          } /* __do_softirq */\n  0) ! 149.667 us  |        } /* do_softirq */\n  0) ! 168.817 us  |      } /* irq_exit */\n  0) ! 248.254 us  |    } /* smp_apic_timer_interrupt */\n\nAlso, add support for specifying tracing_thresh on the kernel\ncommand line.  When used like so: \"tracing_thresh\u003d200 ftrace\u003dfunction_graph\"\nthis can be used to analyse system startup.  It is important to disable\ntracing soon after boot, in order to avoid losing the trace data.\n\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Tim Bird \u003ctim.bird@am.sony.com\u003e\nLKML-Reference: \u003c4B87098B.4040308@am.sony.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "1acaa1b2d9b5904c9cce06122990a2d71046ce16",
      "tree": "76e4d061aa4c666c89f581e438b105bd69ee27df",
      "parents": [
        "a094fe04c751698a18c3a0d376a3bdb117f1e0d8"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Fri Mar 05 18:23:50 2010 -0300"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 05 21:12:08 2010 -0500"
      },
      "message": "tracing: Update the comm field in the right variable in update_max_tr\n\nThe latency output showed:\n\n #    | task: -3 (uid:0 nice:0 policy:1 rt_prio:99)\n\nThe comm is missing in the \"task:\" and it looks like a minus 3 is\nthe output. The correct display should be:\n\n #    | task: migration/0-3 (uid:0 nice:0 policy:1 rt_prio:99)\n\nThe problem is that the comm is being stored in the wrong data\nstructure. The max_tr.data[cpu] is what stores the comm, not the\ntr-\u003edata[cpu].\n\nBefore this patch the max_tr.data[cpu]-\u003ecomm was zeroed and the /debug/trace\nended up showing just the \u0027-\u0027 sign followed by the pid.\n\nAlso remove a needless initialization of max_data.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nLKML-Reference: \u003c1267824230-23861-1-git-send-email-acme@infradead.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a094fe04c751698a18c3a0d376a3bdb117f1e0d8",
      "tree": "7abee80b275f376b686a7b616cfa13cf24d386b9",
      "parents": [
        "801c29fd1fdeb84f60241beb445ff5db154450ae"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Mar 05 20:08:58 2010 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 05 21:11:13 2010 -0500"
      },
      "message": "function-graph: Use comment notation for func names of dangling \u0027}\u0027\n\nWhen a \u0027}\u0027 does not have a matching function start, the name is printed\nwithin parenthesis. But this makes it confusing between ending \u0027}\u0027\nand function starts. This patch makes the function name appear in C comment\nnotation.\n\nOld view:\n 3)   1.281 us    |            } (might_fault)\n 3)   3.620 us    |          } (filldir)\n 3)   5.251 us    |        } (call_filldir)\n 3)               |        call_filldir() {\n 3)               |          filldir() {\n\nNew view:\n 3)   1.281 us    |            } /* might_fault */\n 3)   3.620 us    |          } /* filldir */\n 3)   5.251 us    |        } /* call_filldir */\n 3)               |        call_filldir() {\n 3)               |          filldir() {\n\nRequested-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "801c29fd1fdeb84f60241beb445ff5db154450ae",
      "tree": "ce6d2cf95d86c7863393914b5ba37c90b56b44e9",
      "parents": [
        "ae1f30384baef4056438d81b305a6a5199b0d16c"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Mar 05 20:02:19 2010 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Mar 05 21:00:30 2010 -0500"
      },
      "message": "function-graph: Fix unused reference to ftrace_set_func()\n\nThe declaration of ftrace_set_func() is at the start of the ftrace.c file\nand wrapped with a #ifdef CONFIG_FUNCTION_GRAPH condition. If function\ngraph tracing is enabled but CONFIG_DYNAMIC_FTRACE is not, a warning\nabout that function being declared static and unused is given.\n\nThis really should have been placed within the CONFIG_FUNCTION_GRAPH\ncondition that uses ftrace_set_func().\n\nMoving the declaration down fixes the warning and makes the code cleaner.\n\nReported-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "8d53dd546f36073e0d29b0cfc24c665db301e3e7",
      "tree": "1cd2582e669fe2ff580ddc707705e5efb18251de",
      "parents": [
        "99ee4ca746dda71326db7645463b4075ac1d665c"
      ],
      "author": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Wed Mar 03 17:50:18 2010 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 04 12:07:35 2010 +0100"
      },
      "message": "rcu, ftrace: Fix RCU lockdep splat in ftrace_perf_buf_prepare()\n\nChange the pair of rcu_dereference() calls in\nftrace_perf_buf_prepare() to rcu_dereference_sched().\n\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: laijs@cn.fujitsu.com\nCc: dipankar@in.ibm.com\nCc: mathieu.desnoyers@polymtl.ca\nCc: josh@joshtriplett.org\nCc: dvhltc@us.ibm.com\nCc: niv@us.ibm.com\nCc: peterz@infradead.org\nCc: Valdis.Kletnieks@vt.edu\nCc: dhowells@redhat.com\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c1267667418-32233-3-git-send-email-paulmck@linux.vnet.ibm.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e02c4fd3142dfb9412531bbfabd510a2a7c6ea46",
      "tree": "61b64506b2c016e050f940a89d1ffd36b7c00fdf",
      "parents": [
        "ae1f30384baef4056438d81b305a6a5199b0d16c",
        "ac91d85456372a90af5b85eb6620fd2efb1e431b"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 04 11:51:29 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 04 11:51:29 2010 +0100"
      },
      "message": "Merge branch \u0027tip/tracing/urgent\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/urgent\n"
    },
    {
      "commit": "0a135ba14d71fb84c691a5386aff5049691fe6d7",
      "tree": "adb1de887dd6839d69d2fc16ffa2a10ff63298fa",
      "parents": [
        "4850f524b2c4c8a4e9f8ef4dd9c7c4afde2f2b2c",
        "a29d8b8e2d811a24bbe49215a0f0c536b72ebc18"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Mar 03 07:34:18 2010 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:\n  percpu: add __percpu sparse annotations to what\u0027s left\n  percpu: add __percpu sparse annotations to fs\n  percpu: add __percpu sparse annotations to core kernel subsystems\n  local_t: Remove leftover local.h\n  this_cpu: Remove pageset_notifier\n  this_cpu: Page allocator conversion\n  percpu, x86: Generic inc / dec percpu instructions\n  local_t: Move local.h include to ringbuffer.c and ring_buffer_benchmark.c\n  module: Use this_cpu_xx to dynamically allocate counters\n  local_t: Remove cpu_local_xx macros\n  percpu: refactor the code in pcpu_[de]populate_chunk()\n  percpu: remove compile warnings caused by __verify_pcpu_ptr()\n  percpu: make accessors check for percpu pointer in sparse\n  percpu: add __percpu for sparse.\n  percpu: make access macros universal\n  percpu: remove per_cpu__ prefix.\n"
    },
    {
      "commit": "ac91d85456372a90af5b85eb6620fd2efb1e431b",
      "tree": "df15f1b8c3c6b8b5a6367f70a527b2da7e240361",
      "parents": [
        "3a5b27bf6f29574d667230c7e76e4b83fe3014e0"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Tue Mar 02 17:54:50 2010 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Mar 02 21:11:47 2010 -0500"
      },
      "message": "tracing: Fix warning in s_next of trace file ops\n\nThis warning in s_next() can be triggered by lseek():\n [\u003cc018b3f7\u003e] ? s_next+0x77/0x80\n [\u003cc013e3c1\u003e] warn_slowpath_common+0x81/0xa0\n [\u003cc018b3f7\u003e] ? s_next+0x77/0x80\n [\u003cc013e3fa\u003e] warn_slowpath_null+0x1a/0x20\n [\u003cc018b3f7\u003e] s_next+0x77/0x80\n [\u003cc01efa77\u003e] traverse+0x117/0x200\n [\u003cc01eff13\u003e] seq_lseek+0xa3/0x120\n [\u003cc01efe70\u003e] ? seq_lseek+0x0/0x120\n [\u003cc01d7081\u003e] vfs_llseek+0x41/0x50\n [\u003cc01d8116\u003e] sys_llseek+0x66/0xa0\n [\u003cc0102bd0\u003e] sysenter_do_call+0x12/0x26\n\nThe iterator \"leftover\" variable is zeroed in the opening of the trace\nfile. But lseek can call s_start() which will call s_next() without\nreseting the \"leftover\" variable back to zero, which might trigger\nthe WARN_ON_ONCE(iter-\u003eleftover) that is in s_next().\n\nCc: stable@kernel.org\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nLKML-Reference: \u003c4B8CE06A.9090207@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b1bf9368407ae7e89d8a005bb40beb70a41df539",
      "tree": "3815c8aab19c6c186736673c624fef5f3faab716",
      "parents": [
        "524df55725217b13d5a232fb5badb5846418ea0e",
        "4671a1322052425afa38fcb7980d2fd2bb0fc99b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 01 09:00:29 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 01 09:00:29 2010 -0800"
      },
      "message": "Merge branch \u0027for-2.6.34\u0027 of git://git.kernel.dk/linux-2.6-block\n\n* \u0027for-2.6.34\u0027 of git://git.kernel.dk/linux-2.6-block: (38 commits)\n  block: don\u0027t access jiffies when initialising io_context\n  cfq: remove 8 bytes of padding from cfq_rb_root on 64 bit builds\n  block: fix for \"Consolidate phys_segment and hw_segment limits\"\n  cfq-iosched: quantum check tweak\n  blktrace: perform cleanup after setup error\n  blkdev: fix merge_bvec_fn return value checks\n  cfq-iosched: requests \"in flight\" vs \"in driver\" clarification\n  cciss: Fix problem with scatter gather elements in the scsi half of the driver\n  cciss: eliminate unnecessary pointer use in cciss scsi code\n  cciss: do not use void pointer for scsi hba data\n  cciss: factor out scatter gather chain block mapping code\n  cciss: fix scatter gather chain block dma direction kludge\n  cciss: simplify scatter gather code\n  cciss: factor out scatter gather chain block allocation and freeing\n  cciss: detect bad alignment of scsi commands at build time\n  cciss: clarify command list padding calculation\n  cfq-iosched: rethink seeky detection for SSDs\n  cfq-iosched: rework seeky detection\n  block: remove padding from io_context on 64bit builds\n  block: Consolidate phys_segment and hw_segment limits\n  ...\n"
    },
    {
      "commit": "9a8c28c8311e30ba97499447d5a11662f5aea094",
      "tree": "b0260ab00c6e24fb02ca1cb3c147350e933c79ba",
      "parents": [
        "9f7cdbc33f36d28e57eaba0093f68f0d14c38c5b"
      ],
      "author": {
        "name": "Dmitry Monakhov",
        "email": "dmonakhov@openvz.org",
        "time": "Sat Feb 27 20:35:13 2010 +0300"
      },
      "committer": {
        "name": "Jens Axboe",
        "email": "jens.axboe@oracle.com",
        "time": "Sun Feb 28 19:47:19 2010 +0100"
      },
      "message": "blktrace: perform cleanup after setup error\n\nCurrently even if BLKTRACESETUP ioctl has failed user must call\nBLKTRACETEARDOWN to be shure what all staff was cleaned, which\nis contr-intuitive.\nLet\u0027s setup ioctl make necessery cleanup by it self.\n\nSigned-off-by: Dmitry Monakhov \u003cdmonakhov@openvz.org\u003e\nSigned-off-by: Jens Axboe \u003cjens.axboe@oracle.com\u003e\n"
    },
    {
      "commit": "ae1f30384baef4056438d81b305a6a5199b0d16c",
      "tree": "8080911432c5a3dbf535e69b8e23f1d21164104e",
      "parents": [
        "480917427b0b6ff39de55ffc81391055472e6c26"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Feb 28 19:42:38 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Feb 28 19:45:01 2010 +0100"
      },
      "message": "tracing: Include irqflags headers from trace clock\n\ntrace_clock.c includes spinlock.h, which ends up including\nasm/system.h, which in turn includes linux/irqflags.h in x86.\n\nSo the definition of raw_local_irq_save is luckily covered there,\nbut this is not the case in parisc:\n\n   tip/kernel/trace/trace_clock.c:86: error: implicit declaration of function \u0027raw_local_irq_save\u0027\n   tip/kernel/trace/trace_clock.c:112: error: implicit declaration of function \u0027raw_local_irq_restore\u0027\n\nWe need to include linux/irqflags.h directly from trace_clock.c\nto avoid such build error.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6556a6743549defc32e5f90ee2cb1ecd833a44c3",
      "tree": "622306583d4a3c13235a8bfc012854c125c597f1",
      "parents": [
        "e0d272429a34ff143bfa04ee8e29dd4eed2964c7",
        "1dd2980d990068e20045b90c424518cc7f3657ff"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 28 10:20:25 2010 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Feb 28 10:20:25 2010 -0800"
      },
      "message": "Merge branch \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (172 commits)\n  perf_event, amd: Fix spinlock initialization\n  perf_event: Fix preempt warning in perf_clock()\n  perf tools: Flush maps on COMM events\n  perf_events, x86: Split PMU definitions into separate files\n  perf annotate: Handle samples not at objdump output addr boundaries\n  perf_events, x86: Remove superflous MSR writes\n  perf_events: Simplify code by removing cpu argument to hw_perf_group_sched_in()\n  perf_events, x86: AMD event scheduling\n  perf_events: Add new start/stop PMU callbacks\n  perf_events: Report the MMAP pgoff value in bytes\n  perf annotate: Defer allocating sym_priv-\u003ehist array\n  perf symbols: Improve debugging information about symtab origins\n  perf top: Use a macro instead of a constant variable\n  perf symbols: Check the right return variable\n  perf/scripts: Tag syscall_name helper as not yet available\n  perf/scripts: Add perf-trace-python Documentation\n  perf/scripts: Remove unnecessary PyTuple resizes\n  perf/scripts: Add syscall tracing scripts\n  perf/scripts: Add Python scripting engine\n  perf/scripts: Remove check-perf-trace from listed scripts\n  ...\n\nFix trivial conflict in tools/perf/util/probe-event.c\n"
    },
    {
      "commit": "480917427b0b6ff39de55ffc81391055472e6c26",
      "tree": "1108a81c38967031d929acec357885745d83d46c",
      "parents": [
        "6fb83029db161141d68cf019760a893d03d0682b",
        "f1c7f517a5dc23bce07efa5ed55e2c074ed9d4ba"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Feb 27 10:41:16 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Feb 27 10:41:16 2010 +0100"
      },
      "message": "Merge branch \u0027tip/tracing/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/core\n"
    },
    {
      "commit": "6fb83029db161141d68cf019760a893d03d0682b",
      "tree": "6f149c23cedc9b2a5f72b5b90ab8426b39afbb7c",
      "parents": [
        "281b3714e91162b66add1cfac404cf7b81e3e2f2",
        "e01292b1fd68ff2abe234d584b06e64344d2c1de"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Feb 27 10:06:10 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Feb 27 10:06:10 2010 +0100"
      },
      "message": "Merge branch \u0027tracing/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing into tracing/core\n"
    },
    {
      "commit": "f1c7f517a5dc23bce07efa5ed55e2c074ed9d4ba",
      "tree": "187be4d66aaa35db2eb1cd77b49520868e999b67",
      "parents": [
        "281b3714e91162b66add1cfac404cf7b81e3e2f2"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Feb 26 17:08:16 2010 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Feb 26 19:25:53 2010 -0500"
      },
      "message": "ftrace: Add function names to dangling } in function graph tracer\n\nThe function graph tracer is currently the most invasive tracer\nin the ftrace family. It can easily overflow the buffer even with\n10megs per CPU. This means that events can often be lost.\n\nOn start up, or after events are lost, if the function return is\nrecorded but the function enter was lost, all we get to see is the\nexiting \u0027}\u0027.\n\nHere is how a typical trace output starts:\n\n [tracing] cat trace\n # tracer: function_graph\n #\n # CPU  DURATION                  FUNCTION CALLS\n # |     |   |                     |   |   |   |\n  0) + 91.897 us   |                  }\n  0) ! 567.961 us  |                }\n  0)   \u003c\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d |\n  0) ! 579.083 us  |                _raw_spin_lock_irqsave();\n  0)   4.694 us    |                _raw_spin_unlock_irqrestore();\n  0) ! 594.862 us  |              }\n  0) ! 603.361 us  |            }\n  0) ! 613.574 us  |          }\n  0) ! 623.554 us  |        }\n  0)   3.653 us    |        fget_light();\n  0)               |        sock_poll() {\n\nThere are a series of \u0027}\u0027 with no matching \"func() {\". There\u0027s no information\nto what functions these ending brackets belong to.\n\nThis patch adds a stack on the per cpu structure used in outputting\nthe function graph tracer to keep track of what function was outputted.\nThen on a function exit event, it checks the depth to see if the\nfunction exit has a matching entry event. If it does, then it only\nprints the \u0027}\u0027, otherwise it adds the function name after the \u0027}\u0027.\n\nThis allows function exit events to show what function they belong to\nat trace output startup, when the entry was lost due to ring buffer\noverflow, or even after a new task is scheduled in.\n\nHere is what the above trace will look like after this patch:\n\n [tracing] cat trace\n # tracer: function_graph\n #\n # CPU  DURATION                  FUNCTION CALLS\n # |     |   |                     |   |   |   |\n  0) + 91.897 us   |                  } (irq_exit)\n  0) ! 567.961 us  |                } (smp_apic_timer_interrupt)\n  0)   \u003c\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d |\n  0) ! 579.083 us  |                _raw_spin_lock_irqsave();\n  0)   4.694 us    |                _raw_spin_unlock_irqrestore();\n  0) ! 594.862 us  |              } (add_wait_queue)\n  0) ! 603.361 us  |            } (__pollwait)\n  0) ! 613.574 us  |          } (tcp_poll)\n  0) ! 623.554 us  |        } (sock_poll)\n  0)   3.653 us    |        fget_light();\n  0)               |        sock_poll() {\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "281b3714e91162b66add1cfac404cf7b81e3e2f2",
      "tree": "9f80453153db272c207129d971e17d31a6bb214a",
      "parents": [
        "64b9fb5704a479d98a59f2a1d45d3331a8f847f8",
        "7b60997f73865b019e595720185c85285ca3df9a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 26 09:20:17 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 26 09:20:17 2010 +0100"
      },
      "message": "Merge branch \u0027tip/tracing/core\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/core\n"
    },
    {
      "commit": "64b9fb5704a479d98a59f2a1d45d3331a8f847f8",
      "tree": "2b1052b05fa7615c817894bc9802bc5bb2af7ac1",
      "parents": [
        "83f0d53993b2967e54186468b0fc4321447f68f1",
        "60b341b778cc2929df16c0a504c91621b3c6a4ad"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 26 09:18:32 2010 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 26 09:18:32 2010 +0100"
      },
      "message": "Merge commit \u0027v2.6.33\u0027 into tracing/core\n\nConflicts:\n\tscripts/recordmcount.pl\n\nMerge reason: Merge up to v2.6.33.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7b60997f73865b019e595720185c85285ca3df9a",
      "tree": "4b441b810a31484cf28621b7690dadcf71a19e3e",
      "parents": [
        "c85f3a91f84d5a85f179c2504bb7a39370c82b41"
      ],
      "author": {
        "name": "Wenji Huang",
        "email": "wenji.huang@oracle.com",
        "time": "Wed Feb 24 15:40:26 2010 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Feb 25 10:42:55 2010 -0500"
      },
      "message": "tracing: Simplify memory recycle of trace_define_field\n\nDiscard freeing field-\u003etype since it is not necessary.\n\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Wenji Huang \u003cwenji.huang@oracle.com\u003e\nLKML-Reference: \u003c1266997226-6833-5-git-send-email-wenji.huang@oracle.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "c85f3a91f84d5a85f179c2504bb7a39370c82b41",
      "tree": "04f082a3f73138f97a4022e624942f29420617a9",
      "parents": [
        "a5efd925115cbc1f90195dca9a25f7b8daa10c37"
      ],
      "author": {
        "name": "Wenji Huang",
        "email": "wenji.huang@oracle.com",
        "time": "Wed Feb 24 15:40:24 2010 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Feb 25 10:41:24 2010 -0500"
      },
      "message": "tracing: Remove unnecessary variable in print_graph_return\n\nThe \"cpu\" variable is declared at the start of the function and\nalso within a branch, with the exact same initialization.\n\nRemove the local variable of the same name in the branch.\n\nSigned-off-by: Wenji Huang \u003cwenji.huang@oracle.com\u003e\nLKML-Reference: \u003c1266997226-6833-3-git-send-email-wenji.huang@oracle.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "a5efd925115cbc1f90195dca9a25f7b8daa10c37",
      "tree": "476e5db28eec3d8a9145ccacdde7b35801af757b",
      "parents": [
        "6574658b3bc7c408581629de5efb809f125cce8c"
      ],
      "author": {
        "name": "Wenji Huang",
        "email": "wenji.huang@oracle.com",
        "time": "Wed Feb 24 15:40:23 2010 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Feb 25 10:36:29 2010 -0500"
      },
      "message": "tracing: Fix typo of info text in trace_kprobe.c\n\nSigned-off-by: Wenji Huang \u003cwenji.huang@oracle.com\u003e\nLKML-Reference: \u003c1266997226-6833-2-git-send-email-wenji.huang@oracle.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    }
  ],
  "next": "6574658b3bc7c408581629de5efb809f125cce8c"
}
