)]}'
{
  "log": [
    {
      "commit": "3b6e901f839f42afb40f614418df82c08b01320a",
      "tree": "04056f3347b926e9623c225acd496e39b9d1b85a",
      "parents": [
        "d580ff8699e8811a9af37e9de4dea375401bdeec"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Oct 14 21:10:38 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 18 19:58:56 2010 +0200"
      },
      "message": "jump_label: Use more consistent naming\n\nNow that there\u0027s still only a few users around, rename things to make\nthem more consistent.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c20101014203625.448565169@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8f7b50c514206211cc282a4247f7b12f18dee674",
      "tree": "8d69af92e9ba46f8f775a300ba863040c817e77c",
      "parents": [
        "4c3ef6d79328c0e23ade60cbfc8d496123a6855c"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Fri Sep 17 11:09:13 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Sep 22 16:31:01 2010 -0400"
      },
      "message": "jump label: Tracepoint support for jump labels\n\nMake use of the jump label infrastructure for tracepoints.\n\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nLKML-Reference: \u003ca9ba2056e2c9cf332c3c300b577463ce66ff23a8.1284733808.git.jbaron@redhat.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "38516ab59fbc5b3bb278cf5e1fe2867c70cff32e",
      "tree": "904476d7780a27001281b9cb93c7959128f9a1d7",
      "parents": [
        "53da59aa6dd881fd0bbdd058a8a299d90ce9dd1d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Apr 20 17:04:50 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri May 14 09:50:34 2010 -0400"
      },
      "message": "tracing: Let tracepoints have data passed to tracepoint callbacks\n\nThis patch adds data to be passed to tracepoint callbacks.\n\nThe created functions from DECLARE_TRACE() now need a mandatory data\nparameter. For example:\n\nDECLARE_TRACE(mytracepoint, int value, value)\n\nWill create the register function:\n\nint register_trace_mytracepoint((void(*)(void *data, int value))probe,\n                                void *data);\n\nAs the first argument, all callbacks (probes) must take a (void *data)\nparameter. So a callback for the above tracepoint will look like:\n\nvoid myprobe(void *data, int value)\n{\n}\n\nThe callback may choose to ignore the data parameter.\n\nThis change allows callbacks to register a private data pointer along\nwith the function probe.\n\n\tvoid mycallback(void *data, int value);\n\n\tregister_trace_mytracepoint(mycallback, mydata);\n\nThen the mycallback() will receive the \"mydata\" as the first parameter\nbefore the args.\n\nA more detailed example:\n\n  DECLARE_TRACE(mytracepoint, TP_PROTO(int status), TP_ARGS(status));\n\n  /* In the C file */\n\n  DEFINE_TRACE(mytracepoint, TP_PROTO(int status), TP_ARGS(status));\n\n  [...]\n\n       trace_mytracepoint(status);\n\n  /* In a file registering this tracepoint */\n\n  int my_callback(void *data, int status)\n  {\n\tstruct my_struct my_data \u003d data;\n\t[...]\n  }\n\n  [...]\n\tmy_data \u003d kmalloc(sizeof(*my_data), GFP_KERNEL);\n\tinit_my_data(my_data);\n\tregister_trace_mytracepoint(my_callback, my_data);\n\nThe same callback can also be registered to the same tracepoint as long\nas the data registered is different. Note, the data must also be used\nto unregister the callback:\n\n\tunregister_trace_mytracepoint(my_callback, my_data);\n\nBecause of the data parameter, tracepoints declared this way can not have\nno args. That is:\n\n  DECLARE_TRACE(mytracepoint, TP_PROTO(void), TP_ARGS());\n\nwill cause an error.\n\nIf no arguments are needed, a new macro can be used instead:\n\n  DECLARE_TRACE_NOARGS(mytracepoint);\n\nSince there are no arguments, the proto and args fields are left out.\n\nThis is part of a series to make the tracepoint footprint smaller:\n\n   text\t   data\t    bss\t    dec\t    hex\tfilename\n4913961\t1088356\t 861512\t6863829\t 68bbd5\tvmlinux.orig\n4914025\t1088868\t 861512\t6864405\t 68be15\tvmlinux.class\n4918492\t1084612\t 861512\t6864616\t 68bee8\tvmlinux.tracepoint\n\nAgain, this patch also increases the size of the kernel, but\nlays the ground work for decreasing it.\n\n v5: Fixed net/core/drop_monitor.c to handle these updates.\n\n v4: Moved the DECLARE_TRACE() DECLARE_TRACE_NOARGS out of the\n     #ifdef CONFIG_TRACE_POINTS, since the two are the same in both\n     cases. The __DECLARE_TRACE() is what changes.\n     Thanks to Frederic Weisbecker for pointing this out.\n\n v3: Made all register_* functions require data to be passed and\n     all callbacks to take a void * parameter as its first argument.\n     This makes the calling functions comply with C standards.\n\n     Also added more comments to the modifications of DECLARE_TRACE().\n\n v2: Made the DECLARE_TRACE() have the ability to pass arguments\n     and added a new DECLARE_TRACE_NOARGS() for tracepoints that\n     do not need any arguments.\n\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Neil Horman \u003cnhorman@tuxdriver.com\u003e\nCc: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "fd589a8f0a13f53a2dd580b1fe170633cf6b095f",
      "tree": "942c50188ca58041b0453189e710eafcfebaea57",
      "parents": [
        "4f37940d64a155c025968118849b596f6aaa8128"
      ],
      "author": {
        "name": "Anand Gadiyar",
        "email": "gadiyar@ti.com",
        "time": "Thu Jul 16 17:13:03 2009 +0200"
      },
      "committer": {
        "name": "Jiri Kosina",
        "email": "jkosina@suse.cz",
        "time": "Mon Sep 21 15:14:55 2009 +0200"
      },
      "message": "trivial: fix typo \"to to\" in multiple files\n\nSigned-off-by: Anand Gadiyar \u003cgadiyar@ti.com\u003e\nSigned-off-by: Jiri Kosina \u003cjkosina@suse.cz\u003e\n"
    },
    {
      "commit": "cc3b13c11c567c69a6356be98d0c03ff11541d5c",
      "tree": "7665852e54b8ad951bfdbd898922fa3c54567f43",
      "parents": [
        "cd0980fc8add25e8ab12fcf1051c0f20cbc7c0c0"
      ],
      "author": {
        "name": "Hendrik Brueckner",
        "email": "brueckner@linux.vnet.ibm.com",
        "time": "Tue Aug 25 18:02:37 2009 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Aug 26 21:29:52 2009 +0200"
      },
      "message": "tracing: Don\u0027t trace kernel thread syscalls\n\nKernel threads don\u0027t call syscalls using the sysenter/sysexit\npath. Instead they directly call the sys_* or do_* functions\nthat implement the syscalls inside the kernel.\n\nThe current syscall tracepoints only bind the sysenter/sysexit\npath, then it has no effect to trace the kernel thread calls\nto syscalls in that path.\nSetting the TIF_SYSCALL_TRACEPOINT flag is then useless for these.\n\nActually there is only one case when a kernel thread can reach the\nusual syscall exit tracing path: when we create a kernel thread, the\nchild comes to ret_from_fork and is the fork() return is then traced.\nBut this information alone is useless, then we don\u0027t want to set the\nTIF flags for these threads.\n\nKernel threads have task_struct-\u003emm set to NULL.\n(Thanks to Heiko for that hint ;-)\nThe idea is then to check the mm field in syscall_regfunc() and\nset the flag accordingly.\n\nSigned-off-by: Hendrik Brueckner \u003cbrueckner@linux.vnet.ibm.com\u003e\nCc: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Jiaying Zhang \u003cjiayingz@google.com\u003e\nCc: Martin Bligh \u003cmbligh@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nCc: Hendrik Brueckner \u003cbrueckner@linux.vnet.ibm.com\u003e\nLKML-Reference: \u003c20090825160237.GG4639@cetus.boeblingen.de.ibm.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "97419875865859fd2403e66266c02ce028e2f5ab",
      "tree": "7df6e6df767e9c8ff538a50bcae17638a1c8da99",
      "parents": [
        "3d27d8cb34fc156beb86de2338ca4029873a5cc6"
      ],
      "author": {
        "name": "Josh Stone",
        "email": "jistone@redhat.com",
        "time": "Mon Aug 24 14:43:13 2009 -0700"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Aug 26 00:36:41 2009 +0200"
      },
      "message": "tracing: Move tracepoint callbacks from declaration to definition\n\nIt\u0027s not strictly correct for the tracepoint reg/unreg callbacks to\noccur when a client is hooking up, because the actual tracepoint may not\nbe present yet.  This happens to be fine for syscall, since that\u0027s in\nthe core kernel, but it would cause problems for tracepoints defined in\na module that hasn\u0027t been loaded yet.  It also means the reg/unreg has\nto be EXPORTed for any modules to use the tracepoint (as in SystemTap).\n\nThis patch removes DECLARE_TRACE_WITH_CALLBACK, and instead introduces\nDEFINE_TRACE_FN which stores the callbacks in struct tracepoint.  The\ncallbacks are used now when the active state of the tracepoint changes\nin set_tracepoint \u0026 disable_tracepoint.\n\nThis also introduces TRACE_EVENT_FN, so ftrace events can also provide\nregistration callbacks if needed.\n\nSigned-off-by: Josh Stone \u003cjistone@redhat.com\u003e\nCc: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Jiaying Zhang \u003cjiayingz@google.com\u003e\nCc: Martin Bligh \u003cmbligh@google.com\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nLKML-Reference: \u003c1251150194-1713-4-git-send-email-jistone@redhat.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "3d27d8cb34fc156beb86de2338ca4029873a5cc6",
      "tree": "51be3d9b84fa6a7899b69c499cb7630ebca366b0",
      "parents": [
        "667000011927b4fcc359beac4a2447889db6d349"
      ],
      "author": {
        "name": "Josh Stone",
        "email": "jistone@redhat.com",
        "time": "Mon Aug 24 14:43:12 2009 -0700"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Aug 26 00:24:19 2009 +0200"
      },
      "message": "tracing: Make syscall tracepoints conditional\n\nThe syscall enter/exit tracepoints are only supported on archs that\nHAVE_SYSCALL_TRACEPOINTS, so the declarations should be #ifdef\u0027ed.\nAlso, the definition of syscall_regfunc and syscall_unregfunc should\ndepend on this same config, rather than the ftrace-specific one.\n\nSigned-off-by: Josh Stone \u003cjistone@redhat.com\u003e\nCc: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Jiaying Zhang \u003cjiayingz@google.com\u003e\nCc: Martin Bligh \u003cmbligh@google.com\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nLKML-Reference: \u003c1251150194-1713-3-git-send-email-jistone@redhat.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "667000011927b4fcc359beac4a2447889db6d349",
      "tree": "d21f0bce17e08479885818792529d3cadf7b8003",
      "parents": [
        "d88cb582325830698de5071fa8b8c9e933dbbcad"
      ],
      "author": {
        "name": "Josh Stone",
        "email": "jistone@redhat.com",
        "time": "Mon Aug 24 14:43:11 2009 -0700"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Aug 26 00:17:35 2009 +0200"
      },
      "message": "tracing: Rename FTRACE_SYSCALLS for tracepoints\n\ns/HAVE_FTRACE_SYSCALLS/HAVE_SYSCALL_TRACEPOINTS/g\ns/TIF_SYSCALL_FTRACE/TIF_SYSCALL_TRACEPOINT/g\n\nThe syscall enter/exit tracing is no longer specific to just ftrace, so\nthey now have names that reflect their tie to tracepoints instead.\n\nSigned-off-by: Josh Stone \u003cjistone@redhat.com\u003e\nCc: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Jiaying Zhang \u003cjiayingz@google.com\u003e\nCc: Martin Bligh \u003cmbligh@google.com\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nLKML-Reference: \u003c1251150194-1713-2-git-send-email-jistone@redhat.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "d88cb582325830698de5071fa8b8c9e933dbbcad",
      "tree": "257eea90a88b49720addf7035855eb3dfe0a88e4",
      "parents": [
        "4539f07701b3f743580d19dc5d655fb8d21b0a3c"
      ],
      "author": {
        "name": "Anirban Sinha",
        "email": "ASinha@zeugmasystems.com",
        "time": "Tue Aug 25 07:00:02 2009 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Aug 25 16:15:12 2009 +0200"
      },
      "message": "tracing: Eliminate code duplication in kernel/tracepoint.c\n\nSigned-off-by: Anirban Sinha \u003casinha@zeugmasystems.com\u003e\nReviewed-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: \"Oleg Nesterov\" \u003coleg@tv-sign.ru\u003e\nLKML-Reference: \u003cDDFD17CC94A9BD49A82147DDF7D545C501EA9047@exchange.ZeugmaSystems.local\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "60d970c254b95ec7a0fc4c590b510253987b64a0",
      "tree": "3f99d03bf8af498ef57376f65b7c18b9e18b098a",
      "parents": [
        "19007a67a64f9b3cbbd7024f972654ebf14daade"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Aug 13 23:37:26 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Aug 13 23:38:20 2009 +0200"
      },
      "message": "tracing: Fix syscall tracing on !HAVE_FTRACE_SYSCALLS architectures\n\nThe new syscall_regfunc()/unregfunc() functions rely on\nthe existence of TIF_SYSCALL_FTRACE - but that TIF flag\nis only offered by HAVE_FTRACE_SYSCALLS.\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a871bd33a6c0bc86fb47cd02ea2650dd43d3d95f",
      "tree": "b5720cdb3168ba0894b4bd2c1acc004cb19a692c",
      "parents": [
        "63fbdab3157b72467013fe4dcf88c85e45280ef7"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Mon Aug 10 16:52:31 2009 -0400"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Aug 11 20:35:26 2009 +0200"
      },
      "message": "tracing: Add syscall tracepoints\n\nadd two tracepoints in syscall exit and entry path, conditioned on\nTIF_SYSCALL_FTRACE. Supports the syscall trace event code.\n\nSigned-off-by: Jason Baron \u003cjbaron@redhat.com\u003e\nCc: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Jiaying Zhang \u003cjiayingz@google.com\u003e\nCc: Martin Bligh \u003cmbligh@google.com\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\n"
    },
    {
      "commit": "ec625cb29e66824f7ce41082617aeb93fa4e42e2",
      "tree": "79bf2052899f9f5125b4054103b542a42b9e49bd",
      "parents": [
        "09933a108e6730a464a1ab676c9decc11aee0edc"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 18 19:54:04 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 18 19:55:00 2009 +0100"
      },
      "message": "tracepoints: dont update zero-sized tracepoint sections\n\nZero-sized tracepoint sections can occur if tracing is enabled but\nno tracepoint is defined. Do not emit a warning in that case.\n\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Jaswinder Singh Rajput \u003cjaswinderrajput@gmail.com\u003e\nLKML-Reference: \u003c1237394936.3132.1.camel@localhost.localdomain\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "09933a108e6730a464a1ab676c9decc11aee0edc",
      "tree": "1233d15bd2e1e0e4fbfa4144a878f553a3b04a35",
      "parents": [
        "490362003457f8d387f6f6e73e3a7efbf56c3314"
      ],
      "author": {
        "name": "Jaswinder Singh Rajput",
        "email": "jaswinder@kernel.org",
        "time": "Wed Mar 18 22:18:56 2009 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 18 18:54:39 2009 +0100"
      },
      "message": "tracing: fix oops in tracepoint_update_probe_range()\n\nChange this crash:\n\n BUG: unable to handle kernel NULL pointer dereference at (null)\n IP: [\u003cffffffff8107d4de\u003e] tracepoint_update_probe_range+0x1f/0x9b\n PGD 13d5fb067 PUD 13d688067 PMD 0\n Oops: 0000 [#1] SMP\n\nTo a more debuggable WARN_ONCE().\n\nSigned-off-by: Jaswinder Singh Rajput \u003cjaswinderrajput@gmail.com\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c1237394936.3132.1.camel@localhost.localdomain\u003e\n[ moved the check outside the lock and added a WARN_ON(). ]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "227a837567e339c74d9d4243d03a29bd943a018c",
      "tree": "21fd0955eb46f838c2a8a1a9bc6671270ffdaf3d",
      "parents": [
        "0a7ad64531713e33e39af95bdbfb172f4f328b1e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 09:50:34 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 09:52:03 2008 +0100"
      },
      "message": "markers/tracpoints: fix non-modular build\n\nfix:\n\n kernel/marker.c: In function \u0027marker_module_notify\u0027:\n kernel/marker.c:905: error: \u0027MODULE_STATE_COMING\u0027 undeclared (first use in this function)\n [...]\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "32f85742778dfc2c74975cf0b9f5bdb13470cb32",
      "tree": "bec188e2772c3ebbf70b149d78bd36eb24d927c0",
      "parents": [
        "5f382671def7cb9c0f4b75d586dc5f60dca5e1c3"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Fri Nov 14 17:47:46 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 09:01:35 2008 +0100"
      },
      "message": "tracepoints: use modules notifiers\n\nImpact: cleanup\n\nUse module notifiers for tracepoint updates rather than adding a hook in\nmodule.c.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "de0baf9ad661ac630a45a50ea1717cc4f4b33ace",
      "tree": "71c95e555b053f1e03f0befaa457d312e23dc919",
      "parents": [
        "2504ea5edfebb14133b8571c20785cdc077e07d2"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Fri Nov 14 17:47:42 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 09:01:31 2008 +0100"
      },
      "message": "tracepoints: fix disable\n\nImpact: fix race\n\nSet the probe array pointer to NULL when the tracepoint is disabled.\nThe probe array point not being NULL could generate a race condition\nwhere the reader would dereference a freed pointer.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "127cafbb276266b1b8da967bfe25a062ab1d42ab",
      "tree": "8f7183fa6f9a68b2bd3b3734da3575e4eff46a1d",
      "parents": [
        "19dba33c43a2f0f2aa727ae075ec3b11330775ef"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Tue Oct 28 10:51:53 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 03 10:28:52 2008 +0100"
      },
      "message": "tracepoint: introduce *_noupdate APIs.\n\nImpact: add new tracepoint APIs to allow the batched registration of probes\n\nnew APIs separate tracepoint_probe_register(),\ntracepoint_probe_unregister() into 2 steps. The first step of them\nis just update tracepoint_entry, not connect or disconnect.\n\nthis patch introduces tracepoint_probe_update_all() for update all.\n\nthese APIs are very useful for registering lots of probes\nbut just updating once. Another very important thing is that\n*_noupdate APIs do not require module_mutex.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "19dba33c43a2f0f2aa727ae075ec3b11330775ef",
      "tree": "a1e60ef0e892ad7d87938b1caeeadc605e2d487a",
      "parents": [
        "45beca08dd8b6d6a65c5ffd730af2eac7a2c7a03"
      ],
      "author": {
        "name": "Lai Jiangshan",
        "email": "laijs@cn.fujitsu.com",
        "time": "Tue Oct 28 10:51:49 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 03 10:28:30 2008 +0100"
      },
      "message": "tracepoint: simplification for tracepoints using RCU\n\nImpact: simplify implementation\n\nNow, unused memory is handled by struct tp_probes.\n\nold code use these three field to handle unused memory.\nstruct tracepoint_entry {\n\t...\n\tstruct rcu_head rcu;\n\tvoid *oldptr;\n\tunsigned char rcu_pending:1;\n\t...\n};\n\nin this way, unused memory is handled by struct tracepoint_entry.\nit bring reenter bug(it was fixed) and tracepoint.c is filled\nfull of \".*rcu.*\" code statements. this patch removes all these.\n\nand:\n  rcu_barrier_sched() is removed.\n  Do not need regain tracepoints_mutex after tracepoint_update_probes()\n  several little cleanup.\n\nSigned-off-by: Lai Jiangshan \u003claijs@cn.fujitsu.com\u003e\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f66af459a931f25807e1df7915b2b66bb5978d82",
      "tree": "bb88917429fe1ea4f6d6e088ead040b25d205a86",
      "parents": [
        "5209f08dc8e5f520ca81b87fa9a7142f58a109f4"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 22 19:14:55 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 27 16:45:46 2008 +0100"
      },
      "message": "tracepoint: check if the probe has been registered\n\nImpact: fix kernel crash that can trigger during tracing\n\nIf we try to remove a probe that has not been already registered,\nthe tracepoint_entry_remove_probe() function will dereference a NULL\npointer.\n\nCheck the probe before removing it to avoid crashes.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nAcked-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9a1e9693f534174945154197fec4ec92f168ce21",
      "tree": "d1477dc3492812c2f8a93afe37075857d4b1ce0f",
      "parents": [
        "ca2db6cf30d6a45798b7a760d0c4f7735b16799d"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Tue Sep 30 01:51:12 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:38:23 2008 +0200"
      },
      "message": "tracepoints: fix reentrancy\n\nThe tracepoints had the same problem markers did have wrt reentrancy. Apply a\nsimilar fix using a rcu_barrier after each tracepoint mutex lock.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ca2db6cf30d6a45798b7a760d0c4f7735b16799d",
      "tree": "5c1658ec172fdaa04ee018972eb96f0f2c409676",
      "parents": [
        "d74185ed27651ad8d920b37d7851306ad01f7d6f"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Tue Sep 30 01:49:39 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:38:21 2008 +0200"
      },
      "message": "tracepoints: use rcu sched\n\nMake tracepoints use rcu sched. (cleanup)\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9795302acf2817d0842e56d23df6008e43df0970",
      "tree": "de2219d52413770567e656b8e6e6b4da7fbf6fca",
      "parents": [
        "611b1597680dd4a57896bcca1af0484be463c55e"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Thu Jul 24 16:37:23 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:34:07 2008 +0200"
      },
      "message": "tracepoints: use TABLE_SIZE macro\n\nSteven Rostedt suggested:\n\n| Wouldn\u0027t it look nicer to have: (TRACEPOINT_TABLE_SIZE - 1) ?\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "97e1c18e8d17bd87e1e383b2e9d9fc740332c8e2",
      "tree": "5c6bfce8bacf04c2993a0029788a1370a483afa6",
      "parents": [
        "e7f2f9918c0e97aa98ba147ca387e2c7238f0711"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@polymtl.ca",
        "time": "Fri Jul 18 12:16:16 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:28:28 2008 +0200"
      },
      "message": "tracing: Kernel Tracepoints\n\nImplementation of kernel tracepoints. Inspired from the Linux Kernel\nMarkers. Allows complete typing verification by declaring both tracing\nstatement inline functions and probe registration/unregistration static\ninline functions within the same macro \"DEFINE_TRACE\". No format string\nis required. See the tracepoint Documentation and Samples patches for\nusage examples.\n\nTaken from the documentation patch :\n\n\"A tracepoint placed in code provides a hook to call a function (probe)\nthat you can provide at runtime. A tracepoint can be \"on\" (a probe is\nconnected to it) or \"off\" (no probe is attached). When a tracepoint is\n\"off\" it has no effect, except for adding a tiny time penalty (checking\na condition for a branch) and space penalty (adding a few bytes for the\nfunction call at the end of the instrumented function and adds a data\nstructure in a separate section).  When a tracepoint is \"on\", the\nfunction you provide is called each time the tracepoint is executed, in\nthe execution context of the caller. When the function provided ends its\nexecution, it returns to the caller (continuing from the tracepoint\nsite).\n\nYou can put tracepoints at important locations in the code. They are\nlightweight hooks that can pass an arbitrary number of parameters, which\nprototypes are described in a tracepoint declaration placed in a header\nfile.\"\n\nAddition and removal of tracepoints is synchronized by RCU using the\nscheduler (and preempt_disable) as guarantees to find a quiescent state\n(this is really RCU \"classic\"). The update side uses rcu_barrier_sched()\nwith call_rcu_sched() and the read/execute side uses\n\"preempt_disable()/preempt_enable()\".\n\nWe make sure the previous array containing probes, which has been\nscheduled for deletion by the rcu callback, is indeed freed before we\nproceed to the next update. It therefore limits the rate of modification\nof a single tracepoint to one update per RCU period. The objective here\nis to permit fast batch add/removal of probes on _different_\ntracepoints.\n\nChangelog :\n- Use #name \":\" #proto as string to identify the tracepoint in the\n  tracepoint table. This will make sure not type mismatch happens due to\n  connexion of a probe with the wrong type to a tracepoint declared with\n  the same name in a different header.\n- Add tracepoint_entry_free_old.\n- Change __TO_TRACE to get rid of the \u0027i\u0027 iterator.\n\nMasami Hiramatsu \u003cmhiramat@redhat.com\u003e :\nTested on x86-64.\n\nPerformance impact of a tracepoint : same as markers, except that it\nadds about 70 bytes of instructions in an unlikely branch of each\ninstrumented function (the for loop, the stack setup and the function\ncall). It currently adds a memory read, a test and a conditional branch\nat the instrumentation site (in the hot path). Immediate values will\neventually change this into a load immediate, test and branch, which\nremoves the memory read which will make the i-cache impact smaller\n(changing the memory read for a load immediate removes 3-4 bytes per\nsite on x86_32 (depending on mov prefixes), or 7-8 bytes on x86_64, it\nalso saves the d-cache hit).\n\nAbout the performance impact of tracepoints (which is comparable to\nmarkers), even without immediate values optimizations, tests done by\nHideo Aoki on ia64 show no regression. His test case was using hackbench\non a kernel where scheduler instrumentation (about 5 events in code\nscheduler code) was added.\n\nQuoting Hideo Aoki about Markers :\n\nI evaluated overhead of kernel marker using linux-2.6-sched-fixes git\ntree, which includes several markers for LTTng, using an ia64 server.\n\nWhile the immediate trace mark feature isn\u0027t implemented on ia64, there\nis no major performance regression. So, I think that we don\u0027t have any\nissues to propose merging marker point patches into Linus\u0027s tree from\nthe viewpoint of performance impact.\n\nI prepared two kernels to evaluate. The first one was compiled without\nCONFIG_MARKERS. The second one was enabled CONFIG_MARKERS.\n\nI downloaded the original hackbench from the following URL:\nhttp://devresources.linux-foundation.org/craiger/hackbench/src/hackbench.c\n\nI ran hackbench 5 times in each condition and calculated the average and\ndifference between the kernels.\n\n    The parameter of hackbench: every 50 from 50 to 800\n    The number of CPUs of the server: 2, 4, and 8\n\nBelow is the results. As you can see, major performance regression\nwasn\u0027t found in any case. Even if number of processes increases,\ndifferences between marker-enabled kernel and marker- disabled kernel\ndoesn\u0027t increase. Moreover, if number of CPUs increases, the differences\ndoesn\u0027t increase either.\n\nCuriously, marker-enabled kernel is better than marker-disabled kernel\nin more than half cases, although I guess it comes from the difference\nof memory access pattern.\n\n* 2 CPUs\n\nNumber of | without      | with         | diff     | diff    |\nprocesses | Marker [Sec] | Marker [Sec] |   [Sec]  |   [%]   |\n--------------------------------------------------------------\n       50 |      4.811   |       4.872  |  +0.061  |  +1.27  |\n      100 |      9.854   |      10.309  |  +0.454  |  +4.61  |\n      150 |     15.602   |      15.040  |  -0.562  |  -3.6   |\n      200 |     20.489   |      20.380  |  -0.109  |  -0.53  |\n      250 |     25.798   |      25.652  |  -0.146  |  -0.56  |\n      300 |     31.260   |      30.797  |  -0.463  |  -1.48  |\n      350 |     36.121   |      35.770  |  -0.351  |  -0.97  |\n      400 |     42.288   |      42.102  |  -0.186  |  -0.44  |\n      450 |     47.778   |      47.253  |  -0.526  |  -1.1   |\n      500 |     51.953   |      52.278  |  +0.325  |  +0.63  |\n      550 |     58.401   |      57.700  |  -0.701  |  -1.2   |\n      600 |     63.334   |      63.222  |  -0.112  |  -0.18  |\n      650 |     68.816   |      68.511  |  -0.306  |  -0.44  |\n      700 |     74.667   |      74.088  |  -0.579  |  -0.78  |\n      750 |     78.612   |      79.582  |  +0.970  |  +1.23  |\n      800 |     85.431   |      85.263  |  -0.168  |  -0.2   |\n--------------------------------------------------------------\n\n* 4 CPUs\n\nNumber of | without      | with         | diff     | diff    |\nprocesses | Marker [Sec] | Marker [Sec] |   [Sec]  |   [%]   |\n--------------------------------------------------------------\n       50 |      2.586   |       2.584  |  -0.003  |  -0.1   |\n      100 |      5.254   |       5.283  |  +0.030  |  +0.56  |\n      150 |      8.012   |       8.074  |  +0.061  |  +0.76  |\n      200 |     11.172   |      11.000  |  -0.172  |  -1.54  |\n      250 |     13.917   |      14.036  |  +0.119  |  +0.86  |\n      300 |     16.905   |      16.543  |  -0.362  |  -2.14  |\n      350 |     19.901   |      20.036  |  +0.135  |  +0.68  |\n      400 |     22.908   |      23.094  |  +0.186  |  +0.81  |\n      450 |     26.273   |      26.101  |  -0.172  |  -0.66  |\n      500 |     29.554   |      29.092  |  -0.461  |  -1.56  |\n      550 |     32.377   |      32.274  |  -0.103  |  -0.32  |\n      600 |     35.855   |      35.322  |  -0.533  |  -1.49  |\n      650 |     39.192   |      38.388  |  -0.804  |  -2.05  |\n      700 |     41.744   |      41.719  |  -0.025  |  -0.06  |\n      750 |     45.016   |      44.496  |  -0.520  |  -1.16  |\n      800 |     48.212   |      47.603  |  -0.609  |  -1.26  |\n--------------------------------------------------------------\n\n* 8 CPUs\n\nNumber of | without      | with         | diff     | diff    |\nprocesses | Marker [Sec] | Marker [Sec] |   [Sec]  |   [%]   |\n--------------------------------------------------------------\n       50 |      2.094   |       2.072  |  -0.022  |  -1.07  |\n      100 |      4.162   |       4.273  |  +0.111  |  +2.66  |\n      150 |      6.485   |       6.540  |  +0.055  |  +0.84  |\n      200 |      8.556   |       8.478  |  -0.078  |  -0.91  |\n      250 |     10.458   |      10.258  |  -0.200  |  -1.91  |\n      300 |     12.425   |      12.750  |  +0.325  |  +2.62  |\n      350 |     14.807   |      14.839  |  +0.032  |  +0.22  |\n      400 |     16.801   |      16.959  |  +0.158  |  +0.94  |\n      450 |     19.478   |      19.009  |  -0.470  |  -2.41  |\n      500 |     21.296   |      21.504  |  +0.208  |  +0.98  |\n      550 |     23.842   |      23.979  |  +0.137  |  +0.57  |\n      600 |     26.309   |      26.111  |  -0.198  |  -0.75  |\n      650 |     28.705   |      28.446  |  -0.259  |  -0.9   |\n      700 |     31.233   |      31.394  |  +0.161  |  +0.52  |\n      750 |     34.064   |      33.720  |  -0.344  |  -1.01  |\n      800 |     36.320   |      36.114  |  -0.206  |  -0.57  |\n--------------------------------------------------------------\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nAcked-by: Masami Hiramatsu \u003cmhiramat@redhat.com\u003e\nAcked-by: \u0027Peter Zijlstra\u0027 \u003cpeterz@infradead.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    }
  ]
}
