)]}'
{
  "log": [
    {
      "commit": "ea3a6d6d60b2504c573fe3415f6617e8310c0236",
      "tree": "3c0887bebd1986107d9bf206c252f626dcf32b64",
      "parents": [
        "e05a43b744fb9518cbf8539a7ef33164ac60a70f"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Dec 17 15:05:36 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 18 12:57:09 2008 +0100"
      },
      "message": "ftrace: add not to regex on filtering functions\n\nImpact: enhancement\n\nIngo Molnar has asked about a way to remove items from the filter\nlists. Currently, you can only add or replace items. The way\nitems are added to the list is through opening one of the list\nfiles (set_ftrace_filter or set_ftrace_notrace) via append.\nIf the file is opened for truncate, the list is cleared.\n\n  echo spin_lock \u003e /debug/tracing/set_ftrace_filter\n\nThe above will replace the list with only spin_lock\n\n  echo spin_lock \u003e\u003e /debug/tracing/set_ftrace_filter\n\nThe above will add spin_lock to the list.\n\nNow this patch adds:\n\n  echo \u0027!spin_lock\u0027 \u003e\u003e /debug/tracing/set_ftrace_filter\n\nThis will remove spin_lock from the list.\n\nThe limited glob features of these lists also can be notted.\n\n  echo \u0027!spin_*\u0027 \u003e\u003e /debug/tracing/set_ftrace_filter\n\nThis will remove all functions that start with \u0027spin_\u0027\n\nNote:\n\n  echo \u0027!spin_*\u0027 \u003e /debug/tracing/set_ftrace_filter\n\nwill simply clear out the list (notice the \u0027\u003e\u0027 instead of \u0027\u003e\u003e\u0027)\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "380c4b1411ccd6885f92b2c8ceb08433a720f44e",
      "tree": "f3b571e1caff2de3e6b4cace87c2b1ec332667d7",
      "parents": [
        "8e1b82e0866befaa0b2920be296c6e4c3fc7f422"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sat Dec 06 03:43:41 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Dec 08 15:11:45 2008 +0100"
      },
      "message": "tracing/function-graph-tracer: append the tracing_graph_flag\n\nImpact: Provide a way to pause the function graph tracer\n\nAs suggested by Steven Rostedt, the previous patch that prevented from\nspinlock function tracing shouldn\u0027t use the raw_spinlock to fix it.\nIt\u0027s much better to follow lockdep with normal spinlock, so this patch\nadds a new flag for each task to make the function graph tracer able\nto be paused. We also can send an ftrace_printk whithout worrying of\nthe irrelevant traced spinlock during insertion.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "21bbecdaaef3a6acc19905ab88c0587817318870",
      "tree": "d6fd3e222509eb470786ae9c0b1cd9af09f09714",
      "parents": [
        "21a8c466f99063eeb8567318b4e305eda9015408"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Dec 04 23:30:56 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Dec 05 14:51:29 2008 +0100"
      },
      "message": "ftrace: use init_struct_pid as swapper pid\n\nImpact: clean up\n\nUsing (struct pid *)-1 as the pointer for ftrace_swapper_pid is\na little confusing for others. This patch uses the address of the\nactual init pid structure instead. This change is only for\nclarity. It does not affect the code itself. Hopefully soon the\nswapper tasks will all have their own pid structure and then\nwe can clean up the code a bit more.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "faec2ec505d397e9426754722b6e80d519c4938f",
      "tree": "574d290807a5bdf1bb41325ce6855aecf872e1b5",
      "parents": [
        "6b2539302bee8e88c99e3c7d80c16a04dbe5e2ad"
      ],
      "author": {
        "name": "Liming Wang",
        "email": "liming.wang@windriver.com",
        "time": "Thu Dec 04 14:24:49 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 09:42:35 2008 +0100"
      },
      "message": "ftrace: avoid duplicated function when writing set_graph_function\n\nImpact: fix a bug in function filter setting\n\nwhen writing function to set_graph_function, we should check whether it\nhas existed in set_graph_function to avoid duplicating.\n\nSigned-off-by: Liming Wang \u003climing.wang@windriver.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e32d89569128e76bdf84867be0928902ca9f7555",
      "tree": "f82014ad89c0cf6f392778d9abb6060a04d458e6",
      "parents": [
        "978f3a45d9499c7a447ca7615455cefb63d44165"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Thu Dec 04 00:26:41 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 09:09:38 2008 +0100"
      },
      "message": "ftrace: add ability to only trace swapper tasks\n\nImpact: new feature\n\nThis patch lets the swapper tasks of all CPUS be filtered by the\nset_ftrace_pid file.\n\nIf \u00270\u0027 is echoed into this file, then all the idle tasks (aka swapper)\nis flagged to be traced.  This affects all CPU idle tasks.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\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": "0ef8cde56ab92ab3f65221246dc1622c6b5068b3",
      "tree": "47bbb117a76146a5f5b949f00cf743dd3b31f873",
      "parents": [
        "ea4e2bc4d9f7370e57a343ccb5e7c0ad3222ec3c"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Dec 03 15:36:58 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 09:09:35 2008 +0100"
      },
      "message": "ftrace: use task struct trace flag to filter on pid\n\nImpact: clean up\n\nUse the new task struct trace flags to determine if a process should be\ntraced or not.\n\nNote: this moves the searching of the pid to the slow path of setting\nthe pid field. This needs to be converted to the pid name space.\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"
    },
    {
      "commit": "e49dc19c6a19ea112fcb94b7c62ec62cdd5c08aa",
      "tree": "851dcdfe321e16a327d656ecd7040ef6e8590bec",
      "parents": [
        "7ee991fbc6f947e9b04f29c9c6c1d057d0671a16"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Dec 02 23:50:05 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 03 08:56:26 2008 +0100"
      },
      "message": "ftrace: function graph return for function entry\n\nImpact: feature, let entry function decide to trace or not\n\nThis patch lets the graph tracer entry function decide if the tracing\nshould be done at the end as well. This requires all function graph\nentry functions return 1 if it should trace, or 0 if the return should\nnot be traced.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "14a866c567e040ccf6240d68b083dd1dbbde63e6",
      "tree": "4e8d62ecc345d44e7cd45f973ffb931070637532",
      "parents": [
        "bb4304c71c97bf727ec43cd2f195c2c237c27fd3"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Dec 02 23:50:02 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 03 08:56:23 2008 +0100"
      },
      "message": "ftrace: add ftrace_graph_stop()\n\nImpact: new ftrace_graph_stop function\n\nWhile developing more features of function graph, I hit a bug that\ncaused the WARN_ON to trigger in the prepare_ftrace_return function.\nWell, it was hard for me to find out that was happening because the\nbug would not print, it would just cause a hard lockup or reboot.\nThe reason is that it is not safe to call printk from this function.\n\nLooking further, I also found that it calls unregister_ftrace_graph,\nwhich grabs a mutex and calls kstop machine. This would definitely\nlock the box up if it were to trigger.\n\nThis patch adds a fast and safe ftrace_graph_stop() which will\nstop the function tracer. Then it is safe to call the WARN ON.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f0461d0146ee30927bc7efa2ae24ea8c6693b725",
      "tree": "6a6b416c76c0e1a569af5531454fb45fe06e07ba",
      "parents": [
        "66eafebc1086014709dc38f52ddcb3d67d9b346c",
        "48d68b20d00865035b8b65e69af343d0f53fac9d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 03 08:49:21 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 03 08:49:21 2008 +0100"
      },
      "message": "Merge branches \u0027tracing/ftrace\u0027 and \u0027tracing/function-graph-tracer\u0027 into tracing/core\n"
    },
    {
      "commit": "48d68b20d00865035b8b65e69af343d0f53fac9d",
      "tree": "eca27c0cf9486ae83c7e3193709abae099d1f019",
      "parents": [
        "222658e08f72cd539d01f3aabdc258c596f487e2"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Dec 02 00:20:39 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 02 09:47:48 2008 +0100"
      },
      "message": "tracing/function-graph-tracer: support for x86-64\n\nImpact: extend and enable the function graph tracer to 64-bit x86\n\nThis patch implements the support for function graph tracer under x86-64.\nBoth static and dynamic tracing are supported.\n\nThis causes some small CPP conditional asm on arch/x86/kernel/ftrace.c I\nwanted to use probe_kernel_read/write to make the return address\nsaving/patching code more generic but it causes tracing recursion.\n\nThat would be perhaps useful to implement a notrace version of these\nfunction for other archs ports.\n\nNote that arch/x86/process_64.c is not traced, as in X86-32. I first\nthought __switch_to() was responsible of crashes during tracing because I\nbelieved current task were changed inside but that\u0027s actually not the\ncase (actually yes, but not the \"current\" pointer).\n\nSo I will have to investigate to find the functions that harm here, to\nenable tracing of the other functions inside (but there is no issue at\nthis time, while process_64.c stays out of -pg flags).\n\nA little possible race condition is fixed inside this patch too. When the\ntracer allocate a return stack dynamically, the current depth is not\ninitialized before but after. An interrupt could occur at this time and,\nafter seeing that the return stack is allocated, the tracer could try to\ntrace it with a random uninitialized depth. It\u0027s a prevention, even if I\nhadn\u0027t problems with it.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Tim Bird \u003ctim.bird@am.sony.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "66eafebc1086014709dc38f52ddcb3d67d9b346c",
      "tree": "10147e635d8d4d15d73cb23baa32a2357570eab0",
      "parents": [
        "222658e08f72cd539d01f3aabdc258c596f487e2"
      ],
      "author": {
        "name": "Liming Wang",
        "email": "liming.wang@windriver.com",
        "time": "Tue Dec 02 10:33:08 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 02 09:23:24 2008 +0100"
      },
      "message": "function trace: fix a bug of single thread function trace\n\nImpact: fix \"no output from tracer\" bug caused by ftrace_update_pid_func()\n\nWhen disabling single thread function trace using\n\"echo -1 \u003e set_ftrace_pid\", the normal function trace\nhas to restore to original function, otherwise the normal\nfunction trace will not work well.\n\nWithout this commit, something like below:\n\n\t$ ps |grep 850\n\t  850 root      2556 S    -/bin/sh\n\t$ echo 850 \u003e /debug/tracing/set_ftrace_pid\n\t$ echo function \u003e /debug/tracing/current_tracer\n\t$ echo 1 \u003e /debug/tracing/tracing_enabled\n\t$ sleep 1\n\t$ echo 0 \u003e /debug/tracing/tracing_enabled\n\t$ cat /debug/tracing/trace_pipe |wc -l\n\t59704\n\t$ echo -1 \u003e /debug/tracing/set_ftrace_pid\n\t$ echo 1 \u003e /debug/tracing/tracing_enabled\n\t$ sleep 1\n\t$ echo 0 \u003e /debug/tracing/tracing_enabled\n\t$ more /debug/tracing/trace_pipe\n\t\t\u003c\u003d\u003d\u003d\u003d\u003d\u003d nothing output now!\n\t\t\tit should output trace record.\n\nSigned-off-by: Liming Wang \u003climing.wang@windriver.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "50cdaf08a8ec1d7f43987705da7aff7cf949708f",
      "tree": "b8c1b6072d907a196df4ef556cf6c0070b289b38",
      "parents": [
        "c7cc77307669336a08928ab8668bdb3f3bcc021b"
      ],
      "author": {
        "name": "Liming Wang",
        "email": "liming.wang@windriver.com",
        "time": "Fri Nov 28 12:13:21 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 28 12:30:40 2008 +0100"
      },
      "message": "ftrace: improve seq_operation of ftrace\n\nImpact: make ftrace position computing more sane\n\nFirst remove useless -\u003epos field. Then we needn\u0027t check seq_printf\nin .show like other place.\n\nSigned-off-by: Liming Wang \u003climing.wang@windriver.com\u003e\nReviewed-by: Bruce Ashfield \u003cbruce.ashfield@windriver.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e53a6319cca69111c1643dc9f18f4465d7f1cbf0",
      "tree": "867bd86a05aa590516aaa60221f297017cd31781",
      "parents": [
        "5a45cfe1c64862e8cd3b0d79d7c4ba71c3118915"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 26 00:16:25 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 06:52:55 2008 +0100"
      },
      "message": "ftrace: let function tracing and function return run together\n\nImpact: feature\n\nThis patch enables function tracing and function return to run together.\nI\u0027ve tested this by enabling the stack tracer and return tracer, where\nboth the function entry and function return are used together with\ndynamic ftrace.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5a45cfe1c64862e8cd3b0d79d7c4ba71c3118915",
      "tree": "0a7edf3a9dc88d74b7c7053445ac8aff033a75fa",
      "parents": [
        "df4fc31558dd2a3a30292ddb3a64c2a5befcec73"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Nov 26 00:16:24 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 06:52:54 2008 +0100"
      },
      "message": "ftrace: use code patching for ftrace graph tracer\n\nImpact: more efficient code for ftrace graph tracer\n\nThis patch uses the dynamic patching, when available, to patch\nthe function graph code into the kernel.\n\nThis patch will ease the way for letting both function tracing\nand function graph tracing run together.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "df4fc31558dd2a3a30292ddb3a64c2a5befcec73",
      "tree": "e7e57093541568a039175aa846fe135f6ba575e2",
      "parents": [
        "c2324b694fa8ffee382a124198c68754088e483c"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Nov 26 00:16:23 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 06:52:52 2008 +0100"
      },
      "message": "ftrace: add function tracing to single thread\n\nImpact: feature to function trace a single thread\n\nThis patch adds the ability to function trace a single thread.\nThe file:\n\n  /debugfs/tracing/set_ftrace_pid\n\ncontains the pid to trace. Valid pids are any positive integer.\nWriting any negative number to this file will disable the pid\ntracing and the function tracer will go back to tracing all of\nthreads.\n\nThis feature works with both static and dynamic function tracing.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "287b6e68ca7209caec40b2f44f837c580a413bae",
      "tree": "b0867d75868f6049dc5747bd39fdae2d477dde66",
      "parents": [
        "fb52607afcd0629776f1dc9e657647ceae81dd50"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Nov 26 00:57:25 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 01:59:45 2008 +0100"
      },
      "message": "tracing/function-return-tracer: set a more human readable output\n\nImpact: feature\n\nThis patch sets a C-like output for the function graph tracing.\nFor this aim, we now call two handler for each function: one on the entry\nand one other on return. This way we can draw a well-ordered call stack.\n\nThe pid of the previous trace is loosely stored to be compared against\nthe one of the current trace to see if there were a context switch.\n\nWithout this little feature, the call tree would seem broken at\nsome locations.\nWe could use the sched_tracer to capture these sched_events but this\nway of processing is much more simpler.\n\n2 spaces have been chosen for indentation to fit the screen while deep\ncalls. The time of execution in nanosecs is printed just after closed\nbraces, it seems more easy this way to find the corresponding function.\nIf the time was printed as a first column, it would be not so easy to\nfind the corresponding function if it is called on a deep depth.\n\nI plan to output the return value but on 32 bits CPU, the return value\ncan be 32 or 64, and its difficult to guess on which case we are.\nI don\u0027t know what would be the better solution on X86-32: only print\neax (low-part) or even edx (high-part).\n\nActually it\u0027s thee same problem when a function return a 8 bits value, the\nhigh part of eax could contain junk values...\n\nHere is an example of trace:\n\nsys_read() {\n  fget_light() {\n  } 526\n  vfs_read() {\n    rw_verify_area() {\n      security_file_permission() {\n        cap_file_permission() {\n        } 519\n      } 1564\n    } 2640\n    do_sync_read() {\n      pipe_read() {\n        __might_sleep() {\n        } 511\n        pipe_wait() {\n          prepare_to_wait() {\n          } 760\n          deactivate_task() {\n            dequeue_task() {\n              dequeue_task_fair() {\n                dequeue_entity() {\n                  update_curr() {\n                    update_min_vruntime() {\n                    } 504\n                  } 1587\n                  clear_buddies() {\n                  } 512\n                  add_cfs_task_weight() {\n                  } 519\n                  update_min_vruntime() {\n                  } 511\n                } 5602\n                dequeue_entity() {\n                  update_curr() {\n                    update_min_vruntime() {\n                    } 496\n                  } 1631\n                  clear_buddies() {\n                  } 496\n                  update_min_vruntime() {\n                  } 527\n                } 4580\n                hrtick_update() {\n                  hrtick_start_fair() {\n                  } 488\n                } 1489\n              } 13700\n            } 14949\n          } 16016\n          msecs_to_jiffies() {\n          } 496\n          put_prev_task_fair() {\n          } 504\n          pick_next_task_fair() {\n          } 489\n          pick_next_task_rt() {\n          } 496\n          pick_next_task_fair() {\n          } 489\n          pick_next_task_idle() {\n          } 489\n\n------------8\u003c---------- thread 4 ------------8\u003c----------\n\nfinish_task_switch() {\n} 1203\ndo_softirq() {\n  __do_softirq() {\n    __local_bh_disable() {\n    } 669\n    rcu_process_callbacks() {\n      __rcu_process_callbacks() {\n        cpu_quiet() {\n          rcu_start_batch() {\n          } 503\n        } 1647\n      } 3128\n      __rcu_process_callbacks() {\n      } 542\n    } 5362\n    _local_bh_enable() {\n    } 587\n  } 8880\n} 9986\nkthread_should_stop() {\n} 669\ndeactivate_task() {\n  dequeue_task() {\n    dequeue_task_fair() {\n      dequeue_entity() {\n        update_curr() {\n          calc_delta_mine() {\n          } 511\n          update_min_vruntime() {\n          } 511\n        } 2813\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": "fb52607afcd0629776f1dc9e657647ceae81dd50",
      "tree": "7bf43b41ff8510d3098c089913cce56a9049f0fd",
      "parents": [
        "509dceef6470442d8c7b8a43ec34125205840b3c"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Nov 25 21:07:04 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 01:59:45 2008 +0100"
      },
      "message": "tracing/function-return-tracer: change the name into function-graph-tracer\n\nImpact: cleanup\n\nThis patch changes the name of the \"return function tracer\" into\nfunction-graph-tracer which is a more suitable name for a tracing\nwhich makes one able to retrieve the ordered call stack during\nthe code flow.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "eae849ca034c7f1015f0a6f17421ebc737f0a069",
      "tree": "f247bac71fd0fe4fa80bde31ccf3dcca2bda74d1",
      "parents": [
        "82f60f0bc854aada696f27d863c03bef91f1509d"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Nov 23 17:33:12 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 23 17:39:03 2008 +0100"
      },
      "message": "tracing/function-return-tracer: don\u0027t trace kfree while it frees the return stack\n\nImpact: fix a crash\n\nWhile I killed the cat process, I got sometimes the following (but rare)\ncrash:\n\n[   65.689027] Pid: 2969, comm: cat Not tainted (2.6.28-rc6-tip #83) AMILO Li 2727\n[   65.689027] EIP: 0060:[\u003c00000000\u003e] EFLAGS: 00010082 CPU: 1\n[   65.689027] EIP is at 0x0\n[   65.689027] EAX: 00000000 EBX: f66cd780 ECX: c019a64a EDX: f66cd780\n[   65.689027] ESI: 00000286 EDI: f66cd780 EBP: f630be2c ESP: f630be24\n[   65.689027]  DS: 007b ES: 007b FS: 00d8 GS: 0000 SS: 0068\n[   65.689027] Process cat (pid: 2969, ti\u003df630a000 task\u003df66cd780 task.ti\u003df630a000)\n[   65.689027] Stack:\n[   65.689027]  00000012 f630bd54 f630be7c c012c853 00000000 c0133cc9 f66cda54 f630be5c\n[   65.689027]  f630be68 f66cda54 f66cd88c f66cd878 f7070000 00000001 f630be90 c0135dbc\n[   65.689027]  f614a614 f630be68 f630be68 f65ba200 00000002 f630bf10 f630be90 c012cad6\n[   65.689027] Call Trace:\n[   65.689027]  [\u003cc012c853\u003e] ? do_exit+0x603/0x850\n[   65.689027]  [\u003cc0133cc9\u003e] ? next_signal+0x9/0x40\n[   65.689027]  [\u003cc0135dbc\u003e] ? dequeue_signal+0x8c/0x180\n[   65.689027]  [\u003cc012cad6\u003e] ? do_group_exit+0x36/0x90\n[   65.689027]  [\u003cc013709c\u003e] ? get_signal_to_deliver+0x20c/0x390\n[   65.689027]  [\u003cc0102b69\u003e] ? do_notify_resume+0x99/0x8b0\n[   65.689027]  [\u003cc02e6d1a\u003e] ? tty_ldisc_deref+0x5a/0x80\n[   65.689027]  [\u003cc014db9b\u003e] ? trace_hardirqs_on+0xb/0x10\n[   65.689027]  [\u003cc02e6d1a\u003e] ? tty_ldisc_deref+0x5a/0x80\n[   65.689027]  [\u003cc02e39b0\u003e] ? n_tty_write+0x0/0x340\n[   65.689027]  [\u003cc02e1812\u003e] ? redirected_tty_write+0x82/0x90\n[   65.689027]  [\u003cc019ee99\u003e] ? vfs_write+0x99/0xd0\n[   65.689027]  [\u003cc02e1790\u003e] ? redirected_tty_write+0x0/0x90\n[   65.689027]  [\u003cc019f342\u003e] ? sys_write+0x42/0x70\n[   65.689027]  [\u003cc01035ca\u003e] ? work_notifysig+0x13/0x19\n[   65.689027] Code:  Bad EIP value.\n[   65.689027] EIP: [\u003c00000000\u003e] 0x0 SS:ESP 0068:f630be24\n\nThis is because on do_exit(), kfree is called to free the return addresses stack\nbut kfree is traced and stored its return address in this stack.\nThis patch fixes it.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f201ae2356c74bcae130b2177b3dca903ea98071",
      "tree": "c4b1b43fbe0a4594cb86749b2e7098fe15eb86ba",
      "parents": [
        "a0a70c735ef714fe1b6777b571630c3d50c7b008"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Nov 23 06:22:56 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 23 09:17:26 2008 +0100"
      },
      "message": "tracing/function-return-tracer: store return stack into task_struct and allocate it dynamically\n\nImpact: use deeper function tracing depth safely\n\nSome tests showed that function return tracing needed a more deeper depth\nof function calls. But it could be unsafe to store these return addresses\nto the stack.\n\nSo these arrays will now be allocated dynamically into task_struct of current\nonly when the tracer is activated.\n\nTypical scheme when tracer is activated:\n- allocate a return stack for each task in global list.\n- fork: allocate the return stack for the newly created task\n- exit: free return stack of current\n- idle init: same as fork\n\nI chose a default depth of 50. I don\u0027t have overruns anymore.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3f8e402f34ecc7d1d00b54703d3baa401b8bdd78",
      "tree": "b1f515a1c5426809c076dd854f9385efb750683b",
      "parents": [
        "072b40a15616fe6bea68466e6bffcfcbf5c8f26f",
        "e7d3737ea1b102030f44e96c97754101e41515f0",
        "227a837567e339c74d9d4243d03a29bd943a018c",
        "5821e1b74f0d08952cb5da4bfd2d9a388d8df58e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 17 09:36:22 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 17 09:36:22 2008 +0100"
      },
      "message": "Merge branches \u0027tracing/branch-tracer\u0027, \u0027tracing/ftrace\u0027, \u0027tracing/function-return-tracer\u0027, \u0027tracing/tracepoints\u0027 and \u0027tracing/urgent\u0027 into tracing/core\n"
    },
    {
      "commit": "5821e1b74f0d08952cb5da4bfd2d9a388d8df58e",
      "tree": "e7bade7c500b2d4cd4d8c811a26c844c6f529366",
      "parents": [
        "ee51a1de7e3837577412be269e0100038068e691"
      ],
      "author": {
        "name": "walimis",
        "email": "walimisdev@gmail.com",
        "time": "Sat Nov 15 15:19:06 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 08:32:05 2008 +0100"
      },
      "message": "function tracing: fix wrong pos computing when read buffer has been fulfilled\n\nImpact: make output of available_filter_functions complete\n\nphenomenon:\n\nThe first value of dyn_ftrace_total_info is not equal with\n`cat available_filter_functions | wc -l`, but they should be equal.\n\nroot cause:\n\nWhen printing functions with seq_printf in t_show, if the read buffer\nis just overflowed by current function record, then this function\nwon\u0027t be printed to user space through read buffer, it will\njust be dropped. So we can\u0027t see this function printing.\n\nSo, every time the last function to fill the read buffer, if overflowed,\nwill be dropped.\n\nThis also applies to set_ftrace_filter if set_ftrace_filter has\nmore bytes than read buffer.\n\nfix:\n\nThrough checking return value of seq_printf, if less than 0, we know\nthis function doesn\u0027t be printed. Then we decrease position to force\nthis function to be printed next time, in next read buffer.\n\nAnother little fix is to show correct allocating pages count.\n\nSigned-off-by: walimis \u003cwalimisdev@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e7d3737ea1b102030f44e96c97754101e41515f0",
      "tree": "44fdc3dea100d1fa639e6ba3cb1bfca2ab40e70b",
      "parents": [
        "b01c746617da5e260803eb10ed64ca043e9a1241"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Nov 16 06:02:06 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 07:57:38 2008 +0100"
      },
      "message": "tracing/function-return-tracer: support for dynamic ftrace on function return tracer\n\nThis patch adds the support for dynamic tracing on the function return tracer.\nThe whole difference with normal dynamic function tracing is that we don\u0027t need\nto hook on a particular callback. The only pro that we want is to nop or set\ndynamically the calls to ftrace_caller (which is ftrace_return_caller here).\n\nSome security checks ensure that we are not trying to launch dynamic tracing for\nreturn tracing while normal function tracing is already running.\n\nAn example of trace with getnstimeofday set as a filter:\n\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (2283 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1396 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1382 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1825 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1426 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1464 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1524 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1382 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1382 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1434 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1464 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1502 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1404 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1397 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1051 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1314 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1344 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1163 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1390 ns)\nktime_get_ts+0x22/0x50 -\u003e getnstimeofday (1374 ns)\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ee02a2e5c88ca2e4d6921f08d037b46d5bf82641",
      "tree": "5ad2064cfb6de999b07a937c19438f3c6f888229",
      "parents": [
        "982c350b9ec4b3564d67f3627a274ae61bbc7e95"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Nov 15 16:31:41 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 07:37:46 2008 +0100"
      },
      "message": "ftrace: make filtered functions effective on setting\n\nImpact: set filtered functions at time the filter is set\n\nIt can be confusing when the set_filter_functions is set (or cleared)\nand the functions being recorded by the dynamic tracer does not\nmatch.\n\nThis patch causes the code to be updated if the function tracer is\nenabled and the filter is changed.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "982c350b9ec4b3564d67f3627a274ae61bbc7e95",
      "tree": "c7ccd83698552997bcfe58ab7f61b8761d37957e",
      "parents": [
        "20e5227e9f55ae1969934821ccbf581563785bbe"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Sat Nov 15 16:31:41 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 07:37:17 2008 +0100"
      },
      "message": "ftrace: fix dyn ftrace filter\n\nImpact: correct implementation of dyn ftrace filter\n\nThe old decisions made by the filter algorithm was complex and incorrect.\nThis lead to inconsistent enabling or disabling of functions when\nthe filter was used.\n\nThis patch simplifies that code and in doing so, corrects the usage\nof the filters.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "20e5227e9f55ae1969934821ccbf581563785bbe",
      "tree": "cac23dc66e00c7667f5c0e7adc72a76bd1041816",
      "parents": [
        "31e889098a80ceb3e9e3c555d522b2686a6663c6"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Nov 14 16:21:19 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 07:36:42 2008 +0100"
      },
      "message": "ftrace: allow NULL pointers in mcount_loc\n\nImpact: make ftrace_convert_nops() more permissive\n\nDue to the way different architecture linkers combine the data sections\nof the mcount_loc (the section that lists all the locations that\ncall mcount), there may be zeros added in that section. This is usually\ndue to strange alignments that the linker performs, that pads in zeros.\n\nThis patch makes the conversion code to nops skip any pointer in\nthe mcount_loc section that is NULL.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "31e889098a80ceb3e9e3c555d522b2686a6663c6",
      "tree": "2acb73507de4191d4a9aa5ccf08fa24e7044c89e",
      "parents": [
        "d51ad7ac48f991c4a8834485727efa99a691cb87"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Nov 14 16:21:19 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 07:36:02 2008 +0100"
      },
      "message": "ftrace: pass module struct to arch dynamic ftrace functions\n\nImpact: allow archs more flexibility on dynamic ftrace implementations\n\nDynamic ftrace has largly been developed on x86. Since x86 does not\nhave the same limitations as other architectures, the ftrace interaction\nbetween the generic code and the architecture specific code was not\nflexible enough to handle some of the issues that other architectures\nhave.\n\nMost notably, module trampolines. Due to the limited branch distance\nthat archs make in calling kernel core code from modules, the module\nload code must create a trampoline to jump to what will make the\nlarger jump into core kernel code.\n\nThe problem arises when this happens to a call to mcount. Ftrace checks\nall code before modifying it and makes sure the current code is what\nit expects. Right now, there is not enough information to handle modifying\nmodule trampolines.\n\nThis patch changes the API between generic dynamic ftrace code and\nthe arch dependent code. There is now two functions for modifying code:\n\n  ftrace_make_nop(mod, rec, addr) - convert the code at rec-\u003eip into\n       a nop, where the original text is calling addr. (mod is the\n       module struct if called by module init)\n\n  ftrace_make_caller(rec, addr) - convert the code rec-\u003eip that should\n       be a nop into a caller to addr.\n\nThe record \"rec\" now has a new field called \"arch\" where the architecture\ncan add any special attributes to each call site record.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "918c115410c6cc57033835b6a401e57697f9ea4f",
      "tree": "62d4f9d5c76f022f59cdb2a58e95d55c9c233799",
      "parents": [
        "b17e8a37a13d0e87165054714434534bb7e69f2d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Nov 14 16:21:19 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 07:30:17 2008 +0100"
      },
      "message": "ftrace: do not process freed records\n\nImpact: keep from converting freed records\n\nWhen the tracer is started or stopped, it converts all code pointed\nto by the saved records into callers to ftrace or nops. When modules\nare unloaded, their records are freed, but they still exist within\nthe record pages.\n\nThis patch changes the code to skip over freed records.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b17e8a37a13d0e87165054714434534bb7e69f2d",
      "tree": "0acfd6ec460bfab35807eb6be058d946c380353e",
      "parents": [
        "f3c7ac40a99f4044b843e6e2c4f46ab2d354c563"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Nov 14 16:21:19 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 07:30:07 2008 +0100"
      },
      "message": "ftrace: disable ftrace on anomalies in trace start and stop\n\nImpact: robust feature to disable ftrace on start or stop tracing on error\n\nCurrently only the initial conversion to nops will disable ftrace\non an anomaly. But if an anomaly happens on start or stopping of the\ntracer, it will silently fail.\n\nThis patch adds a check there too, to disable ftrace and warn if the\nconversion fails.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f3c7ac40a99f4044b843e6e2c4f46ab2d354c563",
      "tree": "e4299e4cd9695adb6128eb3968d81a46f325b5c0",
      "parents": [
        "c91add5fa68ea9b1f2923b3788c5dae0e60e1f6b"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Nov 14 16:21:19 2008 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Nov 16 07:29:53 2008 +0100"
      },
      "message": "ftrace: remove condition from ftrace_record_ip\n\nImpact: let module functions be recorded when dyn ftrace not enabled\n\nWhen dynamic ftrace had a daemon and a hash to record the locations\nof mcount callers at run time, the recording needed to stop when\nftrace was disabled. But now that the recording is done at compile time\nand the ftrace_record_ip is only called at boot up and when a module\nis loaded, we no longer need to check if ftrace_enabled is set.\nIn fact, this breaks module load if it is not set because we skip\nover module functions.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b3535c6390f27d04273e4eee0bc687f171fbf5f4",
      "tree": "a0160e2b70acc1743d6d3c68d149df9673d78fde",
      "parents": [
        "12ef7d448613ead2babd41c3ebfa1fe03c20edef"
      ],
      "author": {
        "name": "walimis",
        "email": "walimisdev@gmail.com",
        "time": "Fri Nov 14 00:21:02 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 13 19:36:30 2008 +0100"
      },
      "message": "ftrace: remove unnecessary if condition of __unregister_ftrace_function\n\nBecause it has goto out before ftrace_list \u003d\u003d \u0026ftrace_list_end,\nthat\u0027s to say, we never meet this condition.\n\nSigned-off-by: walimis \u003cwalimisdev@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "60a011c736e7dd09a0b01ca6a051a416f3f52ffb",
      "tree": "20e91db58c3bbfa622d3ed8ec747e4974a807284",
      "parents": [
        "d06bbd669539215405874d8fe32ab65105e6c4bb",
        "19b3e9671c5a219b8c34da2cc66e0ce7c3a501ae"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 10:17:09 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 10:17:09 2008 +0100"
      },
      "message": "Merge branch \u0027tracing/function-return-tracer\u0027 into tracing/fastboot\n"
    },
    {
      "commit": "d06bbd669539215405874d8fe32ab65105e6c4bb",
      "tree": "2567b00257b633fa13220fa515d4bad9749405db",
      "parents": [
        "d844222a54c33a960755b44b934cd1b01b05dceb",
        "3e89c7bb92fc92bb964734341487798c8d497bae",
        "c1e7abbc7afc97367cd77c8f2895c2169a8f9c87"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 10:11:37 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 10:11:37 2008 +0100"
      },
      "message": "Merge branches \u0027tracing/ftrace\u0027 and \u0027tracing/urgent\u0027 into tracing/core\n\nConflicts:\n\tkernel/trace/ring_buffer.c\n"
    },
    {
      "commit": "a358324466b171e145df20bdb74fe81759906de6",
      "tree": "50b2b0b72ff40da6be232eb85d33a203612f3164",
      "parents": [
        "4143c5cb36331155a1823af8b3a8c761a59fed71"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Nov 11 15:01:42 2008 -0500"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Tue Nov 11 15:02:04 2008 -0500"
      },
      "message": "ring-buffer: buffer record on/off switch\n\nImpact: enable/disable ring buffer recording API added\n\nSeveral kernel developers have requested that there be a way to stop\nrecording into the ring buffers with a simple switch that can also\nbe enabled from userspace. This patch addes a new kernel API to the\nring buffers called:\n\n tracing_on()\n tracing_off()\n\nWhen tracing_off() is called, all ring buffers will not be able to record\ninto their buffers.\n\ntracing_on() will enable the ring buffers again.\n\nThese two act like an on/off switch. That is, there is no counting of the\nnumber of times tracing_off or tracing_on has been called.\n\nA new file is added to the debugfs/tracing directory called\n\n  tracing_on\n\nThis allows for userspace applications to also flip the switch.\n\n  echo 0 \u003e debugfs/tracing/tracing_on\n\ndisables the tracing.\n\n  echo 1 \u003e /debugfs/tracing/tracing_on\n\nenables it.\n\nNote, this does not disable or enable any tracers. It only sets or clears\na flag that needs to be set in order for the ring buffers to write to\ntheir buffers. It is a global flag, and affects all ring buffers.\n\nThe buffers start out with tracing_on enabled.\n\nThere are now three flags that control recording into the buffers:\n\n tracing_on: which affects all ring buffer tracers.\n\n buffer-\u003erecord_disabled: which affects an allocated buffer, which may be set\n     if an anomaly is detected, and tracing is disabled.\n\n cpu_buffer-\u003erecord_disabled: which is set by tracing_stop() or if an\n     anomaly is detected. tracing_start can not reenable this if\n     an anomaly occurred.\n\nThe userspace debugfs/tracing/tracing_enabled is implemented with\ntracing_stop() but the user space code can not enable it if the kernel\ncalled tracing_stop().\n\nUserspace can enable the tracing_on even if the kernel disabled it.\nIt is just a switch used to stop tracing if a condition was hit.\ntracing_on is not for protecting critical areas in the kernel nor is\nit for stopping tracing if an anomaly occurred. This is because userspace\ncan reenable it at any time.\n\nSide effect: With this patch, I discovered a dead variable in ftrace.c\n  called tracing_on. This patch removes it.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\n"
    },
    {
      "commit": "15e6cb3673ea6277999642802406a764b49391b0",
      "tree": "d0a46a918caa64d5fb1ed37be3e026b30e94fe77",
      "parents": [
        "caf4b323b02a16c92fba449952ac6515ddc76d7a"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Nov 11 07:14:25 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 11 10:29:12 2008 +0100"
      },
      "message": "tracing: add a tracer to catch execution time of kernel functions\n\nImpact: add new tracing plugin which can trace full (entry+exit) function calls\n\nThis tracer uses the low level function return ftrace plugin to\nmeasure the execution time of the kernel functions.\n\nThe first field is the caller of the function, the second is the\nmeasured function, and the last one is the execution time in\nnanoseconds.\n\n- v3:\n\n- HAVE_FUNCTION_RET_TRACER have been added. Each arch that support ftrace return\n  should enable it.\n- ftrace_return_stub becomes ftrace_stub.\n- CONFIG_FUNCTION_RET_TRACER depends now on CONFIG_FUNCTION_TRACER\n- Return traces printing can be used for other tracers on trace.c\n- Adapt to the new tracing API (no more ctrl_update callback)\n- Correct the check of \"disabled\" during insertion.\n- Minor changes...\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0183fb1c94b74862b073590fc52c56b7364b7bad",
      "tree": "79b67584fe7f2de26b1d4c9db516eb9645b6af45",
      "parents": [
        "a6b0786f7f83bcc4d414a2977aaebe2941ebe1de"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Fri Nov 07 22:36:02 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Nov 08 09:51:02 2008 +0100"
      },
      "message": "ftrace: fix set_ftrace_filter\n\nImpact: fix of output of set_ftrace_filter\n\nCommit ftrace: do not show freed records in available_filter_functions\n\nRemoved a bit too much from the set_ftrace_filter code, where we now see\nall functions in the set_ftrace_filter file even when we set a filter.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "60a7ecf42661f2b22168751298592da6ee210c9e",
      "tree": "050fd052c546c92f8aac10ee71d5bb6d98a21fc8",
      "parents": [
        "79c81d220c8e25163f56edcdfaf23f83a4c88e6b"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Nov 05 16:05:44 2008 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Nov 06 07:50:51 2008 +0100"
      },
      "message": "ftrace: add quick function trace stop\n\nImpact: quick start and stop of function tracer\n\nThis patch adds a way to disable the function tracer quickly without\nthe need to run kstop_machine. It adds a new variable called\nfunction_trace_stop which will stop the calls to functions from mcount\nwhen set.  This is just an on/off switch and does not handle recursion\nlike preempt_disable().\n\nIt\u0027s main purpose is to help other tracers/debuggers start and stop tracing\nfuctions without the need to call kstop_machine.\n\nThe config option HAVE_FUNCTION_TRACE_MCOUNT_TEST is added for archs\nthat implement the testing of the function_trace_stop in the mcount\narch dependent code. Otherwise, the test is done in the C code.\n\nx86 is the only arch at the moment that supports this.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0b6e4d56bf71866a2b58daa8323cf747988ce7e4",
      "tree": "abda53ec941c887283d496abf5d364ba80f72d5e",
      "parents": [
        "e946217e4fdaa67681bbabfa8e6b18641921f750"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Oct 28 20:17:38 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 28 19:15:58 2008 +0100"
      },
      "message": "ftrace: perform an initialization for ftrace to enable it\n\nImpact: corrects a bug which made the non-dyn function tracer not functional\n\nWith latest git, the non-dynamic function tracer didn\u0027t get any trace.\n\nThe problem was the fact that ftrace_enabled wasn\u0027t initialized to 1\nbecause ftrace hasn\u0027t any init function when DYNAMIC_FTRACE is disabled.\n\nSo when a tracer tries to register an ftrace_ops struct,\n__register_ftrace_function failed to set the hook.\n\nThis patch corrects it by setting an init function to initialize\nftrace during the boot.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f17845e5d97ead8fbdadfd40039e058ec7cf4a42",
      "tree": "14c053143dad362fce72cc77f2beb41ab6c43dec",
      "parents": [
        "66b0de3569b00f61978782b9f97aa4803dbec0fb"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Oct 24 12:47:10 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Oct 24 12:52:44 2008 +0200"
      },
      "message": "ftrace: warning in kernel/trace/ftrace.c\n\nthis warning:\n\n  kernel/trace/ftrace.c:189: warning: ‘frozen_record_count’ defined but not used\n\ntriggers because frozen_record_count is only used in the KCONFIG_MARKERS\ncase. Move the variable it there.\n\nAlas, this frozen-record facility seems to have little use. The\nfrozen_record_count variable is not used by anything, nor the flags.\n\nSo this section might need a bit of dead-code-removal care as well.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "66b0de3569b00f61978782b9f97aa4803dbec0fb",
      "tree": "9ffcb1a8481e7337dbe2d2ec321a3b4a427f84d7",
      "parents": [
        "15adc048986f6b54b6044f2b6fc4b48f49413e2f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 23 16:11:03 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 23 16:11:03 2008 +0200"
      },
      "message": "ftrace: fix build failure\n\nfix:\n\n kernel/trace/ftrace.c: In function \u0027ftrace_release\u0027:\n kernel/trace/ftrace.c:271: error: implicit declaration of function \u0027ftrace_release_hash\u0027\n\nrelease_hash is not needed without dftraced.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "08f5ac906d2c0faf96d608c54a0b03177376da8d",
      "tree": "ee43d94b168b9c3b757db83aea78b45eb3a556c1",
      "parents": [
        "4d296c24326783bff1282ac72f310d8bac8df413"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Oct 23 09:33:07 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 23 16:00:24 2008 +0200"
      },
      "message": "ftrace: remove ftrace hash\n\nThe ftrace hash was used by the ftrace_daemon code. The record ip function\nwould place the calling address (ip) into the hash. The daemon would later\nread the hash and modify that code.\n\nThe hash complicates the code. This patch removes it.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4d296c24326783bff1282ac72f310d8bac8df413",
      "tree": "75751fdafc0fa5818a926478e78dd9e54f1cf872",
      "parents": [
        "cb7be3b2fc2cf089ee52b16f0fd9ebb29e9944e1"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Oct 23 09:33:06 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 23 16:00:23 2008 +0200"
      },
      "message": "ftrace: remove mcount set\n\nThe arch dependent function ftrace_mcount_set was only used by the daemon\nstart up code. This patch removes it.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cb7be3b2fc2cf089ee52b16f0fd9ebb29e9944e1",
      "tree": "4d5e4c1d1211ee7be1a583a9f9c4b33b7d4ce2ee",
      "parents": [
        "07c4cc1cdaa08fcb6c0275dd7be49eae37260169"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Oct 23 09:33:05 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 23 16:00:22 2008 +0200"
      },
      "message": "ftrace: remove daemon\n\nThe ftrace daemon is complex and error prone.  This patch strips it out\nof the code.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "6912896e994ddaf06cc0f6d3f2098bc4b59bdd84",
      "tree": "5f60e432eb5ec6cf0268ddc4d96f901578886c29",
      "parents": [
        "81adbdc029ecc416d56563e7f159100181dd711d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Oct 23 09:33:03 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 23 16:00:20 2008 +0200"
      },
      "message": "ftrace: add ftrace warn on to disable ftrace\n\nAdd ftrace warn on to disable ftrace as well as report a warning.\n\n[ Thanks to Andrew Morton for suggesting using the WARN_ON return value ]\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "81adbdc029ecc416d56563e7f159100181dd711d",
      "tree": "ff7ed7b0fb284c22eb30e690a85e2e9e083c4162",
      "parents": [
        "ab9a0918cbf0fa8883301838df8dbc8fc085ff50"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Oct 23 09:33:02 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 23 16:00:19 2008 +0200"
      },
      "message": "ftrace: only have ftrace_kill atomic\n\nWhen an anomaly is detected, we need a way to completely disable\nftrace. Right now we have two functions: ftrace_kill and ftrace_kill_atomic.\nThe ftrace_kill tries to do it in a \"nice\" way by converting everything\nback to a nop.\n\nThe \"nice\" way is dangerous itself, so this patch removes it and only\nhas the \"atomic\" version, which is all that is needed.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "593eb8a2d63e95772a5f22d746f18a997c5ee463",
      "tree": "2a99c61ccffc2c0fd280bb2e5f81ac2f22e2f471",
      "parents": [
        "34698bcbdf7b0629d6c873b5da7c63073fb45361"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Oct 23 09:32:59 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Oct 23 16:00:13 2008 +0200"
      },
      "message": "ftrace: return error on failed modified text.\n\nHave the ftrace_modify_code return error values:\n\n  -EFAULT on error of reading the address\n\n  -EINVAL if what is read does not match what it expected\n\n  -EPERM  if the write fails to update after a successful match.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bd95b88d9e51fcbf392a7e90338a8fcc3499cbd6",
      "tree": "a88df2bd756a4dd0715a92c3cec193366d86b861",
      "parents": [
        "c513867561eeb07d24a0bdda1a18a8f91921a301"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Oct 16 09:31:27 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 20 18:27:01 2008 +0200"
      },
      "message": "ftrace: release functions from hash\n\nThe x86 architecture uses a static recording of mcount caller locations\nand is not affected by this patch.\n\nFor architectures still using the dynamic ftrace daemon, this patch is\ncritical. It removes the race between the recording of a function that\ncalls mcount, the unloading of a module, and the ftrace daemon updating\nthe call sites.\n\nThis patch adds the releasing of the hash functions that the daemon uses\nto update the mcount call sites. When a module is unloaded, not only\nare the replaced call site table update, but now so is the hash recorded\nfunctions that the ftrace daemon will use.\n\nAgain, architectures that implement MCOUNT_RECORD are not affected by\nthis (which currently only x86 has).\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "05736a427f7e16be948ccbf39782bd3a6ae16b14",
      "tree": "6efd6991853918242947df308be60b14a6fa5e80",
      "parents": [
        "43a15386c4faf913f7d70a47748c266d6210cd6e"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Sep 22 14:55:47 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:38:11 2008 +0200"
      },
      "message": "ftrace: warn on failure to disable mcount callers\n\nWith the recent updates to ftrace, there should not be any failures when\nmodifying the code. If there is, then we need to warn about it.\n\nThis patch has a cleaned up version of the code that I used to discover\nthat the weak symbols were causing failures.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "71c67d58b5660f8e42c7d4c3e77cbc03fac5ed31",
      "tree": "c098b6b717c3bf1cb80bef83bde7c9a0ccbacaad",
      "parents": [
        "fb1b6d8b5154c692172a424e45fbd0573295cb93"
      ],
      "author": {
        "name": "Steven Noonan",
        "email": "steven@uplinklabs.net",
        "time": "Sat Sep 20 01:00:37 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:37:58 2008 +0200"
      },
      "message": "ftrace: mcount_addr defined but not used\n\nWhen CONFIG_DYNAMIC_FTRACE isn\u0027t used, neither is mcount_addr. This\npatch eliminates that warning.\n\nSigned-off-by: Steven Noonan \u003csteven@uplinklabs.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "644f991d4b920ab1f5043509651479420b293490",
      "tree": "075c57f5fd43206d54e5debed0e738e1878d73aa",
      "parents": [
        "c0719e5a4b1ccc04180b7a7b71095c9fb7131919"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Sat Sep 06 01:06:04 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:36:58 2008 +0200"
      },
      "message": "ftrace: fix unlocking of hash\n\nThis must be brown paper bag week for Steven Rostedt!\n\nWhile working on ftrace for PPC, I discovered that the hash locking done\nwhen CONFIG_FTRACE_MCOUNT_RECORD is not set, is totally incorrect.\n\nWith a cut and paste error, I had the hash lock macro to lock for both\nhash_lock _and_ hash_unlock!\n\nThis bug did not affect x86 since this bug was introduced when\nCONFIG_FTRACE_MCOUNT_RECORD was added to x86.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3b47bfc1fca01cccad9cce2d18b79b18ef2e4131",
      "tree": "5be5a241139b505dcb0edf6150183096c23b47ed",
      "parents": [
        "e5a81b629ea8feb9e7530cfac35cfb41c45facf3"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Aug 27 23:24:15 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:36:22 2008 +0200"
      },
      "message": "ftrace: remove direct reference to mcount in trace code\n\nThe mcount record method of ftrace scans objdump for references to mcount.\nUsing mcount as the reference to test if the calls to mcount being replaced\nare indeed calls to mcount, this use of mcount was also caught as a\nlocation to change. Using a variable that points to the mcount address\nmoves this reference into the data section that is not scanned, and\nwe do not use a false location to try and modify.\n\nThe warn on code was what was used to detect this bug.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ac8825ec6d941b6899331b84c7d6bf027c3bb4f1",
      "tree": "3c8673f34f88e9438405216416ad22af8b9e4998",
      "parents": [
        "2d7da80f7138c4276ef4fa0334be400b805d0fbf"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 25 08:12:04 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:36:09 2008 +0200"
      },
      "message": "ftrace: clean up macro usage\n\nenclose the argument in parenthesis. (especially since we cast it,\nwhich is a high prio operation)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2d7da80f7138c4276ef4fa0334be400b805d0fbf",
      "tree": "2c2c21758498c989cf22414bf66bff1093edd263",
      "parents": [
        "6f93fc076a464bfe24e8d4c5fea3f6ca5bdb264d"
      ],
      "author": {
        "name": "Stephen Rothwell",
        "email": "sfr@canb.auug.org.au",
        "time": "Mon Aug 25 13:08:44 2008 +1000"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:36:06 2008 +0200"
      },
      "message": "ftrace: fix build failure\n\nAfter disabling FTRACE_MCOUNT_RECORD via a patch, a dormant build\nfailure surfaced:\n\n kernel/trace/ftrace.c: In function \u0027ftrace_record_ip\u0027:\n kernel/trace/ftrace.c:416: error: incompatible type for argument 1 of \u0027_spin_lock_irqsave\u0027\n kernel/trace/ftrace.c:433: error: incompatible type for argument 1 of \u0027_spin_lock_irqsave\u0027\n\nIntroduced by commit 6dad8e07f4c10b17b038e84d29f3ca41c2e55cd0 (\"ftrace:\nadd necessary locking for ftrace records\").\n\nSigned-off-by: Stephen Rothwell \u003csfr@canb.auug.org.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "99ecdc43bc17faf5fa571db8569df171ecd0e5b8",
      "tree": "aedefb2859247aefe7538e479ab71bcd3a1717c8",
      "parents": [
        "00fd61aee10533e003f2f00ab7163207660a4051"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Aug 15 21:40:05 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:35:47 2008 +0200"
      },
      "message": "ftrace: add necessary locking for ftrace records\n\nThe new design of pre-recorded mcounts and updating the code outside of\nkstop_machine has changed the way the records themselves are protected.\n\nThis patch uses the ftrace_lock to protect the records. Note, the lock\nstill does not need to be taken within calls that are only called via\nkstop_machine, since the that code can not run while the spin lock is held.\n\nAlso removed the hash_lock needed for the daemon when MCOUNT_RECORD is\nconfigured. Also did a slight cleanup of an unused variable.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "00fd61aee10533e003f2f00ab7163207660a4051",
      "tree": "72f42d3a4b238d84e3697c53b31b1ba9f8d022cb",
      "parents": [
        "98a983aad2e5b3dc83a8a761675445cdd8f3e6bd"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Fri Aug 15 21:40:04 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:35:43 2008 +0200"
      },
      "message": "ftrace: do not init module on ftrace disabled\n\nIf one of the self tests of ftrace has disabled the function tracer,\ndo not run the code to convert the mcount calls in modules.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "fed1939c64d2288938fdc1c367d49082da65e195",
      "tree": "a4592352d28efcfe82379c71d061b9127e49a115",
      "parents": [
        "28614889bcb2558a47d02d52394b7fd9795a9547"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Aug 14 22:47:19 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:35:12 2008 +0200"
      },
      "message": "ftrace: remove old pointers to mcount\n\nWhen a mcount pointer is recorded into a table, it is used to add or\nremove calls to mcount (replacing them with nops). If the code is removed\nvia removing a module, the pointers still exist.  At modifying the code\na check is always made to make sure the code being replaced is the code\nexpected. In-other-words, the code being replaced is compared to what\nit is expected to be before being replaced.\n\nThere is a very small chance that the code being replaced just happens\nto look like code that calls mcount (very small since the call to mcount\nis relative). To remove this chance, this patch adds ftrace_release to\nallow module unloading to remove the pointers to mcount within the module.\n\nAnother change for init calls is made to not trace calls marked with\n__init. The tracing can not be started until after init is done anyway.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a9fdda33cd7c7519b082e37538fe790f9ff684bb",
      "tree": "56d16d69e519e127a2090df6a16aa9029e8c0e05",
      "parents": [
        "732f3ca7d4ba3c1be8d051d52302ef441ee7748b"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Aug 14 22:47:17 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:35:05 2008 +0200"
      },
      "message": "ftrace: do not show freed records in available_filter_functions\n\nSeems that freed records can appear in the available_filter_functions list.\nThis patch fixes that.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "90d595fe5ca4b685465c068907e6e554760abea8",
      "tree": "03f98454af8c6756177aa053ae7440373007f67d",
      "parents": [
        "68bf21aa15c85d2e9b623dcda2b1ed8893275fa1"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Aug 14 15:45:09 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:34:47 2008 +0200"
      },
      "message": "ftrace: enable mcount recording for modules\n\nThis patch enables the loading of the __mcount_section of modules and\nchanging all the callers of mcount into nops.\n\nThe modification is done before the init_module function is called, so\nagain, we do not need to use kstop_machine to make these changes.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "68bf21aa15c85d2e9b623dcda2b1ed8893275fa1",
      "tree": "54d4d4f7e8311b77f3166a8807a635347d479081",
      "parents": [
        "8da3821ba5634497da63d58a69e24a97697c4a2b"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Aug 14 15:45:08 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:34:44 2008 +0200"
      },
      "message": "ftrace: mcount call site on boot nops core\n\nThis is the infrastructure to the converting the mcount call sites\nrecorded by the __mcount_loc section into nops on boot. It also allows\nfor using these sites to enable tracing as normal. When the __mcount_loc\nsection is used, the \"ftraced\" kernel thread is disabled.\n\nThis uses the current infrastructure to record the mcount call sites\nas well as convert them to nops. The mcount function is kept as a stub\non boot up and not converted to the ftrace_record_ip function. We use the\nftrace_record_ip to only record from the table.\n\nThis patch does not handle modules. That comes with a later patch.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "784e2d76007f90d69341b95967160c4fb7829299",
      "tree": "adf7f8a8a5470080efcc971559b79f10b44042e6",
      "parents": [
        "9b1a4d38373a5581a4e01032a3ccdd94cd93477b"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:31 2008 -0500"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Jul 28 12:16:31 2008 +1000"
      },
      "message": "stop_machine: fix up ftrace.c\n\nSimple conversion.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nCc: Abhishek Sagar \u003csagar.abhishek@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "b2613e370dbeb69edbff989382fa54f2395aa471",
      "tree": "e943c77ea618e08cc1d2ba8cd026079d357c69fb",
      "parents": [
        "60bc080090e3bf6afa29c62cb25f913706551010"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 11 16:44:27 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 11 16:46:50 2008 +0200"
      },
      "message": "ftrace: build fix for ftraced_suspend\n\nfix:\n\n kernel/trace/ftrace.c:1615: error: \u0027ftraced_suspend\u0027 undeclared (first use in this function)\n kernel/trace/ftrace.c:1615: error: (Each undeclared identifier is reported only once\n kernel/trace/ftrace.c:1615: error: for each function it appears in.)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a2bb6a3d85ef3124cd336403a95abc0540d3fbe2",
      "tree": "3048f355cc3ca814222ba34943c9a8f735e7a5e6",
      "parents": [
        "26bc83f4cb911a0b4dabfe23b700aaf3235f2955"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Jul 10 20:58:15 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 11 15:49:21 2008 +0200"
      },
      "message": "ftrace: add ftrace_kill_atomic\n\nIt has been suggested that I add a way to disable the function tracer\non an oops. This code adds a ftrace_kill_atomic. It is not meant to be\nused in normal situations. It will disable the ftrace tracer, but will\nnot perform the nice shutdown that requires scheduling.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "98a05ed4bd7774f533ab185fe0bf2fdc58292d7c",
      "tree": "aabf40b440c0931e92b8ff0aaf32052a6b4796de",
      "parents": [
        "760378e1497841246ea7e42abad617d8a8ac0bcc"
      ],
      "author": {
        "name": "Abhishek Sagar",
        "email": "sagar.abhishek@gmail.com",
        "time": "Thu Jun 26 22:51:51 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jul 03 14:46:24 2008 +0200"
      },
      "message": "ftrace: prevent ftrace modifications while being kprobe\u0027d, v2\n\nadd two missing chunks for ftrace+kprobe.\n\nSigned-off-by: Abhishek Sagar \u003csagar.abhishek@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f22f9a89ce6857d377bf22dba4c1a8cd256c5136",
      "tree": "34899ea2a9dc603014052742f774e8aeb51d9591",
      "parents": [
        "ecea656d1d5e912d2f3d332657ea4a6d8380f891"
      ],
      "author": {
        "name": "Abhishek Sagar",
        "email": "sagar.abhishek@gmail.com",
        "time": "Sat Jun 21 23:50:29 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jun 23 22:10:59 2008 +0200"
      },
      "message": "ftrace: avoid modifying kprobe\u0027d records\n\nAvoid modifying the mcount call-site if there is a kprobe installed on it.\nThese records are not marked as failed however. This allowed the filter\nrules on them to remain up-to-date. Whenever the kprobe on the corresponding\nrecord is removed, the record gets updated as normal.\n\nSigned-off-by: Abhishek Sagar \u003csagar.abhishek@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ecea656d1d5e912d2f3d332657ea4a6d8380f891",
      "tree": "fd139cdd762230bf4e55a1341ba29e2b309968b1",
      "parents": [
        "785656a41f9a9c0e843a23d1ae05d900b5158f8f"
      ],
      "author": {
        "name": "Abhishek Sagar",
        "email": "sagar.abhishek@gmail.com",
        "time": "Sat Jun 21 23:47:53 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jun 23 22:10:58 2008 +0200"
      },
      "message": "ftrace: freeze kprobe\u0027d records\n\nLet records identified as being kprobe\u0027d be marked as \"frozen\". The trouble\nwith records which have a kprobe installed on their mcount call-site is\nthat they don\u0027t get updated. So if such a function which is currently being\ntraced gets its tracing disabled due to a new filter rule (or because it\nwas added to the notrace list) then it won\u0027t be updated and continue being\ntraced. This patch allows scanning of all frozen records during tracing to\ncheck if they should be traced.\n\nSigned-off-by: Abhishek Sagar \u003csagar.abhishek@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "395a59d0f8e86bb39cd700c3d185d30c670bb958",
      "tree": "1558e635efcede901c5dbe9acd625d475db5b369",
      "parents": [
        "f34bfb1beef8a17ba3d46b60f8fa19ffedc1ed8d"
      ],
      "author": {
        "name": "Abhishek Sagar",
        "email": "sagar.abhishek@gmail.com",
        "time": "Sat Jun 21 23:47:27 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jun 23 22:10:56 2008 +0200"
      },
      "message": "ftrace: store mcount address in rec-\u003eip\n\nRecord the address of the mcount call-site. Currently all archs except sparc64\nrecord the address of the instruction following the mcount call-site. Some\ngeneral cleanups are entailed. Storing mcount addresses in rec-\u003eip enables\nlooking them up in the kprobe hash table later on to check if they\u0027re kprobe\u0027d.\n\nSigned-off-by: Abhishek Sagar \u003csagar.abhishek@gmail.com\u003e\nCc: davem@davemloft.net\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f22529351f7060d61eff3b76d7c9706f90aaedf3",
      "tree": "199213077613a1d2929ff931968315c11056d765",
      "parents": [
        "e765ee90da62535ac7d7a97f2464f9646539d683"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu May 22 10:37:48 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jun 16 14:44:13 2008 +0200"
      },
      "message": "namespacecheck: fixes\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "a4500b84c51645bbc86be3ca84f2252b7ada060f",
      "tree": "4f11488be2c6a7f89762ce800c77d888d540fb1a",
      "parents": [
        "20764ff1efb440640353053ec83263e69e1259e0"
      ],
      "author": {
        "name": "Abhishek Sagar",
        "email": "sagar.abhishek@gmail.com",
        "time": "Sat Jun 14 11:59:39 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jun 14 08:32:29 2008 +0200"
      },
      "message": "ftrace: fix \"notrace\" filtering priority\n\nThis is a fix to give notrace filter rules priority over \"set_ftrace_filter\"\nrules.\n\nThis fix ensures that functions which are set to be filtered and are\nconcurrently marked as \"notrace\" don\u0027t get recorded. As of now, if\na record is marked as FTRACE_FL_FILTER and is enabled, then the notrace\nflag is not checked. Tested on x86-32.\n\nSigned-off-by: Abhishek Sagar \u003csagar.abhishek@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "34078a5e44db3cbed2e0ed580c29a39d94e0cd97",
      "tree": "30bc17928302d6e38f352ab7fb11d1907906d058",
      "parents": [
        "eb9a7bf09172f409c10ec9560adeea95bb4045f5"
      ],
      "author": {
        "name": "Abhishek Sagar",
        "email": "sagar.abhishek@gmail.com",
        "time": "Tue Jun 03 08:33:41 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 10 11:59:05 2008 +0200"
      },
      "message": "ftrace: prevent freeing of all failed updates\n\nSteven Rostedt wrote:\n\u003e If we unload a module and reload it, will it ever get converted again?\n\nThe intent was always to filter core kernel functions to prevent their freeing.\nHere\u0027s a fix which should allow re-recording of module call-sites.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "eb9a7bf09172f409c10ec9560adeea95bb4045f5",
      "tree": "0773fb494daf7157396d6a2069fe8698bad315e5",
      "parents": [
        "1d74f2a0f64b4091e5e91b55ac1b17dff93f4b59"
      ],
      "author": {
        "name": "Abhishek Sagar",
        "email": "sagar.abhishek@gmail.com",
        "time": "Sun Jun 01 21:47:54 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 10 11:58:17 2008 +0200"
      },
      "message": "ftrace: add debugfs entry \u0027failures\u0027\n\nIdentify functions which had their mcount call-site updates failed. This can\nhelp us track functions which ftrace shouldn\u0027t fiddle with, and are thus not\nbeing traced. If there is no race with any external agent which is modifying\nthe mcount call-site, then this file displays no entries (normal case).\n\nSigned-off-by: Abhishek Sagar \u003csagar.abhishek@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1d74f2a0f64b4091e5e91b55ac1b17dff93f4b59",
      "tree": "8777ee5d38cf27939687adf2dc3d2a9a5f60b33d",
      "parents": [
        "0eb967012ea15e6e8cfab483d9fa37bc602d400c"
      ],
      "author": {
        "name": "Abhishek Sagar",
        "email": "sagar.abhishek@gmail.com",
        "time": "Sun Jun 01 21:47:42 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 10 11:57:49 2008 +0200"
      },
      "message": "ftrace: remove ftrace_ip_converted()\n\nRemove the unneeded function ftrace_ip_converted().\n\nSigned-off-by: Abhishek Sagar \u003csagar.abhishek@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "0eb967012ea15e6e8cfab483d9fa37bc602d400c",
      "tree": "0e9c026a2d83f313cdc3f9f235d58ff522cee090",
      "parents": [
        "e0773410247f1e5fc6f7c52a4c5f3c6c9873d527"
      ],
      "author": {
        "name": "Abhishek Sagar",
        "email": "sagar.abhishek@gmail.com",
        "time": "Sun Jun 01 21:47:30 2008 +0530"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 10 11:56:57 2008 +0200"
      },
      "message": "ftrace: prevent freeing of all failed updates\n\nPrevent freeing of records which cause problems and correspond to function from\ncore kernel text. A new flag, FTRACE_FL_CONVERTED is used to mark a record\nas \"converted\". All other records are patched lazily to NOPs. Failed records\nnow also remain on frace_hash table. Each invocation of ftrace_record_ip now\nchecks whether the traced function has ever been recorded (including past\nfailures) and doesn\u0027t re-record it again.\n\nSigned-off-by: Abhishek Sagar \u003csagar.abhishek@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ad90c0e3ce8d20d6873b57e36181ef6d7a0097fe",
      "tree": "34af559928f9f2403c72156b672578d28f790a4f",
      "parents": [
        "76094a2cf46e4ab776055d4086615b884408568c"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Tue May 27 20:48:37 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jun 02 12:50:04 2008 +0200"
      },
      "message": "ftrace: user update and disable dynamic ftrace daemon\n\nIn dynamic ftrace, the mcount function starts off pointing to a stub\nfunction that just returns.\n\nOn start up, the call to the stub is modified to point to a \"record_ip\"\nfunction. The job of the record_ip function is to add the function to\na pre-allocated hash list. If the function is already there, it simply is\nignored, otherwise it is added to the list.\n\nLater, a ftraced daemon wakes up and calls kstop_machine if any functions\nhave been recorded, and changes the calls to the recorded functions to\na simple nop.  If no functions were recorded, the daemon goes back to sleep.\n\nThe daemon wakes up once a second to see if it needs to update any newly\nrecorded functions into nops.  Usually it does not, but if a lot of code\nhas been executed for the first time in the kernel, the ftraced daemon\nwill call kstop_machine to update those into nops.\n\nThe problem currently is that there\u0027s no way to stop the daemon from doing\nthis, and it can cause unneeded latencies (800us which for some is bothersome).\n\nThis patch adds a new file /debugfs/tracing/ftraced_enabled. If the daemon\nis active, reading this will return \"enabled\\n\" and \"disabled\\n\" when the\ndaemon is not running. To disable the daemon, the user can echo \"0\" or\n\"disable\" into this file, and \"1\" or \"enable\" to re-enable the daemon.\n\nSince the daemon is used to convert the functions into nops to increase\nthe performance of the system, I also added that anytime something is\nwritten into the ftraced_enabled file, kstop_machine will run if there\nare new functions that have been detected that need to be converted.\n\nThis way the user can disable the daemon but still be able to control the\nconversion of the mcount calls to nops by simply,\n\n  \"echo 0 \u003e /debugfs/tracing/ftraced_enabled\"\n\nwhen they need to do more conversions.\n\nTo see the number of converted functions:\n\n  \"cat /debugfs/tracing/dyn_ftrace_total_info\"\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "492a7ea5bcf263ee02a9eb6a3ab0222a1946fade",
      "tree": "9905f9249f975751c1b880154753bb4c02d72ed3",
      "parents": [
        "ffdaa3582b6b39d625d585d07e329ffdc925e971"
      ],
      "author": {
        "name": "Abhishek Sagar",
        "email": "sagar.abhishek@gmail.com",
        "time": "Sun May 25 00:10:04 2008 +0530"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 26 22:52:10 2008 +0200"
      },
      "message": "ftrace: fix updating of ftrace_update_cnt\n\nHi Ingo/Steven,\n\nFtrace currently maintains an update count which includes false updates,\ni.e, updates which failed. If anything, such failures should be tracked\nby some separate variable, but this patch provides a minimal fix.\n\nSigned-off-by: Abhishek Sagar \u003csagar.abhishek@gmail.com\u003e\nCc: rostedt@goodmis.org\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "ffdaa3582b6b39d625d585d07e329ffdc925e971",
      "tree": "2e75b26ea065d6e11eeb17b8ea77bcd2f16853c6",
      "parents": [
        "ccbfac2923c9febaeaf07a50054027a92b502718"
      ],
      "author": {
        "name": "Abhishek Sagar",
        "email": "sagar.abhishek@gmail.com",
        "time": "Sat May 24 23:45:02 2008 +0530"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 26 22:52:04 2008 +0200"
      },
      "message": "ftrace: safe traversal of ftrace_hash hlist\n\nHi Steven,\n\nI noticed that concurrent instances of ftrace_record_ip()\nhave a race between ftrace_hash list traversal during\nftrace_ip_in_hash() (before acquiring ftrace_shutdown_lock)\nand ftrace_add_hash(). If it\u0027s so then this should fix it.\n\nSigned-off-by: Abhishek Sagar \u003csagar.abhishek@gmail.com\u003e\nCc: rostedt@goodmis.org\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "41c52c0db9607e59f90da7da5309489fa06e887f",
      "tree": "b0b1f282c087c53dfd4081da5a8a35cdc5ea5ebb",
      "parents": [
        "da89a7a2536c46e76a1a4351a70a8b8417e5fed1"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu May 22 11:46:33 2008 -0400"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon May 26 22:51:37 2008 +0200"
      },
      "message": "ftrace: set_ftrace_notrace feature\n\nWhile debugging latencies in the RT kernel, I found that it would be nice\nto be able to filter away functions from the trace than just to filter\non functions.\n\nI added a new interface to the debugfs tracing directory called\n\n  set_ftrace_notrace\n\nWhen dynamic frace is enabled, this lets you filter away functions that will\nnot be recorded in the trace. It is similar to adding \u0027notrace\u0027 to those\nfunctions but by doing it without recompiling the kernel.\n\nHere\u0027s how set_ftrace_filter and set_ftrace_notrace interact. Remember, if\nset_ftrace_filter is set, it removes all functions from the trace execpt for\nthose listed in the set_ftrace_filter. set_ftrace_notrace will prevent those\nfunctions from being traced.\n\nIf you were to set one function in both set_ftrace_filter and\nset_ftrace_notrace and that function was the same, then you would end up\nwith an empty trace.\n\nthe set of functions to trace is:\n\n  set_ftrace_filter \u003d\u003d empty then\n\n     all functions not in set_ftrace_notrace\n\n  else\n\n     set of the set_ftrace_filter and not in set of set_ftrace_notrace.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "2d8b820b2e81954754277723379ae9ed5de316fa",
      "tree": "76991b9c8550db3b71218ff5c6a902d23dee8f04",
      "parents": [
        "37135677e653537ffc6e7def679443272a1c03c3"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Feb 23 16:55:50 2008 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 22:36:37 2008 +0200"
      },
      "message": "ftrace: cleanups\n\nfactor out code and clean it up.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "37135677e653537ffc6e7def679443272a1c03c3",
      "tree": "13ca182dfe446cefc60f8cf5e91b59a43b3170f7",
      "parents": [
        "d05f5f9906740474eb768823004ffcd775b12ca6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed May 14 08:10:31 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 22:36:24 2008 +0200"
      },
      "message": "ftrace: fix mcount export bug\n\nDavid S. Miller noticed the following bug: the -pg instrumentation\nfunction callback is named differently on each platform. On x86 it\nis mcount, on sparc it is _mcount. So the export does not make sense\nin kernel/trace/ftrace.c - move it to x86.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "aa5e5ceaf52a882a29d9b86531a20733f5116066",
      "tree": "edfa557db13cce863a3c68fbd72bed473f83e1f7",
      "parents": [
        "74f4e369fc5b52433ad824cef32d3bf1304549be"
      ],
      "author": {
        "name": "David Miller",
        "email": "davem@davemloft.net",
        "time": "Tue May 13 22:06:56 2008 -0700"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 22:35:57 2008 +0200"
      },
      "message": "ftrace: remove packed attribute on ftrace_page.\n\nIt causes unaligned access traps on platforms like sparc\n(ftrace_page may be marked packed, but once we return\na dyn_ftrace sub-object from this array to another piece\nof code, the \"packed\" part of the typing information doesn\u0027t\npropagate).\n\nBut also, it didn\u0027t serve any purpose either.  Even if packed,\non 64-bit or 32-bit, it didn\u0027t give us any more dyn_ftrace\nentries per-page.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "2bb6f8d6389cbfadd657e7dc069f6986abf35e4f",
      "tree": "894c84bdec4c716b1e16c60e2ab2a1ab198ac11d",
      "parents": [
        "a4feb8348b62fe76a63cdb5569f5c920f5283c06"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon May 12 21:21:02 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 22:01:34 2008 +0200"
      },
      "message": "ftrace: use raw_smp_processor_id for mcount functions\n\nDue to debug hooks in the kernel that can change the way smp_processor_id\nworks, use raw_smp_processor_id in mcount called functions (namely\nftrace_record_ip). Currently we annotate most debug functions from calling\nmcount, but we should not rely on that to prevent kernel lockups.\n\nThis patch uses the raw_smp_processor_id to prevent a recusive crash\nthat can happen if a debug hook in smp_processor_id calls mcount.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "07a267cdd2fd7d1de9455b1e36a1635ace7276c7",
      "tree": "886495b48c0e10866aa92e61e0dbd247a7e80e25",
      "parents": [
        "c1d2327b36f2261ffa8ff7227321ba900c7eee7f"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:55 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 21:15:42 2008 +0200"
      },
      "message": "ftrace: add UNINTERRUPTIBLE state for kftraced on disable\n\nWhen dynamic ftrace fails and sets itself disabled, the ftraced daemon\nwill go back to sleep everytime it wakes up. The setting of the\nftraced state to UNINTERRUPTIBLE is skipped in this process, and the\ndaemon takes up 100% of the CPU.  This patch makes sure the ftraced daemon\nsets itself to UNINTERRUPTIBLE in that loop.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e309b41dd65aa953f86765eeeecc941d8e1e8b8f",
      "tree": "295d4ed6e2a766607f889a04b977ca27cc24929e",
      "parents": [
        "b53dde9d34f2df396540988ebc65c33400f57b04"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 12 21:20:51 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:58:28 2008 +0200"
      },
      "message": "ftrace: remove notrace\n\nnow that we have a kbuild method for notrace, no need to pollute the\nC code with the annotations.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "caf8cdebfb6c1cff50ea8077f1a07c2333d6d1fd",
      "tree": "848a3350351c7fbe3240bd600237c816ade38625",
      "parents": [
        "9ff9cdb2d3b0971f89e899b3420aadd91bddc215"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:50 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:56:31 2008 +0200"
      },
      "message": "ftrace: remove address of function names\n\nPowerPC is very fragile when it comes to use of function names\nand function addresses.  ftrace needs to either use all function\naddresses or function names (i.e. my_func as suppose to \u0026my_func).\n\nThis patch chooses to use the names and not the addresses, and\nmakes ftrace consistent.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "9ff9cdb2d3b0971f89e899b3420aadd91bddc215",
      "tree": "ad669d9bf015355ce8ea312a9fc140b63e1a4250",
      "parents": [
        "6fb44b717c10ecf37beaaebd312f3afa93fed714"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 12 21:20:50 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:56:05 2008 +0200"
      },
      "message": "ftrace: cleanups\n\nclean up recent code.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "4eebcc81a33fbc45e28542b50197ed7b3c486d90",
      "tree": "13bbad50aa8d4dc36d630ef08886876f4dc0b6eb",
      "parents": [
        "37ad508419f0fdfda7b378756eb1f35cfd26d96d"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:48 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:54:16 2008 +0200"
      },
      "message": "ftrace: disable tracing on failure\n\nSince ftrace touches practically every function. If we detect any\nanomaly, we want to fully disable ftrace. This patch adds code\nto try shutdown ftrace as much as possible without doing any more\nharm is something is detected not quite correct.\n\nThis only kills ftrace, this patch does have checks for other parts of\nthe tracer (irqsoff, wakeup, etc.).\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "37ad508419f0fdfda7b378756eb1f35cfd26d96d",
      "tree": "53db6e201e605c1926adc74fa965b1a615066da8",
      "parents": [
        "088b1e427dbba2af93cb6a7d39258c10ff58dd27"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:48 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:54:04 2008 +0200"
      },
      "message": "ftrace - fix dynamic ftrace memory leak\n\nThe ftrace dynamic function update allocates a record to store the\ninstruction pointers that are being modified. If the modified\ninstruction pointer fails to update, then the record is marked as\nfailed and nothing more is done.\n\nWorse, if the modification fails, but the record ip function is still\ncalled, it will allocate a new record and try again. In just a matter\nof time, will this cause a serious memory leak and crash the system.\n\nThis patch plugs this memory leak. When a record fails, it is\nincluded back into the pool of records to be used. Now a record may\nfail over and over again, but the number of allocated records will\nnot increase.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "750ed1a40783432d0dcb0e6c2e813a12615d7664",
      "tree": "dc2d0eae703ec2ad3fe9a5bc657da5dbe0af2385",
      "parents": [
        "4bf39a9411a4ce8712954e03a9bd1592ee345919"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 12 21:20:46 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:42:31 2008 +0200"
      },
      "message": "ftrace: timestamp syncing, prepare\n\nrename and uninline now() to ftrace_now().\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "4bf39a9411a4ce8712954e03a9bd1592ee345919",
      "tree": "044694f1c69ec2588e4b60e6b60701bae2a53e81",
      "parents": [
        "d4c5a2f5870939d837293de87b41dda0012a4572"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 12 21:20:46 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:42:20 2008 +0200"
      },
      "message": "ftrace: cleanups\n\nno code changed.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "77a2b37d227483fe52aead242652aee406c25bf0",
      "tree": "cecb6a3a02a567530e2ce3502de18f371c9db7c1",
      "parents": [
        "7bd2f24c2f769e3f8f1d4fc8b9fddf689825f6a7"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:45 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:41:06 2008 +0200"
      },
      "message": "ftrace: startup tester on dynamic tracing.\n\nThis patch adds a startup self test on dynamic code modification\nand filters. The test filters on a specific function, makes sure that\nno other function is traced, exectutes the function, then makes sure that\nthe function is traced.\n\nThis patch also fixes a slight bug with the ftrace selftest, where\ntracer_enabled was not being set.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "c7aafc549766b87819285d3480648fc652a47bc4",
      "tree": "4c36170a644633f930feca57b27f8c5d23644e70",
      "parents": [
        "60a11774b38fef1ab90b18c5353bd1c7c4d311c8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 12 21:20:45 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:40:46 2008 +0200"
      },
      "message": "ftrace: cleanups\n\nfactor out code and clean it up.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "e1c08bdd9fa73e44096e5a82c0d5928b04ab02c8",
      "tree": "eb2c642f9b7b5e222f1635e138c6072b0799f37b",
      "parents": [
        "57f50be14d57b0dbf88dd019e7bb0ff3a3dc7b81"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:44 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:40:29 2008 +0200"
      },
      "message": "ftrace: force recording\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "5072c59fd45e9976d02ee6f18c7336ef97623cbc",
      "tree": "d7c9d48ed518246b958ee7759f285bc22445feb8",
      "parents": [
        "d61f82d06672f57fca410da6f7fffd15867db622"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:43 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:38:41 2008 +0200"
      },
      "message": "ftrace: add filter select functions to trace\n\nThis patch adds two files to the debugfs system:\n\n /debugfs/tracing/available_filter_functions\n\nand\n\n /debugfs/tracing/set_ftrace_filter\n\nThe available_filter_functions lists all functions that has been\nrecorded by the ftraced that has called the ftrace_record_ip function.\nThis is to allow users to see what functions have been converted\nto nops and can be enabled for tracing.\n\nTo enable functions, simply echo the names (whitespace delimited)\ninto set_ftrace_filter. Simple wildcards are also allowed.\n\necho \u0027scheduler\u0027 \u003e /debugfs/tracing/set_ftrace_filter\n\nWill have only the scheduler be activated when tracing is enabled.\n\necho \u0027sched_*\u0027 \u003e /debugfs/tracing/set_ftrace_filter\n\nWill have only the functions starting with \u0027sched_\u0027 be activated.\n\necho \u0027*lock\u0027 \u003e /debugfs/tracing/set_ftrace_filter\n\nWill have only functions ending with \u0027lock\u0027 be activated.\n\necho \u0027*lock*\u0027 \u003e /debugfs/tracing/set_ftrace_filter\n\nWill have only functions with \u0027lock\u0027 in its name be activated.\n\nNote: \u0027sched*lock\u0027 will not work. The only wildcards that are\nallowed is an asterisk and the beginning and or end of the string\npassed in.\n\nMultiple names can be passed in with whitespace delimited:\n\necho \u0027scheduler *lock *acpi*\u0027 \u003e /debugfs/tracing/set_ftrace_filter\n\nis also the same as:\n\necho \u0027scheduler\u0027 \u003e /debugfs/tracing/set_ftrace_filter\necho \u0027*lock\u0027 \u003e\u003e /debugfs/tracing/set_ftrace_filter\necho \u0027*acpi*\u0027 \u003e\u003e /debugfs/tracing/set_ftrace_filter\n\nAppending does just that. It appends to the list.\n\nTo disable all filters simply echo an empty line in:\n\necho \u003e /debugfs/tracing/set_ftrace_filter\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "d61f82d06672f57fca410da6f7fffd15867db622",
      "tree": "62ef5573934eaa638c0d39a45d789691aecbd7d3",
      "parents": [
        "3c1720f00bb619302ba19d55986ab565e74d06db"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:43 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:33:47 2008 +0200"
      },
      "message": "ftrace: use dynamic patching for updating mcount calls\n\nThis patch replaces the indirect call to the mcount function\npointer with a direct call that will be patched by the\ndynamic ftrace routines.\n\nOn boot up, the mcount function calls the ftace_stub function.\nWhen the dynamic ftrace code is initialized, the ftrace_stub\nis replaced with a call to the ftrace_record_ip, which records\nthe instruction pointers of the locations that call it.\n\nLater, the ftraced daemon will call kstop_machine and patch all\nthe locations to nops.\n\nWhen a ftrace is enabled, the original calls to mcount will now\nbe set top call ftrace_caller, which will do a direct call\nto the registered ftrace function. This direct call is also patched\nwhen the function that should be called is updated.\n\nAll patching is performed by a kstop_machine routine to prevent any\ntype of race conditions that is associated with modifying code\non the fly.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "3c1720f00bb619302ba19d55986ab565e74d06db",
      "tree": "d58aaa54bc8e7a465597f385de36204c3b0b9cf8",
      "parents": [
        "dfa60aba04dae7833d75b2e2be124bb7cfb8239f"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:43 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:33:35 2008 +0200"
      },
      "message": "ftrace: move memory management out of arch code\n\nThis patch moves the memory management of the ftrace\nrecords out of the arch code and into the generic code\nmaking the arch code simpler.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "b0fc494fae96a7089f3651cb451f461c7291244c",
      "tree": "586412b9ecbd8e3f04e8cd90a31644f94ff3a7d8",
      "parents": [
        "3d0833953e1b98b79ddf491dd49229eef9baeac1"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:43 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:33:19 2008 +0200"
      },
      "message": "ftrace: add ftrace_enabled sysctl to disable mcount function\n\nThis patch adds back the sysctl ftrace_enabled. This time it is\ndefaulted to on, if DYNAMIC_FTRACE is configured. When ftrace_enabled\nis disabled, the ftrace function is set to the stub return.\n\nIf DYNAMIC_FTRACE is also configured, on ftrace_enabled \u003d 0,\nthe registered ftrace functions will all be set to jmps, but no more\nnew calls to ftrace recording (used to find the ftrace calling sites)\nwill be called.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "3d0833953e1b98b79ddf491dd49229eef9baeac1",
      "tree": "3520cda824bdb58e47ce3e9f43d68249d5cc1a12",
      "parents": [
        "6cd8a4bb2f97527a9ceb30bc77ea4e959c6a95e3"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:33:09 2008 +0200"
      },
      "message": "ftrace: dynamic enabling/disabling of function calls\n\nThis patch adds a feature to dynamically replace the ftrace code\nwith the jmps to allow a kernel with ftrace configured to run\nas fast as it can without it configured.\n\nThe way this works, is on bootup (if ftrace is enabled), a ftrace\nfunction is registered to record the instruction pointer of all\nplaces that call the function.\n\nLater, if there\u0027s still any code to patch, a kthread is awoken\n(rate limited to at most once a second) that performs a stop_machine,\nand replaces all the code that was called with a jmp over the call\nto ftrace. It only replaces what was found the previous time. Typically\nthe system reaches equilibrium quickly after bootup and there\u0027s no code\npatching needed at all.\n\ne.g.\n\n  call ftrace  /* 5 bytes */\n\nis replaced with\n\n  jmp 3f  /* jmp is 2 bytes and we jump 3 forward */\n3:\n\nWhen we want to enable ftrace for function tracing, the IP recording\nis removed, and stop_machine is called again to replace all the locations\nof that were recorded back to the call of ftrace.  When it is disabled,\nwe replace the code back to the jmp.\n\nAllocation is done by the kthread. If the ftrace recording function is\ncalled, and we don\u0027t have any record slots available, then we simply\nskip that call. Once a second a new page (if needed) is allocated for\nrecording new ftrace function calls.  A large batch is allocated at\nboot up to get most of the calls there.\n\nBecause we do this via stop_machine, we don\u0027t have to worry about another\nCPU executing a ftrace call as we modify it. But we do need to worry\nabout NMI\u0027s so all functions that might be called via nmi must be\nannotated with notrace_nmi. When this code is configured in, the NMI code\nwill not call notrace.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "16444a8a40d4c7b4f6de34af0cae1f76a4f6c901",
      "tree": "9c290bcdbdc1ecf8f578c30b3b36914e14fdaacc",
      "parents": [
        "6e766410c4babd37bc7cd5e25009c179781742c8"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:31:58 2008 +0200"
      },
      "message": "ftrace: add basic support for gcc profiler instrumentation\n\nIf CONFIG_FTRACE is selected and /proc/sys/kernel/ftrace_enabled is\nset to a non-zero value the ftrace routine will be called everytime\nwe enter a kernel function that is not marked with the \"notrace\"\nattribute.\n\nThe ftrace routine will then call a registered function if a function\nhappens to be registered.\n\n[ This code has been highly hacked by Steven Rostedt and Ingo Molnar,\n  so don\u0027t blame Arnaldo for all of this ;-) ]\n\nUpdate:\n  It is now possible to register more than one ftrace function.\n  If only one ftrace function is registered, that will be the\n  function that ftrace calls directly. If more than one function\n  is registered, then ftrace will call a function that will loop\n  through the functions to call.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    }
  ]
}
