)]}'
{
  "log": [
    {
      "commit": "1155de47cd66d0c496d5a6fb2223e980ef1285b2",
      "tree": "0ee762d6b1215a37fe89acc174de8cbbf476d218",
      "parents": [
        "00e54d087afb3867b0b461aef6c1ff433d0df564"
      ],
      "author": {
        "name": "Paul Mundt",
        "email": "lethal@linux-sh.org",
        "time": "Thu Jun 25 14:30:12 2009 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jun 25 10:31:30 2009 +0200"
      },
      "message": "ring-buffer: Make it generally available\n\nIn hunting down the cause for the hwlat_detector ring buffer spew in\nmy failed -next builds it became obvious that folks are now treating\nring_buffer as something that is generic independent of tracing and thus,\nsuitable for public driver consumption.\n\nGiven that there are only a few minor areas in ring_buffer that have any\nreliance on CONFIG_TRACING or CONFIG_FUNCTION_TRACER, provide stubs for\nthose and make it generally available.\n\nSigned-off-by: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Jon Masters \u003cjcm@jonmasters.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c20090625053012.GB19944@linux-sh.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0ad5d703c6c0fcd385d956555460df95dff7eb7e",
      "tree": "4b777100f9be4fe90ca4bd043b9f98df672b5b3b",
      "parents": [
        "44347d947f628060b92449702071bfe1d31dfb75",
        "1cb81b143fa8f0e4629f10690862e2e52ca792ff"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 11:18:34 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 07 13:36:22 2009 +0200"
      },
      "message": "Merge branch \u0027tracing/hw-branch-tracing\u0027 into tracing/core\n\nMerge reason: this topic is ready for upstream now. It passed\n              Oleg\u0027s review and Andrew had no further mm/*\n              objections/observations either.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9456f0fa6d3cb944d3b9fc31c9a244e0362c26ea",
      "tree": "9e6e97199f63c786a79966a5938873a98591e10c",
      "parents": [
        "71e1c8ac42ae4038ddb1367cce7097ab868dc532"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed May 06 21:54:09 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed May 06 23:11:41 2009 -0400"
      },
      "message": "tracing: reset ring buffer when removing modules with events\n\nLi Zefan found that there\u0027s a race using the event ids of events and\nmodules. When a module is loaded, an event id is incremented. We only\nhave 16 bits for event ids (65536) and there is a possible (but highly\nunlikely) race that we could load and unload a module that registers\nevents so many times that the event id counter overflows.\n\nWhen it overflows, it then restarts and goes looking for available\nids. An id is available if it was added by a module and released.\n\nThe race is if you have one module add an id, and then is removed.\nAnother module loaded can use that same event id. But if the old module\nstill had events in the ring buffer, the new module\u0027s call back would\nget bogus data.  At best (and most likely) the output would just be\ngarbage. But if the module for some reason used pointers (not recommended)\nthen this could potentially crash.\n\nThe safest thing to do is just reset the ring buffer if a module that\nregistered events is removed.\n\n[ Impact: prevent unpredictable results of event id overflows ]\n\nReported-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c49FEAFD0.30106@cn.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "20c8928abe70e204bd077ab6cfe23002d7788983",
      "tree": "e161656f99c814ebdd69df8b5a79dab58f80065e",
      "parents": [
        "2df75e415709ad12862028916c772c1f377f6a7c"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed May 06 10:33:45 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed May 06 10:38:19 2009 +0200"
      },
      "message": "tracing/events: fix concurrent access to ftrace_events list\n\nA module will add/remove its trace events when it gets loaded/unloaded, so\nthe ftrace_events list is not \"const\", and concurrent access needs to be\nprotected.\n\nThis patch thus fixes races between loading/unloding modules and read\n\u0027available_events\u0027 or read/write \u0027set_event\u0027, etc.\n\nBelow shows how to reproduce the race:\n\n # for ((; ;)) { cat /mnt/tracing/available_events; } \u003e /dev/null \u0026\n # for ((; ;)) { insmod trace-events-sample.ko; rmmod sample; } \u0026\n\nAfter a while:\n\nBUG: unable to handle kernel paging request at 0010011c\nIP: [\u003cc1080f27\u003e] t_next+0x1b/0x2d\n...\nCall Trace:\n [\u003cc10c90e6\u003e] ? seq_read+0x217/0x30d\n [\u003cc10c8ecf\u003e] ? seq_read+0x0/0x30d\n [\u003cc10b4c19\u003e] ? vfs_read+0x8f/0x136\n [\u003cc10b4fc3\u003e] ? sys_read+0x40/0x65\n [\u003cc1002a68\u003e] ? sysenter_do_call+0x12/0x36\n\n[ Impact: fix races when concurrent accessing ftrace_events list ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c4A00F709.3080800@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8b3725621074040d380664964ffbc40610aef8c6",
      "tree": "3a78292a08cc9c87653be2e42d084a7d7f5989bf",
      "parents": [
        "a118e4d1402f1349fe3d953493e4168a300a752d"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Tue Apr 28 03:04:59 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 29 14:06:11 2009 +0200"
      },
      "message": "tracing/filters: a better event parser\n\nReplace the current event parser hack with a better one.  Filters are\nno longer specified predicate by predicate, but all at once and can\nuse parens and any of the following operators:\n\nnumeric fields:\n\n\u003d\u003d, !\u003d, \u003c, \u003c\u003d, \u003e, \u003e\u003d\n\nstring fields:\n\n\u003d\u003d, !\u003d\n\npredicates can be combined with the logical operators:\n\n\u0026\u0026, ||\n\nexamples:\n\n\"common_preempt_count \u003e 4\" \u003e filter\n\n\"((sig \u003e\u003d 10 \u0026\u0026 sig \u003c 15) || sig \u003d\u003d 17) \u0026\u0026 comm !\u003d bash\" \u003e filter\n\nIf there was an error, the erroneous string along with an error\nmessage can be seen by looking at the filter e.g.:\n\n((sig \u003e\u003d 10 \u0026\u0026 sig \u003c 15) || dsig \u003d\u003d 17) \u0026\u0026 comm !\u003d bash\n^\nparse_error: Field not found\n\nCurrently the caret for an error always appears at the beginning of\nthe filter; a real position should be used, but the error message\nshould be useful even without it.\n\nTo clear a filter, \u00270\u0027 can be written to the filter file.\n\nFilters can also be set or cleared for a complete subsystem by writing\nthe same filter as would be written to an individual event to the\nfilter file at the root of the subsytem.  Note however, that if any\nevent in the subsystem lacks a field specified in the filter being\nset, the set will fail and all filters in the subsytem are\nautomatically cleared.  This change from the previous version was made\nbecause using only the fields that happen to exist for a given event\nwould most likely result in a meaningless filter.\n\nBecause the logical operators are now implemented as predicates, the\nmaximum number of predicates in a filter was increased from 8 to 16.\n\n[ Impact: add new, extended trace-filter implementation ]\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: fweisbec@gmail.com\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c1240905899.6416.121.camel@tropicana\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a118e4d1402f1349fe3d953493e4168a300a752d",
      "tree": "bd4c2fccee4528bf7d1536e33218516953904740",
      "parents": [
        "30e673b230f9d556eb81ef68a7b1a08c8b3b142c"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Tue Apr 28 03:04:53 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 29 14:06:03 2009 +0200"
      },
      "message": "tracing/filters: distinguish between signed and unsigned fields\n\nThe new filter comparison ops need to be able to distinguish between\nsigned and unsigned field types, so add an is_signed flag/param to the\nevent field struct/trace_define_fields().  Also define a simple macro,\nis_signed_type() to determine the signedness at compile time, used in the\ntrace macros.  If the is_signed_type() macro won\u0027t work with a specific\ntype, a new slightly modified version of TRACE_FIELD() called\nTRACE_FIELD_SIGN(), allows the signedness to be set explicitly.\n\n[ Impact: extend trace-filter code for new feature ]\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: fweisbec@gmail.com\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c1240905893.6416.120.camel@tropicana\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "30e673b230f9d556eb81ef68a7b1a08c8b3b142c",
      "tree": "219bb8cfce0b36f05e3c21ab10a29f8f56d47d7e",
      "parents": [
        "0f9a623dd6c9b5b4dd00c232f29525bfc7a8ecf2"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Tue Apr 28 03:04:47 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 29 14:05:54 2009 +0200"
      },
      "message": "tracing/filters: move preds into event_filter object\n\nCreate a new event_filter object, and move the pred-related members\nout of the call and subsystem objects and into the filter object - the\ndetails of the filter implementation don\u0027t need to be exposed in the\ncall and subsystem in any case, and it will also help make the new\nparser implementation a little cleaner.\n\n[ Impact: refactor trace-filter code to prepare for new features ]\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: fweisbec@gmail.com\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nLKML-Reference: \u003c1240905887.6416.119.camel@tropicana\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "416dfdcdb894432547ead4fcb9fa6a36b396059e",
      "tree": "8033fdda07397a59c5fa98c88927040906ce6c1a",
      "parents": [
        "56449f437add737a1e5e1cb7e00f63ac8ead1938",
        "091069740304c979f957ceacec39c461d0192158"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 24 10:11:18 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 24 10:11:23 2009 +0200"
      },
      "message": "Merge commit \u0027v2.6.30-rc3\u0027 into tracing/hw-branch-tracing\n\nConflicts:\n\tarch/x86/kernel/ptrace.c\n\nMerge reason: fix the conflict above, and also pick up the CONFIG_BROKEN\n              dependency change from upstream so that we can remove it\n\t      here.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7a4f453b6d7379a7c380825949977c5a838aa012",
      "tree": "9f5450c7a1abc865b998885affe964d4670a08bc",
      "parents": [
        "3554228d4289098a8fe5cfd87512ec32a19bbe5a"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Wed Apr 22 16:53:34 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 22 11:36:38 2009 +0200"
      },
      "message": "tracing/events: make struct trace_entry-\u003etype to be int type\n\nstruct trace_entry-\u003etype is unsigned char, while trace event\u0027s id is\nint type, thus for a event with id \u003e\u003d 256, it\u0027s entry-\u003etype is cast\nto (id % 256), and then we can\u0027t see the trace output of this event.\n\n # insmod trace-events-sample.ko\n # echo foo_bar \u003e /mnt/tracing/set_event\n # cat /debug/tracing/events/trace-events-sample/foo_bar/id\n 256\n # cat /mnt/tracing/trace_pipe\n           \u003c...\u003e-3548  [001]   215.091142: Unknown type 0\n           \u003c...\u003e-3548  [001]   216.089207: Unknown type 0\n           \u003c...\u003e-3548  [001]   217.087271: Unknown type 0\n           \u003c...\u003e-3548  [001]   218.085332: Unknown type 0\n\n[ Impact: fix output for trace events with id \u003e\u003d 256 ]\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nLKML-Reference: \u003c49EEDB0E.5070207@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ac1adc55fc71c7515caa2eb0e63e49b3d1c6a47c",
      "tree": "7a97cf9512572c53d0802725f8e0ad6a2d4b2204",
      "parents": [
        "46de405f25f1d9fa73b657ffbb752aa0cc87a91d"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Fri Apr 17 00:27:08 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 17 18:28:27 2009 +0200"
      },
      "message": "tracing/filters: add filter_mutex to protect filter predicates\n\nThis patch adds a filter_mutex to prevent the filter predicates from\nbeing accessed concurrently by various external functions.\n\nIt\u0027s based on a previous patch by Li Zefan:\n        \"[PATCH 7/7] tracing/filters: make filter preds RCU safe\"\n\nv2 changes:\n\n- fixed wrong value returned in a add_subsystem_pred() failure case\n  noticed by Li Zefan.\n\n[ Impact: fix trace filter corruption/crashes on parallel access ]\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nTested-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: paulmck@linux.vnet.ibm.com\nLKML-Reference: \u003c1239946028.6639.13.camel@tropicana\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a59fd6027218bd7c994e39d14afe0242f895144f",
      "tree": "c22e6ff2924726319eac84c480eca72066bad660",
      "parents": [
        "f42c85e74faa422cf0bc747ed808681145448f88"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Apr 10 13:52:20 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 14 12:58:00 2009 -0400"
      },
      "message": "tracing/events: convert event call sites to use a link list\n\nImpact: makes it possible to define events in modules\n\nThe events are created by reading down the section that they are linked\nin by the macros. But this is not scalable to modules. This patch converts\nthe manipulations to use a global link list, and on boot up it adds\nthe items in the section to the list.\n\nThis change will allow modules to add their tracing events to the list as\nwell.\n\nNote, this change alone does not permit modules to use the TRACE_EVENT macros,\nbut the change is needed for them to eventually do so.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "97f2025153499faa17267a0d4e18c7afaf73f39d",
      "tree": "cd3ea51a93093ea5250ef38b4b5bf6c2aa3f9ed5",
      "parents": [
        "9504504cbab29ecb694186b1c5b15d3579c43c51"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Apr 13 11:20:49 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 14 12:57:58 2009 -0400"
      },
      "message": "tracing/events: move declarations from trace directory to core include\n\nIn preparation to allowing trace events to happen in modules, we need\nto move some of the local declarations in the kernel/trace directory\ninto include/linux.\n\nThis patch simply moves the declarations and performs no context changes.\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "9504504cbab29ecb694186b1c5b15d3579c43c51",
      "tree": "fd91bec634dfff191699616523812a3d4ffe6348",
      "parents": [
        "a8d154b009168337494fbf345671bab74d3e4b8b"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Apr 11 12:59:57 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue Apr 14 12:57:57 2009 -0400"
      },
      "message": "tracing: make trace_seq operations available for core kernel\n\nIn the process to make TRACE_EVENT macro work for modules, the trace_seq\noperations must be available for core kernel code.\n\nThese operations are quite useful and can be used for other implementations.\n\nThe main idea is that we create a trace_seq handle that acts very much\nlike the seq_file handle.\n\n\tstruct trace_seq *s \u003d kmalloc(sizeof(*s, GFP_KERNEL);\n\n\ttrace_seq_init(s);\n\ttrace_seq_printf(s, \"some data %d\\n\", variable);\n\n\tprintk(\"%s\", s-\u003ebuffer);\n\nThe main use is to allow a top level function call several other functions\nthat may store printf like data into the buffer. Then at the end, the top\nlevel function can process all the data with any method it would like to.\nIt could be passed to userspace, output via printk or even use seq_file:\n\n\ttrace_seq_to_user(s, ubuf, cnt);\n\tseq_puts(m, s-\u003ebuffer);\n\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "0a19e53c1514ad8e9c3cbab40c6c3f52c86f403d",
      "tree": "1089246a64f65b2b3c2ba29182ed4f9ce9ad375e",
      "parents": [
        "b5c851a88a369854c04e511cefb84ea2d0cfa209"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Mon Apr 13 03:17:50 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 14 00:03:55 2009 +0200"
      },
      "message": "tracing/filters: allow on-the-fly filter switching\n\nThis patch allows event filters to be safely removed or switched\non-the-fly while avoiding the use of rcu or the suspension of tracing of\nprevious versions.\n\nIt does it by adding a new filter_pred_none() predicate function which\ndoes nothing and by never deallocating either the predicates or any of\nthe filter_pred members used in matching; the predicate lists are\nallocated and initialized during ftrace_event_calls initialization.\n\nWhenever a filter is removed or replaced, the filter_pred_* functions\ncurrently in use by the affected ftrace_event_call are immediately\nswitched over to to the filter_pred_none() function, while the rest of\nthe filter_pred members are left intact, allowing any currently\nexecuting filter_pred_* functions to finish up, using the values they\u0027re\ncurrently using.\n\nIn the case of filter replacement, the new predicate values are copied\ninto the old predicates after the above step, and the filter_pred_none()\nfunctions are replaced by the filter_pred_* functions for the new\nfilter.  In this case, it is possible though very unlikely that a\nprevious filter_pred_* is still running even after the\nfilter_pred_none() switch and the switch to the new filter_pred_*.  In\nthat case, however, because nothing has been deallocated in the\nfilter_pred, the worst that can happen is that the old filter_pred_*\nfunction sees the new values and as a result produces either a false\npositive or a false negative, depending on the values it finds.\n\nSo one downside to this method is that rarely, it can produce a bad\nmatch during the filter switch, but it should be possible to live with\nthat, IMHO.\n\nThe other downside is that at least in this patch the predicate lists\nare always pre-allocated, taking up memory from the start.  They could\nprobably be allocated on first-use, and de-allocated when tracing is\ncompletely stopped - if this patch makes sense, I could create another\none to do that later on.\n\nOh, and it also places a restriction on the size of __arrays in events,\ncurrently set to 128, since they can\u0027t be larger than the now embedded\nstr_val arrays in the filter_pred struct.\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: paulmck@linux.vnet.ibm.com\nLKML-Reference: \u003c1239610670.6660.49.camel@tropicana\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "eb02ce017dd83985041a7e54c6449f92d53b026f",
      "tree": "7f52a3e92bf3dae1f3c7754a58ab76fb2eceb2e1",
      "parents": [
        "5f77a88b3f8268b11940b51d2e03d26a663ceb90"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Wed Apr 08 03:15:54 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 14 00:00:56 2009 +0200"
      },
      "message": "tracing/filters: use ring_buffer_discard_commit() in filter_check_discard()\n\nThis patch changes filter_check_discard() to make use of the new\nring_buffer_discard_commit() function and modifies the current users to\ncall the old commit function in the non-discard case.\n\nIt also introduces a version of filter_check_discard() that uses the\nglobal trace buffer (filter_current_check_discard()) for those cases.\n\nv2 changes:\n\n- fix compile error noticed by Ingo Molnar\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: fweisbec@gmail.com\nLKML-Reference: \u003c1239178554.10295.36.camel@tropicana\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "77d9f465d46fd67cdb82ee5e1ab99dd57a17c486",
      "tree": "c21063ae5dff55522593f29e952c8a05958c6ce6",
      "parents": [
        "fa1b47dd85453ec7d4bcfe4aa4a2d172ba452fc3"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Apr 02 01:16:59 2009 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 14 00:00:54 2009 +0200"
      },
      "message": "tracing/filters: use ring_buffer_discard_commit for discarded events\n\nThe ring_buffer_discard_commit makes better usage of the ring_buffer\nwhen an event has been discarded. It tries to remove it completely if\npossible.\n\nThis patch converts the trace event filtering to use\nring_buffer_discard_commit instead of the ring_buffer_event_discard.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e45f2e2bd298e1ff687448e5fd15a3588b5807ec",
      "tree": "353f132d53ecb3e991cf59c3d43a7664cb87b743",
      "parents": [
        "e1112b4d96859367a93468027c9635e2ac04eb3f"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Tue Mar 31 00:49:16 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 14 00:00:51 2009 +0200"
      },
      "message": "tracing/filters: add TRACE_EVENT_FORMAT_NOFILTER event macro\n\nFrederic Weisbecker suggested that the trace_special event shouldn\u0027t be\nfilterable; this patch adds a TRACE_EVENT_FORMAT_NOFILTER event macro\nthat allows an event format to be exported without having a filter\nattached, and removes filtering from the trace_special event.\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e1112b4d96859367a93468027c9635e2ac04eb3f",
      "tree": "5170980ea71ee4bb5d0196880b58dbc997211b65",
      "parents": [
        "66de7792c02693b49671afe58c771fde3b092fc7"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Tue Mar 31 00:48:49 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 14 00:00:50 2009 +0200"
      },
      "message": "tracing/filters: add run-time field descriptions to TRACE_EVENT_FORMAT events\n\nThis patch adds run-time field descriptions to all the event formats\nexported using TRACE_EVENT_FORMAT.  It also hooks up all the tracers\nthat use them (i.e. the tracers in the \u0027ftrace subsystem\u0027) so they can\nalso have their output filtered by the event-filtering mechanism.\n\nWhen I was testing this, there were a couple of things that fooled me\ninto thinking the filters weren\u0027t working, when actually they were -\nI\u0027ll mention them here so others don\u0027t make the same mistakes (and file\nbug reports. ;-)\n\nOne is that some of the tracers trace multiple events e.g. the\nsched_switch tracer uses the context_switch and wakeup events, and if\nyou don\u0027t set filters on all of the traced events, the unfiltered output\nfrom the events without filters on them can make it look like the\nfiltering as a whole isn\u0027t working properly, when actually it is doing\nwhat it was asked to do - it just wasn\u0027t asked to do the right thing.\n\nThe other is that for the really high-volume tracers e.g. the function\ntracer, the volume of filtered events can be so high that it pushes the\nunfiltered events out of the ring buffer before they can be read so e.g.\ncat\u0027ing the trace file repeatedly shows either no output, or once in\nawhile some output but that isn\u0027t there the next time you read the\ntrace, which isn\u0027t what you normally expect when reading the trace file.\nIf you read from the trace_pipe file though, you can catch them before\nthey disappear.\n\nChanges from v1:\n\nAs suggested by Frederic Weisbecker:\n\n- get rid of externs in functions\n- added unlikely() to filter_check_discard()\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "02af61bb50f5d5f0322dbe5ab2a0d75808d25c7b",
      "tree": "fa087ed8a584d7b66016e6a1421e538369d52e5a",
      "parents": [
        "abd41443ac76d3e9c29a8c1d9e9a3312306cc55e"
      ],
      "author": {
        "name": "Zhaolei",
        "email": "zhaolei@cn.fujitsu.com",
        "time": "Fri Apr 10 14:26:18 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Apr 12 15:22:55 2009 +0200"
      },
      "message": "tracing, kmemtrace: Separate include/trace/kmemtrace.h to kmemtrace part and tracepoint part\n\nImpact: refactor code for future changes\n\nCurrent kmemtrace.h is used both as header file of kmemtrace and kmem\u0027s\ntracepoints definition.\n\nTracepoints\u0027 definition file may be used by other code, and should only have\ndefinition of tracepoint.\n\nWe can separate include/trace/kmemtrace.h into 2 files:\n\n  include/linux/kmemtrace.h: header file for kmemtrace\n  include/trace/kmem.h:      definition of kmem tracepoints\n\nSigned-off-by: Zhao Lei \u003czhaolei@cn.fujitsu.com\u003e\nAcked-by: Eduard - Gabriel Munteanu \u003ceduard.munteanu@linux360.ro\u003e\nAcked-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nLKML-Reference: \u003c49DEE68A.5040902@cn.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c93f216b5b985a12a18323e5ca2eb01db3d2f000",
      "tree": "45fa35b290005f8b241dd76b6342875b81432fc3",
      "parents": [
        "c61b79b6ef266890954213a701d8f6021d8c1289",
        "ab3c9c686e22ab264269337ce7b75d9760211198"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 14:10:10 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Apr 07 14:10:10 2009 -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  branch tracer, intel-iommu: fix build with CONFIG_BRANCH_TRACER\u003dy\n  branch tracer: Fix for enabling branch profiling makes sparse unusable\n  ftrace: Correct a text align for event format output\n  Update /debug/tracing/README\n  tracing/ftrace: alloc the started cpumask for the trace file\n  tracing, x86: remove duplicated #include\n  ftrace: Add check of sched_stopped for probe_sched_wakeup\n  function-graph: add proper initialization for init task\n  tracing/ftrace: fix missing include string.h\n  tracing: fix incorrect return type of ns2usecs()\n  tracing: remove CALLER_ADDR2 from wakeup tracer\n  blktrace: fix pdu_len when tracing packet command requests\n  blktrace: small cleanup in blk_msg_write()\n  blktrace: NUL-terminate user space messages\n  tracing: move scripts/trace/power.pl to scripts/tracing/power.pl\n"
    },
    {
      "commit": "5452af664f6fba26b80eb2c8c4ceae2999d5cf56",
      "tree": "08fb64bfc3242ad96b65719a55424db729585f17",
      "parents": [
        "a5dec5573f3c7e63f2f9b5852b9759ea342a5ff9"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Mar 27 00:25:38 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 07 14:43:07 2009 +0200"
      },
      "message": "tracing/ftrace: factorize the tracing files creation\n\nImpact: cleanup\n\nMost of the tracing files creation follow the same pattern:\n\nret \u003d debugfs_create_file(...)\nif (!ret)\n\tpr_warning(\"Couldn\u0027t create ... entry\\n\")\n\nUnify it!\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c1238109938-11840-1-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "86665c75da41889f92b774f31ea5a9a436f392a8",
      "tree": "94b003ab677a64b7d0a6dcca1f636bbbc2a187c9",
      "parents": [
        "93776a8ec746cf9d32c36e5a5b23d28d8be28826",
        "1bbe2a83ab68e5cf8c66c372c7cb3b51910c2cfe"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 07 14:41:14 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 07 14:41:17 2009 +0200"
      },
      "message": "Merge branch \u0027tracing/urgent\u0027 into tracing/ftrace\n"
    },
    {
      "commit": "cf8e3474654f20433aab9aa35826d43b5f245008",
      "tree": "bbb3e87ca324ae4192fd524c0777047ee075c5d9",
      "parents": [
        "301fd748e2c81e78e74edbc694a64caa7b95dda2"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Mon Mar 30 13:48:00 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 07 13:59:23 2009 +0200"
      },
      "message": "tracing: fix incorrect return type of ns2usecs()\n\nImpact: fix time output bug in 32bits system\n\nns2usecs() returns \u0027long\u0027, it\u0027s incorrect.\n\n(In i386)\n...\n          \u003cidle\u003e-0     [000]   521.442100: _spin_lock \u003c-tick_do_update_jiffies64\n          \u003cidle\u003e-0     [000]   521.442101: do_timer \u003c-tick_do_update_jiffies64\n          \u003cidle\u003e-0     [000]   521.442102: update_wall_time \u003c-do_timer\n          \u003cidle\u003e-0     [000]   521.442102: update_xtime_cache \u003c-update_wall_time\n....\n(It always print the time less than 2200 seconds besides ...)\nBecause \u0027long\u0027 is 32bits in i386. ( (1\u003c\u003c31) useconds is about 2200 seconds)\n\n...\n          \u003cidle\u003e-0     [001] 4154502640.134759: rcu_bh_qsctr_inc \u003c-__do_softirq\n          \u003cidle\u003e-0     [001] 4154502640.134760: _local_bh_enable \u003c-__do_softirq\n          \u003cidle\u003e-0     [001] 4154502640.134761: idle_cpu \u003c-irq_exit\n...\n(very large value)\nBecause \u0027long\u0027 is a signed type and it is 32bits in i386.\n\nChanges in v2:\nreturn \u0027unsigned long long\u0027 instead of \u0027cycle_t\u0027\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nLKML-Reference: \u003c49D05D10.4030009@cn.fujitsu.com\u003e\nReported-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "93776a8ec746cf9d32c36e5a5b23d28d8be28826",
      "tree": "6c472ae9f709246ee5268e1d71559d07839fb965",
      "parents": [
        "34886c8bc590f078d4c0b88f50d061326639198d",
        "d508afb437daee7cf07da085b635c44a4ebf9b38"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 07 13:47:33 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 07 13:47:45 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into tracing/core\n\nMerge reason: update to upstream tracing facilities\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2e8844e13ab73f1107aea4317a53ff5879f2e1d7",
      "tree": "36165371cf6fd26d674610f1c6bb5fac50e6e13f",
      "parents": [
        "c78a3956b982418186e40978a51636a2b43221bc",
        "d508afb437daee7cf07da085b635c44a4ebf9b38"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 07 13:34:26 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 07 13:34:42 2009 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into tracing/hw-branch-tracing\n\nMerge reason: update to latest tracing and ptrace APIs\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ca2b84cb3c4a0d4d2143b46ec072cdff5d1b3b87",
      "tree": "7163bac040f11c444b24cab53c4a784df73fa4f3",
      "parents": [
        "ac44021fccd8f1f2b267b004f23a2e8d7ef05f7b"
      ],
      "author": {
        "name": "Eduard - Gabriel Munteanu",
        "email": "eduard.munteanu@linux360.ro",
        "time": "Mon Mar 23 15:12:24 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Apr 03 12:23:06 2009 +0200"
      },
      "message": "kmemtrace: use tracepoints\n\nkmemtrace now uses tracepoints instead of markers. We no longer need to\nuse format specifiers to pass arguments.\n\nSigned-off-by: Eduard - Gabriel Munteanu \u003ceduard.munteanu@linux360.ro\u003e\n[ folded: Use the new TP_PROTO and TP_ARGS to fix the build.     ]\n[ folded: fix build when CONFIG_KMEMTRACE is disabled.           ]\n[ folded: define tracepoints when CONFIG_TRACEPOINTS is enabled. ]\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nLKML-Reference: \u003cae61c0f37156db8ec8dc0d5778018edde60a92e3.1237813499.git.eduard.munteanu@linux360.ro\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8b54e45b0005875f59cb8b1c44d429a161d5f245",
      "tree": "0e7c98418384f3f773d2046eea50f529e89f1cba",
      "parents": [
        "0a5d649018b151cb9331c213a843ac4a3e7e44ab",
        "9a8118baaeb0eaa148913bed77bf9c6335f6ca63",
        "b14b70a6a4e394c9630bcde17e07d3bcdcbca27e",
        "fee039a1d05c6e0f71b0fe270d847742a02d56c4",
        "18cea4591a98817697017bcb056a848bae1205df",
        "548c316137901cc81dea35e26362a9d5ba0b89b6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 31 17:46:40 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 31 17:46:40 2009 +0200"
      },
      "message": "Merge branches \u0027tracing/docs\u0027, \u0027tracing/filters\u0027, \u0027tracing/ftrace\u0027, \u0027tracing/kprobes\u0027, \u0027tracing/blktrace-v2\u0027 and \u0027tracing/textedit\u0027 into tracing/core-v2\n"
    },
    {
      "commit": "a2a16d6a3156ef7309ca7328a20c35df9418e670",
      "tree": "8f21d9c56eb34f9bd1057929661c96d04329dd69",
      "parents": [
        "cafb168a1c92e4c9e1731fe3d666c39611762c49"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 24 23:17:58 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 24 23:41:11 2009 -0400"
      },
      "message": "function-graph: add option to calculate graph time or not\n\ngraph time is the time that a function is executing another function.\nThus if function A calls B, if graph-time is set, then the time for\nA includes B. This is the default behavior. But if graph-time is off,\nthen the time spent executing B is subtracted from A.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "0706f1c48ca8a7ab478090b4e38f2e578ae2bfe0",
      "tree": "26b79090f8e7e62796bb871ff089d04799919855",
      "parents": [
        "493762fc534c71d11d489f872c4b4a2c61173668"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Mar 23 23:12:58 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 24 23:41:09 2009 -0400"
      },
      "message": "tracing: adding function timings to function profiler\n\nIf the function graph trace is enabled, the function profiler will\nuse it to take the timing of the functions.\n\n cat /debug/tracing/trace_stat/functions\n\n  Function                               Hit    Time\n  --------                               ---    ----\n  mwait_idle                             127    183028.4 us\n  schedule                                26    151997.7 us\n  __schedule                              31    151975.1 us\n  sys_wait4                                2    74080.53 us\n  do_wait                                  2    74077.80 us\n  sys_newlstat                           138    39929.16 us\n  do_path_lookup                         179    39845.79 us\n  vfs_lstat_fd                           138    39761.97 us\n  user_path_at                           153    39469.58 us\n  path_walk                              179    39435.76 us\n  __link_path_walk                       189    39143.73 us\n[...]\n\nNote the times are skewed due to the function graph tracer not taking\ninto account schedules.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "be6f164a02f394675e2ac2077dd354cebef5b4c0",
      "tree": "9805294731c00ddb61857a4e1e42019058eb1542",
      "parents": [
        "8aef2d2856158a36c295a8d1288281e4839bff13"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 24 11:06:24 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 24 11:06:24 2009 -0400"
      },
      "message": "function-graph: add option for include sleep times\n\nImpact: give user a choice to show times spent while sleeping\n\nThe user may want to see the time a function spent sleeping.\nThis patch adds the trace option \"sleep-time\" to allow that.\nThe \"sleep-time\" option is default on.\n\n echo sleep-time \u003e /debug/tracing/trace_options\n\nproduces:\n\n ------------------------------------------\n 2)  avahi-d-3428  \u003d\u003e    \u003cidle\u003e-0\n ------------------------------------------\n\n 2)               |      finish_task_switch() {\n 2)   0.621 us    |        _spin_unlock_irq();\n 2)   2.202 us    |      }\n 2) ! 1002.197 us |    }\n 2) ! 1003.521 us |  }\n\nwhere as,\n\n echo nosleep-time \u003e /debug/tracing/trace_options\n\nproduces:\n\n 0)    \u003cidle\u003e-0    \u003d\u003e  yum-upd-3416\n ------------------------------------------\n\n 0)               |              finish_task_switch() {\n 0)   0.643 us    |                _spin_unlock_irq();\n 0)   2.342 us    |              }\n 0) + 41.302 us   |            }\n 0) + 42.453 us   |          }\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "4bda2d517bfa3ce3d7044e06988cdddae7adffe2",
      "tree": "62d99deb281a0395942b462f7cff2d2b42f2d905",
      "parents": [
        "09f1f245c79585383de63e3ca54d0f91824bff3a"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Tue Mar 24 02:14:31 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 24 08:26:52 2009 +0100"
      },
      "message": "tracing/filters: use trace_seq_printf() to print filters\n\nImpact: cleanup\n\nInstead of just using the trace_seq buffer to print the filters, use\ntrace_seq_printf() as it was intended to be used.\n\nReported-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nCc: \u003d?ISO-8859-1?Q?Fr\u003dE9d\u003dE9ric?\u003d Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c1237878871.8339.59.camel@charm-linux\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "07edf7121374609709ef1b0889f6e7b8d6a62ec1",
      "tree": "ad1649c9546dc3ce23bb2f8609a7459a7ca2006e",
      "parents": [
        "9bd7d099ab3f10dd666da399c064999bae427cd9"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Mar 22 23:10:46 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 23 09:22:14 2009 +0100"
      },
      "message": "tracing/events: don\u0027t use wake up for events\n\nImpact: fix hard-lockup with sched switch events\n\nSome ftrace events, such as sched wakeup, can be traced\nwhile the runqueue lock is hold. Since they are using\ntrace_current_buffer_unlock_commit(), they call wake_up()\nwhich can try to grab the runqueue lock too, resulting in\na deadlock.\n\nNow for all event, we call a new helper:\ntrace_nowake_buffer_unlock_commit() which do pretty the same than\ntrace_current_buffer_unlock_commit() except than it doesn\u0027t call\ntrace_wake_up().\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c1237759847-21025-4-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cfb180f3e71b2a280a254c8646a9ab1beab63f84",
      "tree": "93fb1a319b40851ebb7a3cc0d9ea4cc9a88e919a",
      "parents": [
        "7ce7e4249921d5073e764f7ff7ad83cfa9894bd7"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Sun Mar 22 03:31:17 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Mar 22 18:38:47 2009 +0100"
      },
      "message": "tracing: add per-subsystem filtering\n\nThis patch adds per-subsystem filtering to the event tracing subsystem.\n\nIt adds a \u0027filter\u0027 debugfs file to each subsystem directory.  This file\ncan be written to to set filters; reading from it will display the\ncurrent set of filters set for that subsystem.\n\nBasically what it does is propagate the filter down to each event\ncontained in the subsystem.  If a particular event doesn\u0027t have a field\nwith the name specified in the filter, it simply doesn\u0027t get set for\nthat event.  You can verify whether or not the filter was set for a\nparticular event by looking at the filter file for that event.\n\nAs with per-event filters, compound expressions are supported, echoing\n\u00270\u0027 to the subsystem\u0027s filter file clears all filters in the subsystem,\netc.\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c1237710677.7703.49.camel@charm-linux\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7ce7e4249921d5073e764f7ff7ad83cfa9894bd7",
      "tree": "d8a3026e85d3230ce39ca99f446abe76a710c337",
      "parents": [
        "2d622719f1572ef31e0616444a515eba3094d050"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Sun Mar 22 03:31:04 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Mar 22 18:38:46 2009 +0100"
      },
      "message": "tracing: add per-event filtering\n\nThis patch adds per-event filtering to the event tracing subsystem.\n\nIt adds a \u0027filter\u0027 debugfs file to each event directory.  This file can\nbe written to to set filters; reading from it will display the current\nset of filters set for that event.\n\nBasically, any field listed in the \u0027format\u0027 file for an event can be\nfiltered on (including strings, but not yet other array types) using\neither matching (\u0027\u003d\u003d\u0027) or non-matching (\u0027!\u003d\u0027) \u0027predicates\u0027.  A\n\u0027predicate\u0027 can be either a single expression:\n\n # echo pid !\u003d 0 \u003e filter\n\n # cat filter\n pid !\u003d 0\n\nor a compound expression of up to 8 sub-expressions combined using \u0027\u0026\u0026\u0027\nor \u0027||\u0027:\n\n # echo comm \u003d\u003d Xorg \u003e filter\n # echo \"\u0026\u0026 sig !\u003d 29\" \u003e filter\n\n # cat filter\n comm \u003d\u003d Xorg\n \u0026\u0026 sig !\u003d 29\n\nOnly events having field values matching an expression will be available\nin the trace output; non-matching events are discarded.\n\nNote that a compound expression is built up by echoing each\nsub-expression separately - it\u0027s not the most efficient way to do\nthings, but it keeps the parser simple and assumes that compound\nexpressions will be relatively uncommon.  In any case, a subsequent\npatch introducing a way to set filters for entire subsystems should\nmitigate any need to do this for lots of events.\n\nSetting a filter without an \u0027\u0026\u0026\u0027 or \u0027||\u0027 clears the previous filter\ncompletely and sets the filter to the new expression:\n\n # cat filter\n comm \u003d\u003d Xorg\n \u0026\u0026 sig !\u003d 29\n\n # echo comm !\u003d Xorg\n\n # cat filter\n comm !\u003d Xorg\n\nTo clear a filter, echo 0 to the filter file:\n\n # echo 0 \u003e filter\n # cat filter\n none\n\nThe limit of 8 predicates for a compound expression is arbitrary - for\nefficiency, it\u0027s implemented as an array of pointers to predicates, and\n8 seemed more than enough for any filter...\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c1237710665.7703.48.camel@charm-linux\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cf027f645e6aee4f0ca6197a6b6a57f327fdb13f",
      "tree": "f8a20e8707967db5d9140f9069426f410a30dd32",
      "parents": [
        "0cf53ff62b3e9e491ff5e5f05b193fb6ce643047"
      ],
      "author": {
        "name": "Tom Zanussi",
        "email": "tzanussi@gmail.com",
        "time": "Sun Mar 22 03:30:39 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Mar 22 18:11:22 2009 +0100"
      },
      "message": "tracing: add run-time field descriptions for event filtering\n\nThis patch makes the field descriptions defined for event tracing\navailable at run-time, for the event-filtering mechanism introduced\nin a subsequent patch.\n\nThe common event fields are prepended with \u0027common_\u0027 in the format\ndisplay, allowing them to be distinguished from the other fields\nthat might internally have same name and can therefore be\nunambiguously used in filters.\n\nSigned-off-by: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c1237710639.7703.46.camel@charm-linux\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ac199db0189c091f2863312061c0575937f68810",
      "tree": "0068aaa77ca00102ca60754eb32329f06821bba0",
      "parents": [
        "28bea271e58e429eccfad3d7ee2ad12d6ee015bf"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Mar 19 20:26:15 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 20 10:17:07 2009 +0100"
      },
      "message": "ftrace: event profile hooks\n\nImpact: new tracing infrastructure feature\n\nProvide infrastructure to generate software perf counter events\nfrom tracepoints.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c20090319194233.557364871@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "40ce74f19c28077550646c76d96a075bf312e461",
      "tree": "bd58d38b6ac806be6f59276f16d1e0758376fa1d",
      "parents": [
        "2fbcdb35aca614f9529a0e7d340146cf0b71684f"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 19 14:03:53 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 19 15:58:47 2009 -0400"
      },
      "message": "tracing: remove recording function depth from trace_printk\n\nThe function depth in trace_printk was to facilitate the function\ngraph output. Now that the function graph calculates the depth within\nthe trace output, we no longer need to record the depth when the\ntrace_printk is called.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "327019b01e068d66dada6a8b2571180ab3674d20",
      "tree": "c81354a509d6962f6878145fcf3cdbe50a000a89",
      "parents": [
        "03418c7efaa429dc7647ac93e3862e3fe1816873",
        "62524d55e5b9ffe36e3bf3dd7a594114f150b449"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 18 06:59:56 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 18 06:59:56 2009 +0100"
      },
      "message": "Merge branch \u0027tip/tracing/ftrace\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace\n"
    },
    {
      "commit": "af4617bdba34aa556272b34c3986b0a4d588f568",
      "tree": "c46a6b695724ee27c0113f6affcebeffcefbcf23",
      "parents": [
        "37886f6a9f62d22530ffee8d3f9215c8345b6969"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 17 18:09:55 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 17 23:10:35 2009 -0400"
      },
      "message": "tracing: add global-clock option to provide cross CPU clock to traces\n\nImpact: feature to allow better serialized clock\n\nThis patch adds an option called \"global-clock\" that will allow\nthe tracer to switch to a slower but more accurate (across CPUs)\nclock.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "4176935b58eeb636917e65a2c388e4607e36cce6",
      "tree": "dac4e0005cda5a3a5a313dde35bbac2877d9bd93",
      "parents": [
        "c269fc8c537d761f36cb98e637ae934d9331a9d5",
        "6adaad14d7d4d3ef31b4e2dc992b18b5da7c4eb3"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 17 10:37:37 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Mar 17 10:37:37 2009 +0100"
      },
      "message": "Merge branch \u0027tip/tracing/ftrace\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace\n"
    },
    {
      "commit": "4ca530852346be239b7c19e7bec5d2b78855bebe",
      "tree": "96e5252faaf362115a96ed6df7c4e4f698a027dc",
      "parents": [
        "03303549b1695dc024d4a653cc16bd79f78f9750"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Mar 16 19:20:15 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Mar 16 23:27:06 2009 -0400"
      },
      "message": "tracing: protect reader of cmdline output\n\nImpact: fix to one cause of incorrect comm outputs in trace\n\nThe spinlock only protected the creation of a comm \u003c\u003d\u003e pid pair.\nBut it was possible that a reader could look up a pid, and get the\nwrong comm because it had no locking.\n\nThis also required changing trace_find_cmdline to copy the comm cache\nand not just send back a pointer to it.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "7243f2145a9b06e5cf9a49fc9b8b9a4fff6fb42e",
      "tree": "50b73e168e0e8b711d5e1ca8878389464d6c905c",
      "parents": [
        "b478b782e110fdb4135caa3062b6d687e989d994",
        "62395efdb0ef42e664ca81677901268c403a6286",
        "5bee17f18b595937e6beafeee5197868a3f74a06"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 16 09:12:42 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 16 09:12:42 2009 +0100"
      },
      "message": "Merge branches \u0027tracing/ftrace\u0027, \u0027tracing/syscalls\u0027 and \u0027linus\u0027 into tracing/core\n\nConflicts:\n\tarch/parisc/kernel/irq.c\n"
    },
    {
      "commit": "bed1ffca022cc876fb83161d26670e9b5d3cf36b",
      "tree": "a896c79e9ea1af11f992826f1de7e2ece52fbe33",
      "parents": [
        "f58ba100678f421bdcb000a3c71793f432dfab93"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Mar 13 15:42:11 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 16:57:42 2009 +0100"
      },
      "message": "tracing/syscalls: core infrastructure for syscalls tracing, enhancements\n\nImpact: new feature\n\nThis adds the generic support for syscalls tracing. This is\ncurrently exploited through a devoted tracer but other tracing\nengines can use it. (They just have to play with\n{start,stop}_ftrace_syscalls() and use the display callbacks\nunless they want to override them.)\n\nThe syscalls prototypes definitions are abused here to steal\nsome metadata informations:\n\n- syscall name, param types, param names, number of params\n\nThe syscall addr is not directly saved during this definition\nbecause we don\u0027t know if its prototype is available in the\nnamespace. But we don\u0027t really need it. The arch has just to\nbuild a function able to resolve the syscall number to its\nmetadata struct.\n\nThe current tracer prints the syscall names, parameters names\nand values (and their types optionally). Currently the value is\na raw hex but higher level values diplaying is on my TODO list.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nLKML-Reference: \u003c1236955332-10133-2-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "321bb5e1ac461c04b6a93f795010d6eb01d8c5ca",
      "tree": "409e0c0b867e2cb24abeec4bd8905d9cf1089cb6",
      "parents": [
        "ba9372a8f306c4e53a5f61dcbcd6c1e4a8c2e9ac"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Fri Mar 13 10:50:27 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 11:57:21 2009 +0100"
      },
      "message": "x86, hw-branch-tracer: add selftest\n\nAdd a selftest for the hw-branch-tracer.\n\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\nLKML-Reference: \u003c20090313105027.A30183@sedona.ch.intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "62a394eb77a1ddea73273f53ed8c3ccf6e04f2fb",
      "tree": "ee72d87524b29eb9457b45e02a4587d8fbd9191d",
      "parents": [
        "d2e82546ae98eee353fae57e389f487586fe380d",
        "1b3fa2ce64363c289b3b14723cca7290bf91cfce"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 10:23:39 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 10:23:39 2009 +0100"
      },
      "message": "Merge branches \u0027tracing/ftrace\u0027 and \u0027tracing/syscalls\u0027; commit \u0027v2.6.29-rc8\u0027 into tracing/core\n"
    },
    {
      "commit": "ee08c6eccb7d1295516f7cf420fddf7b14e9146f",
      "tree": "ec6d209e47bb1a8910d16c1c8b4ea65959850689",
      "parents": [
        "4c6ed8f496fe89ff81b3d6e617a531bedfb613e4"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Mar 07 05:52:59 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 13 06:25:43 2009 +0100"
      },
      "message": "tracing/ftrace: syscall tracing infrastructure, basics\n\nProvide basic callbacks to do syscall tracing.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nLKML-Reference: \u003c1236401580-5758-2-git-send-email-fweisbec@gmail.com\u003e\n[ simplified it to a trace_printk() for now. ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bdc067582b8b71c7771bab076bbc51569c594fb4",
      "tree": "a202353e4e365ae29c5bf95ca33eacd8eb4dfb54",
      "parents": [
        "eb1871f34358024acfa3523ef375ef14b7527173"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Mar 13 00:12:52 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Mar 13 00:15:46 2009 -0400"
      },
      "message": "tracing: add comment for use of double __builtin_consant_p\n\nImpact: documentation\n\nThe use of the double __builtin_contant_p checks in the event_trace_printk\ncan be confusing to developers and reviewers. This patch adds a comment\nto explain why it is there.\n\nRequested-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nLKML-Reference: \u003c20090313122235.43EB.A69D9226@jp.fujitsu.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "e9fb2b6d5845e24f104713591286b6f39761c027",
      "tree": "13239f3046b28b9b8b6166e438a4c509e57972c9",
      "parents": [
        "828275574e0161bdddb5817d4bd76a0265ef0470"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 12 14:19:25 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 12 21:15:00 2009 -0400"
      },
      "message": "tracing: have event_trace_printk use static tracer\n\nImpact: speed up on event tracing\n\nThe event_trace_printk is currently a wrapper function that calls\ntrace_vprintk. Because it uses a variable for the fmt it misses out\non the optimization of using the binary printk.\n\nThis patch makes event_trace_printk into a macro wrapper to use the\nfmt as the same as the trace_printks.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "48ead02030f849d011259244bb4ea9b985479006",
      "tree": "4500f27dc7eb6567ca79dd03fa94fe9e56fbc316",
      "parents": [
        "db526ca329f855510e8ce672332eba3304aed590"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Mar 12 18:24:49 2009 +0100"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Mar 12 21:15:00 2009 -0400"
      },
      "message": "tracing/core: bring back raw trace_printk for dynamic formats strings\n\nImpact: fix callsites with dynamic format strings\n\nSince its new binary implementation, trace_printk() internally uses static\ncontainers for the format strings on each callsites. But the value is\nassigned once at build time, which means that it can\u0027t take dynamic\nformats.\n\nSo this patch unearthes the raw trace_printk implementation for the callers\nthat will need trace_printk to be able to carry these dynamic format\nstrings. The trace_printk() macro will use the appropriate implementation\nfor each callsite. Most of the time however, the binary implementation will\nstill be used.\n\nThe other impact of this patch is that mmiotrace_printk() will use the old\nimplementation because it calls the low level trace_vprintk and we can\u0027t\nguess here whether the format passed in it is dynamic or not.\n\nSome parts of this patch have been written by Steven Rostedt (most notably\nthe part that chooses the appropriate implementation for each callsites).\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "1852fcce181faa237c010a3dbedb473cf9d4555f",
      "tree": "863cd12b573fd36436e7fb042f9bd96a73a9f725",
      "parents": [
        "73c5162aa362a543793f4a957c6c536dcbaa89ce"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Mar 11 14:33:00 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Mar 11 22:15:24 2009 -0400"
      },
      "message": "tracing: expand the ring buffers when an event is activated\n\nTo save memory, the tracer ring buffers are set to a minimum.\nThe activating of a trace expands the ring buffer size. This patch\nadds this expanding, when an event is activated.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "da4d03020c2af32f73e8bfbab0a66620d85bb9bb",
      "tree": "3ee6d7d69754df7910454315a6011c14d8664d01",
      "parents": [
        "9cc26a261d43e5898287a1f5808132f8f05ceb1c"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Mar 09 17:14:30 2009 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 10 00:35:07 2009 -0400"
      },
      "message": "tracing: new format for specialized trace points\n\nImpact: clean up and enhancement\n\nThe TRACE_EVENT_FORMAT macro looks quite ugly and is limited in its\nability to save data as well as to print the record out. Working with\nIngo Molnar, we came up with a new format that is much more pleasing to\nthe eye of C developers. This new macro is more C style than the old\nmacro, and is more obvious to what it does.\n\nHere\u0027s the example. The only updated macro in this patch is the\nsched_switch trace point.\n\nThe old method looked like this:\n\n TRACE_EVENT_FORMAT(sched_switch,\n        TP_PROTO(struct rq *rq, struct task_struct *prev,\n                struct task_struct *next),\n        TP_ARGS(rq, prev, next),\n        TP_FMT(\"task %s:%d \u003d\u003d\u003e %s:%d\",\n              prev-\u003ecomm, prev-\u003epid, next-\u003ecomm, next-\u003epid),\n        TRACE_STRUCT(\n                TRACE_FIELD(pid_t, prev_pid, prev-\u003epid)\n                TRACE_FIELD(int, prev_prio, prev-\u003eprio)\n                TRACE_FIELD_SPECIAL(char next_comm[TASK_COMM_LEN],\n                                    next_comm,\n                                    TP_CMD(memcpy(TRACE_ENTRY-\u003enext_comm,\n                                                 next-\u003ecomm,\n                                                 TASK_COMM_LEN)))\n                TRACE_FIELD(pid_t, next_pid, next-\u003epid)\n                TRACE_FIELD(int, next_prio, next-\u003eprio)\n        ),\n        TP_RAW_FMT(\"prev %d:%d \u003d\u003d\u003e next %s:%d:%d\")\n        );\n\nThe above method is hard to read and requires two format fields.\n\nThe new method:\n\n /*\n  * Tracepoint for task switches, performed by the scheduler:\n  *\n  * (NOTE: the \u0027rq\u0027 argument is not used by generic trace events,\n  *        but used by the latency tracer plugin. )\n  */\n TRACE_EVENT(sched_switch,\n\n\tTP_PROTO(struct rq *rq, struct task_struct *prev,\n\t\t struct task_struct *next),\n\n\tTP_ARGS(rq, prev, next),\n\n\tTP_STRUCT__entry(\n\t\t__array(\tchar,\tprev_comm,\tTASK_COMM_LEN\t)\n\t\t__field(\tpid_t,\tprev_pid\t\t\t)\n\t\t__field(\tint,\tprev_prio\t\t\t)\n\t\t__array(\tchar,\tnext_comm,\tTASK_COMM_LEN\t)\n\t\t__field(\tpid_t,\tnext_pid\t\t\t)\n\t\t__field(\tint,\tnext_prio\t\t\t)\n\t),\n\n\tTP_printk(\"task %s:%d [%d] \u003d\u003d\u003e %s:%d [%d]\",\n\t\t__entry-\u003eprev_comm, __entry-\u003eprev_pid, __entry-\u003eprev_prio,\n\t\t__entry-\u003enext_comm, __entry-\u003enext_pid, __entry-\u003enext_prio),\n\n\tTP_fast_assign(\n\t\tmemcpy(__entry-\u003enext_comm, next-\u003ecomm, TASK_COMM_LEN);\n\t\t__entry-\u003eprev_pid\t\u003d prev-\u003epid;\n\t\t__entry-\u003eprev_prio\t\u003d prev-\u003eprio;\n\t\tmemcpy(__entry-\u003eprev_comm, prev-\u003ecomm, TASK_COMM_LEN);\n\t\t__entry-\u003enext_pid\t\u003d next-\u003epid;\n\t\t__entry-\u003enext_prio\t\u003d next-\u003eprio;\n\t)\n );\n\nThis macro is called TRACE_EVENT, it is broken up into 5 parts:\n\n TP_PROTO:        the proto type of the trace point\n TP_ARGS:         the arguments of the trace point\n TP_STRUCT_entry: the structure layout of the entry in the ring buffer\n TP_printk:       the printk format\n TP_fast_assign:  the method used to write the entry into the ring buffer\n\nThe structure is the definition of how the event will be saved in the\nring buffer. The printk is used by the internal tracing in case of\nan oops, and the kernel needs to print out the format of the record\nto the console. This the TP_printk gives a means to show the records\nin a human readable format. It is also used to print out the data\nfrom the trace file.\n\nThe TP_fast_assign is executed directly. It is basically like a C function,\nwhere the __entry is the handle to the record.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "9de36825b321fe9fe9cf73260554251af579f4ca",
      "tree": "0bde90baa93cb7a1ac09c6ae73d6ec1d67ac2f44",
      "parents": [
        "769b0441f438c4bb4872cb8560eb6fe51bcc09ee"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 06 17:52:03 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 06 17:59:12 2009 +0100"
      },
      "message": "tracing: trace_bprintk() cleanups\n\nImpact: cleanup\n\nRemove a few leftovers and clean up the code a bit.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c1236356510-8381-5-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "769b0441f438c4bb4872cb8560eb6fe51bcc09ee",
      "tree": "9908682dfd89e97c3097a7c3adcae35d821e1895",
      "parents": [
        "1ba28e02a18cbdbea123836f6c98efb09cbf59ec"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Mar 06 17:21:49 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 06 17:59:12 2009 +0100"
      },
      "message": "tracing/core: drop the old trace_printk() implementation in favour of trace_bprintk()\n\nImpact: faster and lighter tracing\n\nNow that we have trace_bprintk() which is faster and consume lesser\nmemory than trace_printk() and has the same purpose, we can now drop\nthe old implementation in favour of the binary one from trace_bprintk(),\nwhich means we move all the implementation of trace_bprintk() to\ntrace_printk(), so the Api doesn\u0027t change except that we must now use\ntrace_seq_bprintk() to print the TRACE_PRINT entries.\n\nSome changes result of this:\n\n- Previously, trace_bprintk depended of a single tracer and couldn\u0027t\n  work without. This tracer has been dropped and the whole implementation\n  of trace_printk() (like the module formats management) is now integrated\n  in the tracing core (comes with CONFIG_TRACING), though we keep the file\n  trace_printk (previously trace_bprintk.c) where we can find the module\n  management. Thus we don\u0027t overflow trace.c\n\n- changes some parts to use trace_seq_bprintk() to print TRACE_PRINT entries.\n\n- change a bit trace_printk/trace_vprintk macros to support non-builtin formats\n  constants, and fix \u0027const\u0027 qualifiers warnings. But this is all transparent for\n  developers.\n\n- etc...\n\nV2:\n\n- Rebase against last changes\n- Fix mispell on the changelog\n\nV3:\n\n- Rebase against last changes (moving trace_printk() to kernel.h)\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c1236356510-8381-5-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1427cdf0592368bdec57276edaf714040ee8744f",
      "tree": "4b214ee49643db383328cf53a31959eb0627a167",
      "parents": [
        "546e5354a6e4ec760ac03ef1148e9a4762abb5f5"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Fri Mar 06 17:21:47 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 06 17:59:11 2009 +0100"
      },
      "message": "tracing: infrastructure for supporting binary record\n\nImpact: save on memory for tracing\n\nCurrent tracers are typically using a struct(like struct ftrace_entry,\nstruct ctx_switch_entry, struct special_entr etc...)to record a binary\nevent. These structs can only record a their own kind of events.\nA new kind of tracer need a new struct and a lot of code too handle it.\n\nSo we need a generic binary record for events. This infrastructure\nis for this purpose.\n\n[fweisbec@gmail.com: rebase against latest -tip, make it safe while sched\ntracing as reported by Steven Rostedt]\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c1236356510-8381-3-git-send-email-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5e1607a00bd082972629d3d68c95c8bcf902b55a",
      "tree": "2751baf5ee286cdec8f4b1afcb7332f4c1f5f454",
      "parents": [
        "53664738c122bfe8b0e489fddaf2ab265c9133c8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 05 10:24:48 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Mar 05 10:24:48 2009 +0100"
      },
      "message": "tracing: rename ftrace_printk() \u003d\u003e trace_printk()\n\nImpact: cleanup\n\nUse a more generic name - this also allows the prototype to move\nto kernel.h and be generally available to kernel developers who\nwant to do some quick tracing.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c032ef64d680717e4e8ce3da65da6419a35f8a2c",
      "tree": "f6d77c0033e9a33f22adac66d939338c55f06525",
      "parents": [
        "e74da5235cec6cb71eb338c987f876ecc793138b"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Mar 04 20:34:24 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Mar 04 20:34:24 2009 -0500"
      },
      "message": "tracing: add latency output format option\n\nWith the removal of the latency_trace file, we lost the ability\nto see some of the finer details in a trace. Like the state of\ninterrupts enabled, the preempt count, need resched, and if we\nare in an interrupt handler, softirq handler or not.\n\nThis patch simply creates an option to bring back the old format.\nThis also removes the warning about an unused variable that held\nthe latency_trace file operations.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "2cadf9135eb3b6d84b6427314be827ddd443c308",
      "tree": "919e201f615b8de6d0263ded5693bad326196671",
      "parents": [
        "474d32b68d6d842f3e710e9ae9fe2568c53339f8"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Dec 01 22:20:19 2008 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Mar 03 21:01:55 2009 -0500"
      },
      "message": "tracing: add binary buffer files for use with splice\n\nImpact: new feature\n\nThis patch creates a directory of files that correspond to the\nper CPU ring buffers. These are binary files and are made to\nbe used with splice. This is the fastest way to extract data from\nthe ftrace ring buffers.\n\nThanks to Jiaying Zhang for pushing me to get this code fixed,\n and to Eduard - Gabriel Munteanu for his splice code that helped\n me debug my code.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "981d081ec8b958b7d962ee40d433581a55d40fc5",
      "tree": "366aa5da7dc98cc2354002946e6f19ec60c02301",
      "parents": [
        "f9520750c4c9924c14325cd951efae5fae58104c"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Mar 02 13:53:59 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Mar 02 14:27:27 2009 -0500"
      },
      "message": "tracing: add format file to describe event struct fields\n\nThis patch adds the \"format\" file to the trace point event directory.\nThis is based off of work by Tom Zanussi, in which a file is exported\nto be tread from user land such that a user space app may read the\nbinary record stored in the ring buffer.\n\n # cat /debug/tracing/events/sched/sched_switch/format\n        field:pid_t prev_pid;   offset:12;      size:4;\n        field:int prev_prio;    offset:16;      size:4;\n        field special:char next_comm[TASK_COMM_LEN];    offset:20;      size:16;\n        field:pid_t next_pid;   offset:36;      size:4;\n        field:int next_prio;    offset:40;      size:4;\n\nIdea-from: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "f9520750c4c9924c14325cd951efae5fae58104c",
      "tree": "b6958c13894816db9388f856f101e9f67b3bf1a4",
      "parents": [
        "11a241a3302277db05561e01477528629d806c4e"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Mar 02 14:04:40 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Mar 02 14:08:51 2009 -0500"
      },
      "message": "tracing: make trace_seq_reset global and rename to trace_seq_init\n\nImpact: clean up\n\nThe trace_seq functions may be used separately outside of the ftrace\niterator. The trace_seq_reset is needed for these operations.\n\nThis patch also renames trace_seq_reset to the more appropriate\ntrace_seq_init.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "fd99498989f3b3feeab89dcadf537138ba136d24",
      "tree": "9470e9b4e886466511d47a70281e77e5a8c674ff",
      "parents": [
        "c32e827b25054cb17b79cf97fb5e63ae4ce2223c"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Feb 28 02:41:25 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Feb 28 04:04:03 2009 -0500"
      },
      "message": "tracing: add raw fast tracing interface for trace events\n\nThis patch adds the interface to enable the C style trace points.\nIn the directory /debugfs/tracing/events/subsystem/event\nWe now have three files:\n\n enable : values 0 or 1 to enable or disable the trace event.\n\n available_types: values \u0027raw\u0027 and \u0027printf\u0027 which indicate the tracing\n       types available for the trace point. If a developer does not\n       use the TRACE_EVENT_FORMAT macro and just uses the TRACE_FORMAT\n       macro, then only \u0027printf\u0027 will be available. This file is\n       read only.\n\n type: values \u0027raw\u0027 or \u0027printf\u0027. This indicates which type of tracing\n       is active for that trace point. \u0027printf\u0027 is the default and\n       if \u0027raw\u0027 is not available, this file is read only.\n\n # echo raw \u003e /debug/tracing/events/sched/sched_wakeup/type\n # echo 1 \u003e /debug/tracing/events/sched/sched_wakeup/enable\n\n Will enable the C style tracing for the sched_wakeup trace point.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "c32e827b25054cb17b79cf97fb5e63ae4ce2223c",
      "tree": "9a79a8662d88557303a671d147f80038b5fd87dc",
      "parents": [
        "ef5580d0fffce6e0a01043bac0625128b5d409a7"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Feb 27 19:12:30 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Feb 28 03:09:32 2009 -0500"
      },
      "message": "tracing: add raw trace point recording infrastructure\n\nImpact: lower overhead tracing\n\nThe current event tracer can automatically pick up trace points\nthat are registered with the TRACE_FORMAT macro. But it required\na printf format string and parsing. Although, this adds the ability\nto get guaranteed information like task names and such, it took\na hit in overhead processing. This processing can add about 500-1000\nnanoseconds overhead, but in some cases that too is considered\ntoo much and we want to shave off as much from this overhead as\npossible.\n\nTom Zanussi recently posted tracing patches to lkml that are based\non a nice idea about capturing the data via C structs using\nSTRUCT_ENTER, STRUCT_EXIT type of macros.\n\nI liked that method very much, but did not like the implementation\nthat required a developer to add data/code in several disjoint\nlocations.\n\nThis patch extends the event_tracer macros to do a similar \"raw C\"\napproach that Tom Zanussi did. But instead of having the developers\nneeding to tweak a bunch of code all over the place, they can do it\nall in one macro - preferably placed near the code that it is\ntracing. That makes it much more likely that tracepoints will be\nmaintained on an ongoing basis by the code they modify.\n\nThe new macro TRACE_EVENT_FORMAT is created for this approach. (Note,\na developer may still utilize the more low level DECLARE_TRACE macros\nif they don\u0027t care about getting their traces automatically in the event\ntracer.)\n\nThey can also use the existing TRACE_FORMAT if they don\u0027t need to code\nthe tracepoint in C, but just want to use the convenience of printf.\n\nSo if the developer wants to \"hardwire\" a tracepoint in the fastest\npossible way, and wants to acquire their data via a user space utility\nin a raw binary format, or wants to see it in the trace output but not\nsacrifice any performance, then they can implement the faster but\nmore complex TRACE_EVENT_FORMAT macro.\n\nHere\u0027s what usage looks like:\n\n  TRACE_EVENT_FORMAT(name,\n\tTPPROTO(proto),\n\tTPARGS(args),\n\tTPFMT(fmt, fmt_args),\n\tTRACE_STUCT(\n\t\tTRACE_FIELD(type1, item1, assign1)\n\t\tTRACE_FIELD(type2, item2, assign2)\n\t\t\t[...]\n\t),\n\tTPRAWFMT(raw_fmt)\n\t);\n\nNote name, proto, args, and fmt, are all identical to what TRACE_FORMAT\nuses.\n\n name: is the unique identifier of the trace point\n proto: The proto type that the trace point uses\n args: the args in the proto type\n fmt: printf format to use with the event printf tracer\n fmt_args: the printf argments to match fmt\n\n TRACE_STRUCT starts the ability to create a structure.\n Each item in the structure is defined with a TRACE_FIELD\n\n  TRACE_FIELD(type, item, assign)\n\n type: the C type of item.\n item: the name of the item in the stucture\n assign: what to assign the item in the trace point callback\n\n raw_fmt is a way to pretty print the struct. It must match\n  the order of the items are added in TRACE_STUCT\n\n An example of this would be:\n\n TRACE_EVENT_FORMAT(sched_wakeup,\n\tTPPROTO(struct rq *rq, struct task_struct *p, int success),\n\tTPARGS(rq, p, success),\n\tTPFMT(\"task %s:%d %s\",\n\t      p-\u003ecomm, p-\u003epid, success?\"succeeded\":\"failed\"),\n\tTRACE_STRUCT(\n\t\tTRACE_FIELD(pid_t, pid, p-\u003epid)\n\t\tTRACE_FIELD(int, success, success)\n\t),\n\tTPRAWFMT(\"task %d success\u003d%d\")\n\t);\n\n This creates us a unique struct of:\n\n struct {\n\tpid_t\t\tpid;\n\tint\t\tsuccess;\n };\n\n And the way the call back would assign these values would be:\n\n\tentry-\u003epid \u003d p-\u003epid;\n\tentry-\u003esuccess \u003d success;\n\nThe nice part about this is that the creation of the assignent is done\nvia macro magic in the event tracer.  Once the TRACE_EVENT_FORMAT is\ncreated, the developer will then have a faster method to record\ninto the ring buffer. They do not need to worry about the tracer itself.\n\nThe developer would only need to touch the files in include/trace/*.h\n\nAgain, I would like to give special thanks to Tom Zanussi for this\nnice idea.\n\nIdea-from: Tom Zanussi \u003ctzanussi@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "ef5580d0fffce6e0a01043bac0625128b5d409a7",
      "tree": "bc6ca68064d6b5c9853227ef876b391cc8b0c939",
      "parents": [
        "3d7ba938da8481b4f7f9ed3d943dbae49389b284"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Feb 27 19:38:04 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Feb 28 03:06:44 2009 -0500"
      },
      "message": "tracing: add interface to write into current tracer buffer\n\nRight now all tracers must manage their own trace buffers. This was\nto enforce tracers to be independent in case we finally decide to\nallow each tracer to have their own trace buffer.\n\nBut now we are adding event tracing that writes to the current tracer\u0027s\nbuffer. This adds an interface to allow events to write to the current\ntracer buffer without having to manage its own. Since event tracing\nhas no \"tracer\", and is just a way to hook into any other tracer.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "d7350c3f45694104e820041969c8185c5f99e57c",
      "tree": "7aaed9e59f6d33c82e0b62c21f9d1bda9f094b4e",
      "parents": [
        "b04cc6b1f6398b0e0b60d37e27ce51b4899672ec"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Feb 25 06:13:16 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 13:40:58 2009 +0100"
      },
      "message": "tracing/core: make the read callbacks reentrants\n\nNow that several per-cpu files can be read or spliced at the\nsame, we want the read/splice callbacks for tracing files to be\nreentrants.\n\nUntil now, a single global mutex (trace_types_lock) serialized\nthe access to tracing_read_pipe(), tracing_splice_read_pipe(),\nand the seq helpers.\n\nIe: it means that if a user tries to read trace_pipe0 and\ntrace_pipe1 at the same time, the access to the function\ntracing_read_pipe() is contended and one reader must wait for\nthe other to finish its read call.\n\nThe trace_type_lock mutex is mostly here to serialize the access\nto the global current tracer (current_trace), which can be\nchanged concurrently. Although the iter struct keeps a private\npointer to this tracer, its callbacks can be changed by another\nfunction.\n\nThe method used here is to not keep anymore private reference to\nthe tracer inside the iterator but to make a copy of it inside\nthe iterator. Then it checks on subsequents read calls if the\ntracer has changed. This is not costly because the current\ntracer is not expected to be changed often, so we use a branch\nprediction for that.\n\nMoreover, we add a private mutex to the iterator (there is one\niterator per file descriptor) to serialize the accesses in case\nof multiple consumers per file descriptor (which would be a\nsilly idea from the user). Note that this is not to protect the\nring buffer, since the ring buffer already serializes the\nreaders accesses. This is to prevent from traces weirdness in\ncase of concurrent consumers. But these mutexes can be dropped\nanyway, that would not result in any crash. Just tell me what\nyou think about it.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b04cc6b1f6398b0e0b60d37e27ce51b4899672ec",
      "tree": "61d5bd59b364913f5a124d25925b908c5deaf871",
      "parents": [
        "2b1b858f690d6369a59ad241335eeedec6eb0c8c"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Feb 25 03:22:28 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 25 13:40:58 2009 +0100"
      },
      "message": "tracing/core: introduce per cpu tracing files\n\nImpact: split up tracing output per cpu\n\nCurrently, on the tracing debugfs directory, three files are\navailable to the user to let him extracting the trace output:\n\n- trace is an iterator through the ring-buffer. It\u0027s a reader\n  but not a consumer It doesn\u0027t block when no more traces are\n  available.\n\n- trace pretty similar to the former, except that it adds more\n  informations such as prempt count, irq flag, ...\n\n- trace_pipe is a reader and a consumer, it will also block\n  waiting for traces if necessary (heh, yes it\u0027s a pipe).\n\nThe traces coming from different cpus are curretly mixed up\ninside these files. Sometimes it messes up the informations,\nsometimes it\u0027s useful, depending on what does the tracer\ncapture.\n\nThe tracing_cpumask file is useful to filter the output and\nselect only the traces captured a custom defined set of cpus.\nBut still it is not enough powerful to extract at the same time\none trace buffer per cpu.\n\nSo this patch creates a new directory: /debug/tracing/per_cpu/.\n\nInside this directory, you will now find one trace_pipe file and\none trace file per cpu.\n\nWhich means if you have two cpus, you will have:\n\n trace0\n trace1\n trace_pipe0\n trace_pipe1\n\nAnd of course, reading these files will have the same effect\nthan with the usual tracing files, except that you will only see\nthe traces from the given cpu.\n\nThe original all-in-one cpu trace file are still available on\ntheir original place.\n\nUntil now, only one consumer was allowed on trace_pipe to avoid\nracy consuming on the ring-buffer. Now the approach changed a\nbit, you can have only one consumer per cpu.\n\nWhich means you are allowed to read concurrently trace_pipe0 and\ntrace_pipe1 But you can\u0027t have two readers on trace_pipe0 or\ntrace_pipe1.\n\nFollowing the same logic, if there is one reader on the common\ntrace_pipe, you can not have at the same time another reader on\ntrace_pipe0 or in trace_pipe1. Because in trace_pipe is already\na consumer in all cpu buffers in essence.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6eaaa5d57e76c454479833fc8594cd7c3b75c789",
      "tree": "c8f3c130004199bbbc8d141bbfb0f216539c0724",
      "parents": [
        "ac07bcaa8259841905ead3f8cd60b1923ca6c0e5"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Feb 11 02:25:00 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Feb 18 01:40:20 2009 +0100"
      },
      "message": "tracing/core: use appropriate waiting on trace_pipe\n\nImpact: api and pipe waiting change\n\nCurrently, the waiting used in tracing_read_pipe() is done through a\n100 msecs schedule_timeout() loop which periodically check if there\nare traces on the buffer.\n\nThis can cause small latencies for programs which are reading the incoming\nevents.\n\nThis patch makes the reader waiting for the trace_wait waitqueue except\nfor few tracers such as the sched and functions tracers which might be\nalready hold the runqueue lock while waking up the reader.\n\nThis is performed through a new callback wait_pipe() on struct tracer.\nIf none is implemented on a specific tracer, the default waiting for\ntrace_wait queue is attached.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3c56819b14b00dd449bd776303e61f8532fad09f",
      "tree": "5a0617aa39fa441673382cf69d873b1906146e7e",
      "parents": [
        "b91facc367366b3f71375f337eb5997ec9ab4e69"
      ],
      "author": {
        "name": "Eduard - Gabriel Munteanu",
        "email": "eduard.munteanu@linux360.ro",
        "time": "Mon Feb 09 08:15:56 2009 +0200"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon Feb 09 12:24:34 2009 -0500"
      },
      "message": "tracing: splice support for tracing_pipe\n\nAdded and implemented tracing_pipe_fops-\u003esplice_read(). This allows\nuserspace programs to get tracing data more efficiently.\n\nSigned-off-by: Eduard - Gabriel Munteanu \u003ceduard.munteanu@linux360.ro\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "b91facc367366b3f71375f337eb5997ec9ab4e69",
      "tree": "1f7c8914f493080cadcfdec23b33d9a5936fe98b",
      "parents": [
        "1dfba05d0f1a9b4245bb242a7c17fe448811a520"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Feb 06 18:30:44 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 09 12:37:27 2009 +0100"
      },
      "message": "tracing/function-graph-tracer: handle the leaf functions from trace_pipe\n\nWhen one cats the trace file, the leaf functions are printed without brackets:\n\n function();\n\nwhereas in the trace_pipe file we\u0027ll see the following:\n\n function() {\n }\n\nThis is because the ring_buffer handling is not the same between those two files.\nOn the trace file, when an entry is printed, the iterator advanced and then we can\ncheck the next entry.\n\nThere is no iterator with trace_pipe, the current entry to print has been peeked\nand not consumed. So checking the next entry will still return the current one while\nwe don\u0027t consume it.\n\nThis patch introduces a new value for the output callbacks to ask the tracing\ncore to not consume the current entry after printing it.\n\nWe need it because we will have to consume the current entry ourself to check\nthe next one.\n\nNow the trace_pipe is able to handle well the leaf functions.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1292211058aaf872eeb2a0e2677d237916b4501f",
      "tree": "7127ffe80e42faed85bf45b4182c97a39f299642",
      "parents": [
        "7447dce96f2233d250bc39a4a10a42f7c3dd46fc"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Feb 07 22:16:12 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 09 10:51:38 2009 +0100"
      },
      "message": "tracing/power: move the power trace headers to a dedicated file\n\nImpact: cleanup\n\nMove the power tracer headers to trace/power.h to keep ftrace.h and power bits\nmore easy to maintain as separated topics.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7447dce96f2233d250bc39a4a10a42f7c3dd46fc",
      "tree": "c02c991cca658e69a0c83c1a93b068df1d5caa53",
      "parents": [
        "2db270a80b8f2238e536876cfb3987af02684df8"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Feb 07 21:33:57 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 09 10:51:37 2009 +0100"
      },
      "message": "tracing/function-graph-tracer: provide a selftest for the function graph tracer\n\nMaking it more easy to do a basic regression test for this tracer.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "44b0635481437140b0e29d6023f05e805d5e7620",
      "tree": "ff31986115075410d0479df307a6b9841976026c",
      "parents": [
        "4ad476e11f94fd3724c6e272d8220e99cd222b27",
        "57794a9d48b63e34acbe63282628c9f029603308"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 09 10:35:12 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Feb 09 10:35:12 2009 +0100"
      },
      "message": "Merge branch \u0027tip/tracing/core/devel\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into tracing/ftrace\n\nConflicts:\n\tkernel/trace/trace_hw_branches.c\n"
    },
    {
      "commit": "57794a9d48b63e34acbe63282628c9f029603308",
      "tree": "ed42d073f82cd91b8d8a331c60814aa699c3293d",
      "parents": [
        "a81bd80a0b0a405dc0483e2c428332d69da2c79f"
      ],
      "author": {
        "name": "Wenji Huang",
        "email": "wenji.huang@oracle.com",
        "time": "Fri Feb 06 17:33:27 2009 +0800"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Feb 07 20:03:36 2009 -0500"
      },
      "message": "trace: trivial fixes in comment typos.\n\nImpact: clean up\n\nFixed several typos in the comments.\n\nSigned-off-by: Wenji Huang \u003cwenji.huang@oracle.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "1830b52d0de8c60c4f5dfbac134aa8f69d815801",
      "tree": "2aa803853ac145fedd0d65324d77f64d25e7b3a2",
      "parents": [
        "43769f10b4826376cbf4ce17af74a5b4e8dc4fcd"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Feb 07 19:38:43 2009 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Feb 07 19:38:43 2009 -0500"
      },
      "message": "trace: remove deprecated entry-\u003ecpu\n\nImpact: fix to prevent developers from using entry-\u003ecpu\n\nWith the new ring buffer infrastructure, the cpu for the entry is\nimplicit with which CPU buffer it is on.\n\nThe original code use to record the current cpu into the generic\nentry header, which can be retrieved by entry-\u003ecpu. When the\nring buffer was introduced, the users were convert to use the\nthe cpu number of which cpu ring buffer was in use (this was passed\nto the tracers by the iterator: iter-\u003ecpu).\n\nUnfortunately, the cpu item in the entry structure was never removed.\nThis allowed for developers to use it instead of the proper iter-\u003ecpu,\nunknowingly, using an uninitialized variable. This was not the fault\nof the developers, since it would seem like the logical place to\nretrieve the cpu identifier.\n\nThis patch removes the cpu item from the entry structure and fixes\nall the users that should have been using iter-\u003ecpu.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "b6f11df26fdc28324cf9c9e3b77f2dc985c1bb13",
      "tree": "e03b4b8b9dad8a2d3f81574c10aab8fb7a779cbb",
      "parents": [
        "51a763dd84253bab1d0a1e68e11a7753d1b702ca"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Thu Feb 05 18:02:00 2009 -0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 06 01:01:41 2009 +0100"
      },
      "message": "trace: Call tracing_reset_online_cpus before tracer-\u003einit()\n\nImpact: cleanup\n\nTo make it easy for ftrace plugin writers, as this was open coded in\nthe existing plugins\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nAcked-by: Frédéric Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "51a763dd84253bab1d0a1e68e11a7753d1b702ca",
      "tree": "2cc2cf0509db480391c585786285267e360c1338",
      "parents": [
        "0a9877514c4fed10a70720293b37213dd172ee3e"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Thu Feb 05 16:14:13 2009 -0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 06 01:01:41 2009 +0100"
      },
      "message": "tracing: Introduce trace_buffer_{lock_reserve,unlock_commit}\n\nImpact: new API\n\nThese new functions do what previously was being open coded, reducing\nthe number of details ftrace plugin writers have to worry about.\n\nIt also standardizes the handling of stacktrace, userstacktrace and\nother trace options we may introduce in the future.\n\nWith this patch, for instance, the blk tracer (and some others already\nin the tree) can use the \"userstacktrace\" /d/tracing/trace_options\nfacility.\n\n$ codiff /tmp/vmlinux.before /tmp/vmlinux.after\nlinux-2.6-tip/kernel/trace/trace.c:\n  trace_vprintk              |   -5\n  trace_graph_return         |  -22\n  trace_graph_entry          |  -26\n  trace_function             |  -45\n  __ftrace_trace_stack       |  -27\n  ftrace_trace_userstack     |  -29\n  tracing_sched_switch_trace |  -66\n  tracing_stop               |   +1\n  trace_seq_to_user          |   -1\n  ftrace_trace_special       |  -63\n  ftrace_special             |   +1\n  tracing_sched_wakeup_trace |  -70\n  tracing_reset_online_cpus  |   -1\n 13 functions changed, 2 bytes added, 355 bytes removed, diff: -353\n\nlinux-2.6-tip/block/blktrace.c:\n  __blk_add_trace |  -58\n 1 function changed, 58 bytes removed, diff: -58\n\nlinux-2.6-tip/kernel/trace/trace.c:\n  trace_buffer_lock_reserve  |  +88\n  trace_buffer_unlock_commit |  +86\n 2 functions changed, 174 bytes added, diff: +174\n\n/tmp/vmlinux.after:\n 16 functions changed, 176 bytes added, 413 bytes removed, diff: -237\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nAcked-by: Frédéric Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7be421510b91491d5aa5a29fa1005712039b95af",
      "tree": "43c85cd688ea4e33b32816bb3f363215d572f052",
      "parents": [
        "97e5b191ae7dc0f4f5b82b9db29782928b103b4d"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Thu Feb 05 01:13:37 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Feb 05 14:35:47 2009 +0100"
      },
      "message": "trace: Remove unused trace_array_cpu parameter\n\nImpact: cleanup\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c4a8e8be2d43cc22b371e8e9c05c253409759d94",
      "tree": "274962a78a082a11550d07c6cc088817d6558db5",
      "parents": [
        "dc573f9b20c8710105ac35c08ed0fe1da5160ecd"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Feb 02 20:29:21 2009 -0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Feb 03 14:03:52 2009 +0100"
      },
      "message": "trace: better manage the context info for events\n\nImpact: make trace_event more convenient for tracers\n\nAll tracers (for the moment) that use the struct trace_event want to\nhave the context info printed before their own output: the pid/cmdline,\ncpu, and timestamp.\n\nBut some other tracers that want to implement their trace_event\ncallbacks will not necessary need these information or they may want to\nformat them as they want.\n\nThis patch adds a new default-enabled trace option:\nTRACE_ITER_CONTEXT_INFO When disabled through:\n\necho nocontext-info \u003e /debugfs/tracing/trace_options\n\nThe pid, cpu and timestamps headers will not be printed.\n\nIE with the sched_switch tracer with context-info (default):\n\n     bash-2935 [001] 100.356561: 2935:120:S \u003d\u003d\u003e [001]  0:140:R \u003cidle\u003e\n   \u003cidle\u003e-0    [000] 100.412804:    0:140:R   + [000] 11:115:S events/0\n   \u003cidle\u003e-0    [000] 100.412816:    0:140:R \u003d\u003d\u003e [000] 11:115:R events/0\n events/0-11   [000] 100.412829:   11:115:S \u003d\u003d\u003e [000]  0:140:R \u003cidle\u003e\n\nWithout context-info:\n\n 2935:120:S \u003d\u003d\u003e [001]  0:140:R \u003cidle\u003e\n    0:140:R   + [000] 11:115:S events/0\n    0:140:R \u003d\u003d\u003e [000] 11:115:R events/0\n   11:115:S \u003d\u003d\u003e [000]  0:140:R \u003cidle\u003e\n\nA tracer can disable it at runtime by clearing the bit\nTRACE_ITER_CONTEXT_INFO in trace_flags.\n\nThe print routines were renamed to trace_print_context and\ntrace_print_lat_context, so that they can be used by tracers if they\nwant to use them for one of the trace_event callbacks.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c71a896154119f4ca9e89d6078f5f63ad60ef199",
      "tree": "0018ea80af12d6385fd0aa5295dddefdb284eebe",
      "parents": [
        "9011262a37cb438f0fa9394b5e83840db8f9680a"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@redhat.com",
        "time": "Fri Jan 23 12:06:27 2009 -0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jan 26 14:40:53 2009 +0100"
      },
      "message": "blktrace: add ftrace plugin\n\nImpact: New way of using the blktrace infrastructure\n\nThis drops the requirement of userspace utilities to use the blktrace\nfacility.\n\nConfiguration is done thru sysfs, adding a \"trace\" directory to the\npartition directory where blktrace can be enabled for the associated\nrequest_queue.\n\nThe same filters present in the IOCTL interface are present as sysfs\ndevice attributes.\n\nThe /sys/block/sdX/sdXN/trace/enable file allows tracing without any\nfilters.\n\nThe other files in this directory: pid, act_mask, start_lba and end_lba\ncan be used with the same meaning as with the IOCTL interface.\n\nUsing the sysfs interface will only setup the request_queue-\u003eblk_trace\nfields, tracing will only take place when the \"blk\" tracer is selected\nvia the ftrace interface, as in the following example:\n\nTo see the trace, one can use the /d/tracing/trace file or the\n/d/tracign/trace_pipe file, with semantics defined in the ftrace\ndocumentation in Documentation/ftrace.txt.\n\n[root@f10-1 ~]# cat /t/trace\n       kjournald-305   [000]  3046.491224:   8,1    A WBS 6367 + 8 \u003c- (8,1) 6304\n       kjournald-305   [000]  3046.491227:   8,1    Q   R 6367 + 8 [kjournald]\n       kjournald-305   [000]  3046.491236:   8,1    G  RB 6367 + 8 [kjournald]\n       kjournald-305   [000]  3046.491239:   8,1    P  NS [kjournald]\n       kjournald-305   [000]  3046.491242:   8,1    I RBS 6367 + 8 [kjournald]\n       kjournald-305   [000]  3046.491251:   8,1    D  WB 6367 + 8 [kjournald]\n       kjournald-305   [000]  3046.491610:   8,1    U  WS [kjournald] 1\n          \u003cidle\u003e-0     [000]  3046.511914:   8,1    C  RS 6367 + 8 [6367]\n[root@f10-1 ~]#\n\nThe default line context (prefix) format is the one described in the ftrace\ndocumentation, with the blktrace specific bits using its existing format,\ndescribed in blkparse(8).\n\nIf one wants to have the classic blktrace formatting, this is possible by\nusing:\n\n[root@f10-1 ~]# echo blk_classic \u003e /t/trace_options\n[root@f10-1 ~]# cat /t/trace\n  8,1    0  3046.491224   305  A WBS 6367 + 8 \u003c- (8,1) 6304\n  8,1    0  3046.491227   305  Q   R 6367 + 8 [kjournald]\n  8,1    0  3046.491236   305  G  RB 6367 + 8 [kjournald]\n  8,1    0  3046.491239   305  P  NS [kjournald]\n  8,1    0  3046.491242   305  I RBS 6367 + 8 [kjournald]\n  8,1    0  3046.491251   305  D  WB 6367 + 8 [kjournald]\n  8,1    0  3046.491610   305  U  WS [kjournald] 1\n  8,1    0  3046.511914     0  C  RS 6367 + 8 [6367]\n[root@f10-1 ~]#\n\nUsing the ftrace standard format allows more flexibility, such\nas the ability of asking for backtraces via trace_options:\n\n[root@f10-1 ~]# echo noblk_classic \u003e /t/trace_options\n[root@f10-1 ~]# echo stacktrace \u003e /t/trace_options\n\n[root@f10-1 ~]# cat /t/trace\n       kjournald-305   [000]  3318.826779:   8,1    A WBS 6375 + 8 \u003c- (8,1) 6312\n       kjournald-305   [000]  3318.826782:\n \u003c\u003d submit_bio\n \u003c\u003d submit_bh\n \u003c\u003d sync_dirty_buffer\n \u003c\u003d journal_commit_transaction\n \u003c\u003d kjournald\n \u003c\u003d kthread\n \u003c\u003d child_rip\n       kjournald-305   [000]  3318.826836:   8,1    Q   R 6375 + 8 [kjournald]\n       kjournald-305   [000]  3318.826837:\n \u003c\u003d generic_make_request\n \u003c\u003d submit_bio\n \u003c\u003d submit_bh\n \u003c\u003d sync_dirty_buffer\n \u003c\u003d journal_commit_transaction\n \u003c\u003d kjournald\n \u003c\u003d kthread\n\nPlease read the ftrace documentation to use aditional, standardized\ntracing filters such as /d/tracing/trace_cpumask, etc.\n\nSee also /d/tracing/trace_mark to add comments in the trace stream,\nthat is equivalent to the /d/block/sdaN/msg interface.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b1818748b0cf9427e48acf9713295e829a0d715f",
      "tree": "49e8f8dc4328799fa69eae635f4b69ee97228445",
      "parents": [
        "5c5317de147e9b38ea9c4cbdc2d15bed7648d036"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markus.t.metzger@intel.com",
        "time": "Mon Jan 19 10:31:01 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 20 13:03:48 2009 +0100"
      },
      "message": "x86, ftrace, hw-branch-tracer: dump trace on oops\n\nDump the branch trace on an oops (based on ftrace_dump_on_oops).\n\nSigned-off-by: Markus Metzger \u003cmarkus.t.metzger@intel.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a225cdd263f340c864febb1992802fb5b08bc328",
      "tree": "a457f609c0071216c37f255cbaba00217bf1a7ed",
      "parents": [
        "3eb36aa05329a47cbe201c151fd0024a4a3649cd"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jan 15 23:06:03 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 16 12:17:58 2009 +0100"
      },
      "message": "ftrace: remove static from function tracer functions\n\nImpact: clean up\n\nAfter reorganizing the functions in trace.c and trace_function.c,\nthey no longer need to be in global context. This patch makes the\nfunctions and one variable into static.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5361499101306cfb776c3cfa0f69d0479bc63868",
      "tree": "1acf51a942abe6582e08ed86b4bbb98f9c095c89",
      "parents": [
        "6c1a99afbda99cd8d8c69d756387041567a13d87"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Jan 15 19:12:40 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jan 16 12:15:32 2009 +0100"
      },
      "message": "ftrace: add stack trace to function tracer\n\nImpact: new feature to stack trace any function\n\nChris Mason asked about being able to pick and choose a function\nand get a stack trace from it. This feature enables his request.\n\n # echo io_schedule \u003e /debug/tracing/set_ftrace_filter\n # echo function \u003e /debug/tracing/current_tracer\n # echo func_stack_trace \u003e /debug/tracing/trace_options\n\nProduces the following in /debug/tracing/trace:\n\n       kjournald-702   [001]   135.673060: io_schedule \u003c-sync_buffer\n       kjournald-702   [002]   135.673671:\n \u003c\u003d sync_buffer\n \u003c\u003d __wait_on_bit\n \u003c\u003d out_of_line_wait_on_bit\n \u003c\u003d __wait_on_buffer\n \u003c\u003d sync_dirty_buffer\n \u003c\u003d journal_commit_transaction\n \u003c\u003d kjournald\n\nNote, be careful about turning this on without filtering the functions.\nYou may find that you have a 10 second lag between typing and seeing\nwhat you typed. This is why the stack trace for the function tracer\ndoes not use the same stack_trace flag as the other tracers use.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "002bb86d8d42f18937aef396c3ecd65c7e02e21a",
      "tree": "ce8e81f6dc2515f6442198bbd4b527d900982f8e",
      "parents": [
        "a14a07b8018b714e03a39ff2180c66e307ef4238"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Jan 10 11:34:13 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jan 14 12:11:37 2009 +0100"
      },
      "message": "tracing/ftrace: separate events tracing and stats tracing engine\n\nImpact: tracing\u0027s Api change\n\nCurrently, the stat tracing depends on the events tracing.\nWhen you switch to a new tracer, the stats files of the previous tracer\nwill disappear. But it\u0027s more scalable to separate those two engines.\nThis way, we can keep the stat files of one or several tracers when we\nwant, without bothering of multiple tracer stat files or tracer switching.\n\nTo build/destroys its stats files, a tracer just have to call\nregister_stat_tracer/unregister_stat_tracer everytimes it wants to.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "034939b65ad5ff64b9709210b3469a95153c51a3",
      "tree": "14fc36bdcabc9c76ac179e4b39b7af11fcbdfb35",
      "parents": [
        "67d347245f76a149c45bffb1a10145d31d61d1da"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Jan 08 10:03:56 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 11 04:00:44 2009 +0100"
      },
      "message": "tracing/ftrace: handle more than one stat file per tracer\n\nImpact: new API for tracers\n\nMake the stat tracing API reentrant. And also provide the new directory\n/debugfs/tracing/trace_stat which will contain all the stat files for the\ncurrent active tracer.\n\nNow a tracer will, if desired, want to provide a zero terminated array of\ntracer_stat structures.\nEach one contains the callbacks necessary for one stat file.\nIt have to provide at least a name for its stat file, an iterator with\nstat_start/start_next callback and an output callback for one stat entry.\n\nAlso adapt the branch tracer to this new API.\nWe create two files \"all\" and \"annotated\" inside the /debugfs/tracing/trace_stat\ndirectory, making the both stats simultaneously available instead of needing\nto change an option to switch from one stat file to another.\n\nThe output of these stats haven\u0027t changed.\n\nChanges in v2:\n\n_ Apply the previous memory leak fix (rebase against tip/master)\n\nChanges in v3:\n\n_ Merge the patch that adapted the branch tracer to this Api in this patch to\n  not break the kernel build.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "99793e3dbe39a50d871eedc361659a894601e2bf",
      "tree": "a676d42a42f4c884e38121e5a5a4d6630929a9f7",
      "parents": [
        "3e80680208ba6ce9635ca7c21ad0019442ea166a",
        "a103e2ab7377dbbef2506be59c49a3f2ae10b60b"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 06 10:18:43 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 06 10:18:43 2009 +0100"
      },
      "message": "Merge branches \u0027tracing/kmemtrace2\u0027 and \u0027tracing/ftrace\u0027 into tracing/urgent\n"
    },
    {
      "commit": "3d7a96f5a485b7d06c2379f343d7312af89ec9e2",
      "tree": "5f097f68eb0f9fd3fa4a10f38672e300e9127b10",
      "parents": [
        "723cbe0775514853c22dc45005af59c360916af1",
        "238c6d54830c624f34ac9cf123ac04aebfca5013"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 06 09:53:05 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 06 09:53:05 2009 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into tracing/kmemtrace2\n"
    },
    {
      "commit": "4462344ee9ea9224d026801b877887f2f39774a3",
      "tree": "deb703d6858f2fb7f7db69c65e90560ce4a0654e",
      "parents": [
        "9e01c1b74c9531e301c900edaa92a99fcb7738f2"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:23 2009 +1030"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Jan 01 10:12:23 2009 +1030"
      },
      "message": "cpumask: convert kernel trace functions further\n\nImpact: Reduce future memory usage, use new cpumask API.\n\nSince the last patch was created and acked, more old cpumask users\nslipped into kernel/trace.\n\nMostly trivial conversions, except struct trace_iterator\u0027s \"started\"\nmember becomes a cpumask_var_t.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "36994e58a48fb8f9651c7dc845a6de298aba5bfc",
      "tree": "fac4b8a1c30560e91460651487f3a57ef7f2b5cc",
      "parents": [
        "7a51cffbd10886c0557677dd916c090097c691ef"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Mon Dec 29 13:42:23 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 30 09:36:13 2008 +0100"
      },
      "message": "tracing/kmemtrace: normalize the raw tracer event to the unified tracing API\n\nImpact: new tracer plugin\n\nThis patch adapts kmemtrace raw events tracing to the unified tracing API.\n\nTo enable and use this tracer, just do the following:\n\n echo kmemtrace \u003e /debugfs/tracing/current_tracer\n cat /debugfs/tracing/trace\n\nYou will have the following output:\n\n # tracer: kmemtrace\n #\n #\n # ALLOC  TYPE  REQ   GIVEN  FLAGS           POINTER         NODE    CALLER\n # FREE   |      |     |       |              |   |            |        |\n # |\n\ntype_id 1 call_site 18446744071565527833 ptr 18446612134395152256\ntype_id 0 call_site 18446744071565585597 ptr 18446612134405955584 bytes_req 4096 bytes_alloc 4096 gfp_flags 208 node -1\ntype_id 1 call_site 18446744071565585534 ptr 18446612134405955584\ntype_id 0 call_site 18446744071565585597 ptr 18446612134405955584 bytes_req 4096 bytes_alloc 4096 gfp_flags 208 node -1\ntype_id 0 call_site 18446744071565636711 ptr 18446612134345164672 bytes_req 240 bytes_alloc 240 gfp_flags 208 node -1\ntype_id 1 call_site 18446744071565585534 ptr 18446612134405955584\ntype_id 0 call_site 18446744071565585597 ptr 18446612134405955584 bytes_req 4096 bytes_alloc 4096 gfp_flags 208 node -1\ntype_id 0 call_site 18446744071565636711 ptr 18446612134345164912 bytes_req 240 bytes_alloc 240 gfp_flags 208 node -1\ntype_id 1 call_site 18446744071565585534 ptr 18446612134405955584\ntype_id 0 call_site 18446744071565585597 ptr 18446612134405955584 bytes_req 4096 bytes_alloc 4096 gfp_flags 208 node -1\ntype_id 0 call_site 18446744071565636711 ptr 18446612134345165152 bytes_req 240 bytes_alloc 240 gfp_flags 208 node -1\ntype_id 0 call_site 18446744071566144042 ptr 18446612134346191680 bytes_req 1304 bytes_alloc 1312 gfp_flags 208 node -1\ntype_id 1 call_site 18446744071565585534 ptr 18446612134405955584\ntype_id 0 call_site 18446744071565585597 ptr 18446612134405955584 bytes_req 4096 bytes_alloc 4096 gfp_flags 208 node -1\ntype_id 1 call_site 18446744071565585534 ptr 18446612134405955584\n\nThat was to stay backward compatible with the format output produced in\ninux/tracepoint.h.\n\nThis is the default ouput, but note that I tried something else.\n\nIf you change an option:\n\necho kmem_minimalistic \u003e /debugfs/trace_options\n\nand then cat /debugfs/trace, you will have the following output:\n\n # tracer: kmemtrace\n #\n #\n # ALLOC  TYPE  REQ   GIVEN  FLAGS           POINTER         NODE    CALLER\n # FREE   |      |     |       |              |   |            |        |\n # |\n\n   -      C                            0xffff88007c088780          file_free_rcu\n   +      K   4096   4096   000000d0   0xffff88007cad6000     -1   getname\n   -      C                            0xffff88007cad6000          putname\n   +      K   4096   4096   000000d0   0xffff88007cad6000     -1   getname\n   +      K    240    240   000000d0   0xffff8800790dc780     -1   d_alloc\n   -      C                            0xffff88007cad6000          putname\n   +      K   4096   4096   000000d0   0xffff88007cad6000     -1   getname\n   +      K    240    240   000000d0   0xffff8800790dc870     -1   d_alloc\n   -      C                            0xffff88007cad6000          putname\n   +      K   4096   4096   000000d0   0xffff88007cad6000     -1   getname\n   +      K    240    240   000000d0   0xffff8800790dc960     -1   d_alloc\n   +      K   1304   1312   000000d0   0xffff8800791d7340     -1   reiserfs_alloc_inode\n   -      C                            0xffff88007cad6000          putname\n   +      K   4096   4096   000000d0   0xffff88007cad6000     -1   getname\n   -      C                            0xffff88007cad6000          putname\n   +      K    992   1000   000000d0   0xffff880079045b58     -1   alloc_inode\n   +      K    768   1024   000080d0   0xffff88007c096400     -1   alloc_pipe_info\n   +      K    240    240   000000d0   0xffff8800790dca50     -1   d_alloc\n   +      K    272    320   000080d0   0xffff88007c088780     -1   get_empty_filp\n   +      K    272    320   000080d0   0xffff88007c088000     -1   get_empty_filp\n\nYeah I shall confess kmem_minimalistic should be: kmem_alternative.\n\nWhatever, I find it more readable but this a personal opinion of course.\nWe can drop it if you want.\n\nOn the ALLOC/FREE column, + means an allocation and - a free.\n\nOn the type column, you have K \u003d kmalloc, C \u003d cache, P \u003d page\n\nI would like the flags to be GFP_* strings but that would not be easy to not\nbreak the column with strings....\n\nAbout the node...it seems to always be -1. I don\u0027t know why but that shouldn\u0027t\nbe difficult to find.\n\nI moved linux/tracepoint.h to trace/tracepoint.h as well. I think that would\nbe more easy to find the tracer headers if they are all in their common\ndirectory.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f7d48cbde5c0710008caeaf7dbf14f4a9b064940",
      "tree": "f7b6bed9338b26bcdb4d95da434eab92463d8a5a",
      "parents": [
        "e302cf3f961ceb54c1dd0aff7ba8531df83be07a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Dec 29 13:02:17 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Dec 29 13:06:24 2008 +0100"
      },
      "message": "tracing/ftrace: make trace_find_cmdline() generally available\n\nImpact: build fix\n\nOn !CONFIG_CONTEXT_SWITCH_TRACER trace_find_cmdline() is not defined:\n\n kernel/trace/trace_output.c: In function \u0027trace_ctxwake_print\u0027:\n kernel/trace/trace_output.c:499: error: implicit declaration of function \u0027trace_find_cmdline\u0027\n kernel/trace/trace_output.c:499: warning: assignment makes pointer from integer without a cast\n\nMove it to the generic section in trace.h.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "dbd0b4b33074aa6b7832a9d9a5bd985eca5c1aa2",
      "tree": "b2f498a25c176cdba29cb1f9d1e854d38204192e",
      "parents": [
        "f633cef0200bbaec539e2dbb0bc4bed7f022f98b"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Dec 28 20:44:51 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Dec 29 12:55:45 2008 +0100"
      },
      "message": "tracing/ftrace: provide the base infrastructure for histogram tracing\n\nImpact: extend the tracing API\n\nThe goal of this patch is to normalize and make more easy the\nimplementation of statistical (histogram) tracing.\n\nIt implements a trace_stat file into the /debugfs/tracing directory where\none can print a one-shot output of statistics/histogram entries.\n\nA tracer has to provide two basic iterator callbacks:\n\n  stat_start() \u003d\u003e the first entry\n  stat_next(prev, idx) \u003d\u003e the next one.\n\nNote that it is adapted for arrays or hash tables or lists.... since it\nprovides a pointer to the previous entry and the current index of the\niterator.\n\nThese two callbacks are called to get a snapshot of the statistics at each\nopening of the trace_stat file because. The values are so updated between\ntwo \"cat trace_stat\". And the tracer is free to lock its datas during the\niteration to keep consistent values.\n\nSince it is almost always interesting to sort statisticals values to\naddress the problems by priority, this infrastructure provides a \"sorting\"\nof the stat entries too if desired. A tracer has just to provide a\nstat_cmp callback to compare two entries and the stat tracing\ninfrastructure will build a sorted list of the given entries.\n\nA last callback, called stat_headers, can be implemented by a tracer to\noutput headers on its trace.\n\nIf one of these callbacks is changed on runtime, it just have to signal it\nto the stat tracing API by calling the init_tracer_stat() helper.\n\nChanges in V2:\n\n- Fix a memory leak if the user opens multiple times the trace_stat file\n  without closing it. Now we always free our list before rebuilding it.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f0868d1e23a8efec33beb3aa688aab7fdb1ae093",
      "tree": "73593e14d0d127fe3fe055a85b6e16b50a43578a",
      "parents": [
        "c47956d9ae3341d2d1998bff26620fa3338c01e4"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Dec 23 23:24:12 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Dec 29 12:46:11 2008 +0100"
      },
      "message": "ftrace: set up trace event hash infrastructure\n\nImpact: simplify/generalize/refactor trace.c\n\nThe trace.c file is becoming more difficult to maintain due to the\ngrowing number of events. There is several formats that an event may\nbe printed. This patch sets up the infrastructure of an event hash to\nallow for events to register how they should be printed.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c47956d9ae3341d2d1998bff26620fa3338c01e4",
      "tree": "f6b3569f070ec8fe1a999985b2e8909cd9792785",
      "parents": [
        "0f01f07fad4ee11d98fe6faa442afbeb0328a378"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Dec 23 23:24:11 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Dec 29 12:46:10 2008 +0100"
      },
      "message": "ftrace: remove obsolete print continue functionality\n\nImpact: cleanup, remove obsolete code\n\nNow that the ring buffer used by ftrace allows for variable length\nentries, we do not need the \u0027cont\u0027 feature of the buffer.  This code\nmakes other parts of ftrace more complex and by removing this it\nsimplifies the ftrace code.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "213cc060797378059a28ebc5c539f3e9a80160bd",
      "tree": "e159f9fae35ca59fe2c02e905c2b4b91881d865c",
      "parents": [
        "30cd324e9787ccc9a5ede59742d5409857550692"
      ],
      "author": {
        "name": "Pekka J Enberg",
        "email": "penberg@cs.helsinki.fi",
        "time": "Fri Dec 19 12:08:39 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 19 16:29:34 2008 +0100"
      },
      "message": "ftrace: introduce tracing_reset_online_cpus() helper\n\nImpact: cleanup\n\nThis patch factors out common code from multiple tracers into a\ntracing_reset_online_cpus() function and converts the tracers to use it.\n\nSigned-off-by: Pekka Enberg \u003cpenberg@cs.helsinki.fi\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "66896a85cf2890b6bbbc4c9ccdcd296600ffbf89",
      "tree": "ad6b0a4df65a59280163f5b8ab0b92b2fe54c283",
      "parents": [
        "2c2d7329d8afa9efa3ec24e19a53e7be9d14f242"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Dec 13 20:18:13 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 17 00:26:36 2008 +0100"
      },
      "message": "tracing/ftrace: add the printk-msg-only option\n\nImpact: display ftrace_printk messages \"as is\"\n\nBy default, ftrace_printk() messages find their output with some other\ninformations like pid, caller, ...\nSometimes a developer just want to have the ftrace_printk left \"as is\", without\nother information.\n\nThis is done by providing a default-off option called printk-msg-only.\nTo enable it, just do `echo printk-msg-only \u003e /debugfs/tracing/trace_options`\n\nBefore the patch:\n\n           \u003c...\u003e-2739  [000]   145.692153: __might_sleep: I\u0027m an ftrace_printk msg in __might_sleep\n           \u003c...\u003e-2739  [000]   145.692155: __might_sleep: I\u0027m another ftrace_printk msg in __might_sleep\n\nAfter the patch and the printk-msg-only option enabled:\n\nI\u0027m an ftrace_printk msg in __might_sleep\nI\u0027m another ftrace_printk msg in __might_sleep\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a93751cab71d63126687551823ed3e70cd85854a",
      "tree": "665e9bf274c457edd672ad44320fad962e6c16f5",
      "parents": [
        "c2724775ce57c98b8af9694857b941dc61056516"
      ],
      "author": {
        "name": "Markus Metzger",
        "email": "markut.t.metzger@intel.com",
        "time": "Thu Dec 11 13:53:26 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 12 08:08:14 2008 +0100"
      },
      "message": "x86, bts, ftrace: adapt the hw-branch-tracer to the ds.c interface\n\nImpact: restructure code, cleanup\n\nRemove BTS bits from the hw-branch-tracer (renamed from bts-tracer) and\nuse the ds interface.\n\nSigned-off-by: Markus Metzger \u003cmarkut.t.metzger@intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "77d683f3e0258d522c5506e7b5fd05c9411184d9",
      "tree": "defa7451b5218e7cfdd3a92117fca96368791425",
      "parents": [
        "ff32504fdc56407654584ef187b20022c94a3486"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Dec 04 23:49:47 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 05 14:47:43 2008 +0100"
      },
      "message": "tracing/ftrace: fix the check of ftrace_trace_task\n\nImpact: fix default empty traces on function-graph-tracer\n\nThe actual ftrace_trace_task() checks if ftrace_pid_trace is allocated\nand return 1 if it is true.\nIf it is NULL, it will check the bit of pid tracing flag for the current\ntask (which are not set by default).\nSo by default, a task is not traced.\nActually all tasks should be traced by default and filter_by_pid when\nftrace_pid_trace is allocated.\n\nThe appropriate condition should be to return 1 if filter_by_pid is\nset.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcke-dby: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "970987beb9c99ca806edc464518d411cc399fb4d",
      "tree": "51e2298b6eb7e6412009428b380a51e1f17b531b",
      "parents": [
        "faec2ec505d397e9426754722b6e80d519c4938f",
        "1fd8f2a3f9a91b287a876cef830b21baafc8a799",
        "feaf3848a813a106f163013af6fcf6c4bfec92d9"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 05 14:45:22 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 05 14:45:22 2008 +0100"
      },
      "message": "Merge branches \u0027tracing/ftrace\u0027, \u0027tracing/function-graph-tracer\u0027 and \u0027tracing/urgent\u0027 into tracing/core\n"
    },
    {
      "commit": "1fd8f2a3f9a91b287a876cef830b21baafc8a799",
      "tree": "2baf0dfb14e3765efa370edafa2ab7f78d654308",
      "parents": [
        "b29144c317fb748dae6d72c0f88eda9d43165b8d"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Dec 03 23:45:11 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 10:18:39 2008 +0100"
      },
      "message": "tracing/function-graph-tracer: handle ftrace_printk entries\n\nHandle the TRACE_PRINT entries from the function grapg tracer\nand output them as a C comment just below the function that called\nit, as if it was a comment inside this function.\n\nExample with an ftrace_printk inside might_sleep() function:\n\nvoid __might_sleep(char *file, int line)\n{\n\tstatic unsigned long prev_jiffy;\t/* ratelimiting */\n\n\tftrace_printk(\"Hi I\u0027m a comment in might_sleep() :-)\");\n\nA chunk of a resulting trace:\n\n 0)               |        _reiserfs_free_block() {\n 0)               |          reiserfs_read_bitmap_block() {\n 0)               |            __bread() {\n 0)               |              __getblk() {\n 0)               |                __find_get_block() {\n 0)   0.698 us    |                  mark_page_accessed();\n 0)   2.267 us    |                }\n 0)               |                __might_sleep() {\n 0)               |                  /* Hi I\u0027m a comment in might_sleep() :-) */\n 0)   1.321 us    |                }\n 0)   5.872 us    |              }\n 0)   7.313 us    |            }\n 0)   8.718 us    |          }\n\nAnd this patch brings two minor fixes:\n\n- The newline after a switch-out task has disappeared\n- The \"|\" sign just before the cpu number on task-switch has been deleted.\n\n 0)   0.616 us    |                pick_next_task_rt();\n 0)   1.457 us    |                _spin_trylock();\n 0)   0.653 us    |                _spin_unlock();\n 0)   0.728 us    |                _spin_trylock();\n 0)   0.631 us    |                _spin_unlock();\n 0)   0.729 us    |                native_load_sp0();\n 0)   0.593 us    |                native_load_tls();\n ------------------------------------------\n 0)    cat-2834    \u003d\u003e   migrati-3\n ------------------------------------------\n\n 0)               |    finish_task_switch() {\n 0)   0.841 us    |      _spin_unlock_irq();\n 0)   0.616 us    |      post_schedule_rt();\n 0)   3.882 us    |    }\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6b2539302bee8e88c99e3c7d80c16a04dbe5e2ad",
      "tree": "d4ae4b2af29f2e75546d3a496b6f077c5ef01555",
      "parents": [
        "e32d89569128e76bdf84867be0928902ca9f7555"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 09:18:28 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 09:33:01 2008 +0100"
      },
      "message": "tracing: fix typo and missing inline function\n\nImpact: fix build bugs\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "978f3a45d9499c7a447ca7615455cefb63d44165",
      "tree": "13a59046c8fe7ae3a095444515cd50c0a57727b3",
      "parents": [
        "5ef6476190d24419a9a537baa0b5641845136989"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Dec 04 00:26:40 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 09:09:37 2008 +0100"
      },
      "message": "ftrace: use struct pid\n\nImpact: clean up, extend PID filtering to PID namespaces\n\nEric Biederman suggested using the struct pid for filtering on\npids in the kernel. This patch is based off of a demonstration\nof an implementation that Eric sent me in an email.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "804a685162a7080386714166776f57255a75238e",
      "tree": "f7b79000146532c0ad6571440652368e2521119a",
      "parents": [
        "0ef8cde56ab92ab3f65221246dc1622c6b5068b3"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Dec 03 15:36:59 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 09:09:36 2008 +0100"
      },
      "message": "ftrace: trace single pid for function graph tracer\n\nImpact: New feature\n\nThis patch makes the changes to set_ftrace_pid apply to the function\ngraph tracer.\n\n  # echo $$ \u003e /debugfs/tracing/set_ftrace_pid\n  # echo function_graph \u003e /debugfs/tracing/current_tracer\n\nWill cause only the current task to be traced. Note, the trace flags are\nalso inherited by child processes, so the children of the shell\nwill also be traced.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ea4e2bc4d9f7370e57a343ccb5e7c0ad3222ec3c",
      "tree": "64a4a1d9d7d3de0695cb2e8c7161886ab660e311",
      "parents": [
        "b29144c317fb748dae6d72c0f88eda9d43165b8d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Dec 03 15:36:57 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 09:09:34 2008 +0100"
      },
      "message": "ftrace: graph of a single function\n\nThis patch adds the file:\n\n   /debugfs/tracing/set_graph_function\n\nwhich can be used along with the function graph tracer.\n\nWhen this file is empty, the function graph tracer will act as\nusual. When the file has a function in it, the function graph\ntracer will only trace that function.\n\nFor example:\n\n # echo blk_unplug \u003e /debugfs/tracing/set_graph_function\n # cat /debugfs/tracing/trace\n [...]\n ------------------------------------------\n | 2)  make-19003  \u003d\u003e  kjournald-2219\n ------------------------------------------\n\n 2)               |  blk_unplug() {\n 2)               |    dm_unplug_all() {\n 2)               |      dm_get_table() {\n 2)      1.381 us |        _read_lock();\n 2)      0.911 us |        dm_table_get();\n 2)      1. 76 us |        _read_unlock();\n 2) +   12.912 us |      }\n 2)               |      dm_table_unplug_all() {\n 2)               |        blk_unplug() {\n 2)      0.778 us |          generic_unplug_device();\n 2)      2.409 us |        }\n 2)      5.992 us |      }\n 2)      0.813 us |      dm_table_put();\n 2) +   29. 90 us |    }\n 2) +   34.532 us |  }\n\nYou can add up to 32 functions into this file. Currently we limit it\nto 32, but this may change with later improvements.\n\nTo add another function, use the append \u0027\u003e\u003e\u0027:\n\n  # echo sys_read \u003e\u003e /debugfs/tracing/set_graph_function\n  # cat /debugfs/tracing/set_graph_function\n  blk_unplug\n  sys_read\n\nUsing the \u0027\u003e\u0027 will clear out the function and write anew:\n\n  # echo sys_write \u003e /debug/tracing/set_graph_function\n  # cat /debug/tracing/set_graph_function\n  sys_write\n\nNote, if you have function graph running while doing this, the small\ntime between clearing it and updating it will cause the graph to\nrecord all functions. This should not be an issue because after\nit sets the filter, only those functions will be recorded from then on.\nIf you need to only record a particular function then set this\nfile first before starting the function graph tracer. In the future\nthis side effect may be corrected.\n\nThe set_graph_function file is similar to the set_ftrace_filter but\nit does not take wild cards nor does it allow for more than one\nfunction to be set with a single write. There is no technical reason why\nthis is the case, I just do not have the time yet to implement that.\n\nNote, dynamic ftrace must be enabled for this to appear because it\nuses the dynamic ftrace records to match the name to the mcount\ncall sites.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ],
  "next": "e49dc19c6a19ea112fcb94b7c62ec62cdd5c08aa"
}
