)]}'
{
  "log": [
    {
      "commit": "c2c80529460095035752bf0ecc1af82c1e0f6e0f",
      "tree": "e1fe0fdccb2d467666bfc8ed81f8a38016764f1c",
      "parents": [
        "45beca08dd8b6d6a65c5ffd730af2eac7a2c7a03"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@ZenIV.linux.org.uk",
        "time": "Fri Oct 31 19:50:41 2008 +0000"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Nov 03 10:12:13 2008 +0100"
      },
      "message": "tracing, alpha: undefined reference to `save_stack_trace\u0027\n\nImpact: build fix on !stacktrace architectures\n\nonly select STACKTRACE on architectures that have STACKTRACE_SUPPORT\n\n... since we also need to ifdef out the guts of ftrace_trace_stack().\nWe also want to disallow setting TRACE_ITER_STACKTRACE in trace_flags\non such configs, but that can wait.\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nAcked-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f3384b28a05624783b53836ccfed95ecde66a7ad",
      "tree": "e5fa8281ef1e4a9e638160204291556d42ed8a06",
      "parents": [
        "0b6e4d56bf71866a2b58daa8323cf747988ce7e4"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Oct 29 11:15:57 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Oct 29 17:21:05 2008 +0100"
      },
      "message": "ftrace: fix trace_nop config select\n\nImpact: build fix on non-function-tracing architectures\n\nThe trace_nop is the tracer that is defined when no tracer is set in\nthe ftrace infrastructure.\n\nThe trace_nop was mistakenly selected by HAVE_FTRACE due to the confusion\nbetween ftrace infrastructure and the ftrace function tracer (which has\nbeen solved by renaming the function tracer).\n\nThis patch changes the select to the approriate TRACING.\n\nThis patch should fix compile errors on architectures that do not define\nthe FUNCTION_TRACER.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ea31e72d753e5817a97de552f152d0cb55c7defc",
      "tree": "a709254a0cd46c764f69649153de26b1d1233082",
      "parents": [
        "f66af459a931f25807e1df7915b2b66bb5978d82"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Oct 22 19:26:23 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 27 16:47:13 2008 +0100"
      },
      "message": "tracing/ftrace: make boot tracer select the sched_switch tracer\n\nImpact: build fix\n\nIf the boot tracer is selected but not the sched_switch,\nthere will be a build failure:\n\n kernel/built-in.o: In function `boot_trace_init\u0027:\n trace_boot.c:(.text+0x5ee38): undefined reference to `sched_switch_trace\u0027\n kernel/built-in.o: In function `disable_boot_trace\u0027:\n (.text+0x5eee1): undefined reference to `tracing_stop_cmdline_record\u0027\n kernel/built-in.o: In function `enable_boot_trace\u0027:\n (.text+0x5ef11): undefined reference to `tracing_start_cmdline_record\u0027\n\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": "17d80fd07d35ae1d231b3378ee4f00ace54f9d31",
      "tree": "db09cfdb86d3bbced3a32588decabcb87ca02d19",
      "parents": [
        "debfcaf93ed500a051489db6646d71f29fe86a68"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "peterz@infradead.org",
        "time": "Tue Oct 21 16:31:18 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Oct 22 09:08:56 2008 +0200"
      },
      "message": "tracing: create tracers menu\n\nWe seem to have plenty tracers, lets create a menu and not clutter\nthe already cluttered debug menu more.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Frédéric Weisbecker \u003cfweisbec@gmail.com\u003e\nAcked-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "606576ce816603d9fe1fb453a88bc6eea16ca709",
      "tree": "7c6844ff4d75f249df49e9e5fe97062d301c3a1f",
      "parents": [
        "c2db8054c1eaf99983d8deee347876b01c26c2cf"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Oct 06 19:06:12 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 20 18:27:03 2008 +0200"
      },
      "message": "ftrace: rename FTRACE to FUNCTION_TRACER\n\nDue to confusion between the ftrace infrastructure and the gcc profiling\ntracer \"ftrace\", this patch renames the config options from FTRACE to\nFUNCTION_TRACER.  The other two names that are offspring from FTRACE\nDYNAMIC_FTRACE and FTRACE_MCOUNT_RECORD will stay the same.\n\nThis patch was generated mostly by script, and partially by hand.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c2db8054c1eaf99983d8deee347876b01c26c2cf",
      "tree": "43bbc93ce51ddf3110513ff711b7f21afd8954f5",
      "parents": [
        "bd95b88d9e51fcbf392a7e90338a8fcc3499cbd6"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Oct 06 19:06:11 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 20 18:27:02 2008 +0200"
      },
      "message": "ftrace: fix depends\n\nA lot of tracers have HAVE_FTRACE as a dependent config where it\nreally should not. The HAVE_FTRACE is a misnomer (soon to be fixed)\nand describes if the architecture has the function tracer (mcount)\nimplemented. The ftrace infrastructure is implemented in all archs.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "98d9c66ab07471006fd7910cb16453581c41a3e7",
      "tree": "0f970a85c75df95e4c84ab81d4df88dac7cf016b",
      "parents": [
        "4519d9e54dcd273975ad0adebad2a08c20428029"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 14:27:20 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 14:27:20 2008 +0200"
      },
      "message": "tracing/fastboot: improve help text\n\nImprove the help text of the boot tracer.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4519d9e54dcd273975ad0adebad2a08c20428029",
      "tree": "b106b3a33908d2ca91c80efa54b60d9b1bd87df9",
      "parents": [
        "07d1890420cce95c577736e4d67f70cbd39845fe"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 14:15:43 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 14:15:43 2008 +0200"
      },
      "message": "tracing/stacktrace: improve help text\n\nImprove the help text that is displayed for CONFIG_STACK_TRACER.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7a8e76a3829f1067b70f715771ff88baf2fbf3c3",
      "tree": "71126d4ad6f89abd00cac688318aff14323a96bb",
      "parents": [
        "5aa60c6073456812251caf9177cb921b2de68f77"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Mon Sep 29 23:02:38 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:38:54 2008 +0200"
      },
      "message": "tracing: unified trace buffer\n\nThis is a unified tracing buffer that implements a ring buffer that\nhopefully everyone will eventually be able to use.\n\nThe events recorded into the buffer have the following structure:\n\n  struct ring_buffer_event {\n\tu32 type:2, len:3, time_delta:27;\n\tu32 array[];\n  };\n\nThe minimum size of an event is 8 bytes. All events are 4 byte\naligned inside the buffer.\n\nThere are 4 types (all internal use for the ring buffer, only\nthe data type is exported to the interface users).\n\n RINGBUF_TYPE_PADDING: this type is used to note extra space at the end\n\tof a buffer page.\n\n RINGBUF_TYPE_TIME_EXTENT: This type is used when the time between events\n\tis greater than the 27 bit delta can hold. We add another\n\t32 bits, and record that in its own event (8 byte size).\n\n RINGBUF_TYPE_TIME_STAMP: (Not implemented yet). This will hold data to\n\thelp keep the buffer timestamps in sync.\n\nRINGBUF_TYPE_DATA: The event actually holds user data.\n\nThe \"len\" field is only three bits. Since the data must be\n4 byte aligned, this field is shifted left by 2, giving a\nmax length of 28 bytes. If the data load is greater than 28\nbytes, the first array field holds the full length of the\ndata load and the len field is set to zero.\n\nExample, data size of 7 bytes:\n\n\ttype \u003d RINGBUF_TYPE_DATA\n\tlen \u003d 2\n\ttime_delta: \u003ctime-stamp\u003e - \u003cprev_event-time-stamp\u003e\n\tarray[0..1]: \u003c7 bytes of data\u003e \u003c1 byte empty\u003e\n\nThis event is saved in 12 bytes of the buffer.\n\nAn event with 82 bytes of data:\n\n\ttype \u003d RINGBUF_TYPE_DATA\n\tlen \u003d 0\n\ttime_delta: \u003ctime-stamp\u003e - \u003cprev_event-time-stamp\u003e\n\tarray[0]: 84 (Note the alignment)\n\tarray[1..14]: \u003c82 bytes of data\u003e \u003c2 bytes empty\u003e\n\nThe above event is saved in 92 bytes (if my math is correct).\n82 bytes of data, 2 bytes empty, 4 byte header, 4 byte length.\n\nDo not reference the above event struct directly. Use the following\nfunctions to gain access to the event table, since the\nring_buffer_event structure may change in the future.\n\nring_buffer_event_length(event): get the length of the event.\n\tThis is the size of the memory used to record this\n\tevent, and not the size of the data pay load.\n\nring_buffer_time_delta(event): get the time delta of the event\n\tThis returns the delta time stamp since the last event.\n\tNote: Even though this is in the header, there should\n\t\tbe no reason to access this directly, accept\n\t\tfor debugging.\n\nring_buffer_event_data(event): get the data from the event\n\tThis is the function to use to get the actual data\n\tfrom the event. Note, it is only a pointer to the\n\tdata inside the buffer. This data must be copied to\n\tanother location otherwise you risk it being written\n\tover in the buffer.\n\nring_buffer_lock: A way to lock the entire buffer.\nring_buffer_unlock: unlock the buffer.\n\nring_buffer_alloc: create a new ring buffer. Can choose between\n\toverwrite or consumer/producer mode. Overwrite will\n\toverwrite old data, where as consumer producer will\n\tthrow away new data if the consumer catches up with the\n\tproducer.  The consumer/producer is the default.\n\nring_buffer_free: free the ring buffer.\n\nring_buffer_resize: resize the buffer. Changes the size of each cpu\n\tbuffer. Note, it is up to the caller to provide that\n\tthe buffer is not being used while this is happening.\n\tThis requirement may go away but do not count on it.\n\nring_buffer_lock_reserve: locks the ring buffer and allocates an\n\tentry on the buffer to write to.\nring_buffer_unlock_commit: unlocks the ring buffer and commits it to\n\tthe buffer.\n\nring_buffer_write: writes some data into the ring buffer.\n\nring_buffer_peek: Look at a next item in the cpu buffer.\nring_buffer_consume: get the next item in the cpu buffer and\n\tconsume it. That is, this function increments the head\n\tpointer.\n\nring_buffer_read_start: Start an iterator of a cpu buffer.\n\tFor now, this disables the cpu buffer, until you issue\n\ta finish. This is just because we do not want the iterator\n\tto be overwritten. This restriction may change in the future.\n\tBut note, this is used for static reading of a buffer which\n\tis usually done \"after\" a trace. Live readings would want\n\tto use the ring_buffer_consume above, which will not\n\tdisable the ring buffer.\n\nring_buffer_read_finish: Finishes the read iterator and reenables\n\tthe ring buffer.\n\nring_buffer_iter_peek: Look at the next item in the cpu iterator.\nring_buffer_read: Read the iterator and increment it.\nring_buffer_iter_reset: Reset the iterator to point to the beginning\n\tof the cpu buffer.\nring_buffer_iter_empty: Returns true if the iterator is at the end\n\tof the cpu buffer.\n\nring_buffer_size: returns the size in bytes of each cpu buffer.\n\tNote, the real size is this times the number of CPUs.\n\nring_buffer_reset_cpu: Sets the cpu buffer to empty\nring_buffer_reset: sets all cpu buffers to empty\n\nring_buffer_swap_cpu: swaps a cpu buffer from one buffer with a\n\tcpu buffer of another buffer. This is handy when you\n\twant to take a snap shot of a running trace on just one\n\tcpu. Having a backup buffer, to swap with facilitates this.\n\tFtrace max latencies use this.\n\nring_buffer_empty: Returns true if the ring buffer is empty.\nring_buffer_empty_cpu: Returns true if the cpu buffer is empty.\n\nring_buffer_record_disable: disable all cpu buffers (read only)\nring_buffer_record_disable_cpu: disable a single cpu buffer (read only)\nring_buffer_record_enable: enable all cpu buffers.\nring_buffer_record_enabl_cpu: enable a single cpu buffer.\n\nring_buffer_entries: The number of entries in a ring buffer.\nring_buffer_overruns: The number of entries removed due to writing wrap.\n\nring_buffer_time_stamp: Get the time stamp used by the ring buffer\nring_buffer_normalize_time_stamp: normalize the ring buffer time stamp\n\tinto nanosecs.\n\nI still need to implement the GTOD feature. But we need support from\nthe cpu frequency infrastructure.  But this can be done at a later\ntime without affecting the ring buffer interface.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3ce2b9200da8b7170cc7463b7ee4212fad7b291e",
      "tree": "8e9e05fb3e5282e199ee9953205504a8ded54d02",
      "parents": [
        "3bf77af6e1fef1124bf71d81f9f84885f0ee0dea"
      ],
      "author": {
        "name": "Frédéric Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Wed Sep 24 10:36:09 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:38:51 2008 +0200"
      },
      "message": "ftrace/fastboot: disable tracers self-tests when boot tracer is selected\n\nThe tracing engine resets the ring buffer and the tracers touch it\ntoo during self-tests. These self-tests happen during tracers registering\nand work against boot tracing which is logging initcalls.\n\nWe have to disable tracing self-tests if the boot-tracer is selected.\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "1f5c2abbdeb2bb07b20c6a66bfecefe6c867b1ee",
      "tree": "0ba861c8817994f3c46446368b806f54c037b09d",
      "parents": [
        "b5ad384e79add1d87fff54070000dadcf218ffab"
      ],
      "author": {
        "name": "Frédéric Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Sep 23 11:36:20 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:38:49 2008 +0200"
      },
      "message": "tracing/ftrace: give an entry on the config for boot tracer\n\nBring the entry to choose the boot tracer on the kernel config.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2a3a4f669df2164288d11406d11d5e4933bf5e53",
      "tree": "cbcab61ae346f24731b52c706a3650978a95aba3",
      "parents": [
        "35cb5ed01261f5669657d2f1720aca902299887d"
      ],
      "author": {
        "name": "Frédéric Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Sun Sep 21 20:12:14 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:38:06 2008 +0200"
      },
      "message": "tracing/ftrace: tracing engine depends on Nop Tracer\n\nNow that the nop tracer is used as the default tracer by\nreplacing the \"none\" tracer, tracing engine depends on it.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: Steven Noonan \u003csteven@uplinklabs.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "fb1b6d8b5154c692172a424e45fbd0573295cb93",
      "tree": "d9a7ad2c629a6133998402354e77cd721e4962b4",
      "parents": [
        "5bf9a1ee350a10feb94107de32a203d81fbbe706"
      ],
      "author": {
        "name": "Steven Noonan",
        "email": "steven@uplinklabs.net",
        "time": "Fri Sep 19 03:06:43 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:37:43 2008 +0200"
      },
      "message": "ftrace: add nop tracer\n\nA no-op tracer which can serve two purposes:\n\n 1. A template for development of a new tracer.\n 2. A convenient way to see ftrace_printk() calls without\n    an irrelevant trace making the output messy.\n\n[ mingo@elte.hu: resolved conflicts ]\nSigned-off-by: Steven Noonan \u003csteven@uplinklabs.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d3ee6d992821f471193a7ee7a00af9ebb4bf5d01",
      "tree": "4dbd9712266848c101f249c9df7840ba784b5a31",
      "parents": [
        "80b5e940050c273ba277acbf3a9fbc1d4441e681"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Sep 04 14:04:51 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:36:51 2008 +0200"
      },
      "message": "ftrace: make it depend on DEBUG_KERNEL\n\nmake most of the tracers depend on DEBUG_KERNEL - that\u0027s their intended\npurpose. (most distributions have DEBUG_KERNEL enabled anyway so this is\nnot a practical limitation - but it simplifies the tracing menu in the\nnormal case)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "2ff01c6a17391225a18256d510b6e5b4aba40aa1",
      "tree": "9645990cbdcf5009c6b901de1004c3369e44c1aa",
      "parents": [
        "1b6cced6ec9677fa65471e890dfdcb4bf5387643"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Sep 04 15:04:37 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:36:31 2008 +0200"
      },
      "message": "stack tracer: depends on DEBUG_KERNEL\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e5a81b629ea8feb9e7530cfac35cfb41c45facf3",
      "tree": "71437955371e0913521d4ddb02db974df9fd8d34",
      "parents": [
        "b3a320417484a6d6b9d28098944df58341353992"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Aug 27 23:31:01 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:36:19 2008 +0200"
      },
      "message": "ftrace: add stack tracer\n\nThis is another tracer using the ftrace infrastructure, that examines\nat each function call the size of the stack. If the stack use is greater\nthan the previous max it is recorded.\n\nYou can always see (and set) the max stack size seen. By setting it\nto zero will start the recording again. The backtrace is also available.\n\nFor example:\n\n# cat /debug/tracing/stack_max_size\n1856\n\n# cat /debug/tracing/stack_trace\n[\u003cc027764d\u003e] stack_trace_call+0x8f/0x101\n[\u003cc021b966\u003e] ftrace_call+0x5/0x8\n[\u003cc02553cc\u003e] clocksource_get_next+0x12/0x48\n[\u003cc02542a5\u003e] update_wall_time+0x538/0x6d1\n[\u003cc0245913\u003e] do_timer+0x23/0xb0\n[\u003cc0257657\u003e] tick_do_update_jiffies64+0xd9/0xf1\n[\u003cc02576b9\u003e] tick_sched_timer+0x4a/0xad\n[\u003cc0250fe6\u003e] __run_hrtimer+0x3e/0x75\n[\u003cc02518ed\u003e] hrtimer_interrupt+0xf1/0x154\n[\u003cc022c870\u003e] smp_apic_timer_interrupt+0x71/0x84\n[\u003cc021b7e9\u003e] apic_timer_interrupt+0x2d/0x34\n[\u003cc0238597\u003e] finish_task_switch+0x29/0xa0\n[\u003cc05abd13\u003e] schedule+0x765/0x7be\n[\u003cc05abfca\u003e] schedule_timeout+0x1b/0x90\n[\u003cc05ab4d4\u003e] wait_for_common+0xab/0x101\n[\u003cc05ab5ac\u003e] wait_for_completion+0x12/0x14\n[\u003cc033cfc3\u003e] blk_execute_rq+0x84/0x99\n[\u003cc0402470\u003e] scsi_execute+0xc2/0x105\n[\u003cc040250a\u003e] scsi_execute_req+0x57/0x7f\n[\u003cc043afe0\u003e] sr_test_unit_ready+0x3e/0x97\n[\u003cc043bbd6\u003e] sr_media_change+0x43/0x205\n[\u003cc046b59f\u003e] media_changed+0x48/0x77\n[\u003cc046b5ff\u003e] cdrom_media_changed+0x31/0x37\n[\u003cc043b091\u003e] sr_block_media_changed+0x16/0x18\n[\u003cc02b9e69\u003e] check_disk_change+0x1b/0x63\n[\u003cc046f4c3\u003e] cdrom_open+0x7a1/0x806\n[\u003cc043b148\u003e] sr_block_open+0x78/0x8d\n[\u003cc02ba4c0\u003e] do_open+0x90/0x257\n[\u003cc02ba869\u003e] blkdev_open+0x2d/0x56\n[\u003cc0296a1f\u003e] __dentry_open+0x14d/0x23c\n[\u003cc0296b32\u003e] nameidata_to_filp+0x24/0x38\n[\u003cc02a1c68\u003e] do_filp_open+0x347/0x626\n[\u003cc02967ef\u003e] do_sys_open+0x47/0xbc\n[\u003cc02968b0\u003e] sys_open+0x23/0x2b\n[\u003cc021aadd\u003e] sysenter_do_call+0x12/0x26\n\nI\u0027ve tested this on both x86_64 and i386.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "8da3821ba5634497da63d58a69e24a97697c4a2b",
      "tree": "47d4d097b1cd2aafae2e3596a9ae0d1293228782",
      "parents": [
        "8b1fa1d7b22f386747c7b78b918d4c680c16066f"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Thu Aug 14 15:45:07 2008 -0400"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:34:40 2008 +0200"
      },
      "message": "ftrace: create __mcount_loc section\n\nThis patch creates a section in the kernel called \"__mcount_loc\".\nThis will hold a list of pointers to the mcount relocation for\neach call site of mcount.\n\nFor example:\n\nobjdump -dr init/main.o\n[...]\nDisassembly of section .text:\n\n0000000000000000 \u003cdo_one_initcall\u003e:\n   0:   55                      push   %rbp\n[...]\n000000000000017b \u003cinit_post\u003e:\n 17b:   55                      push   %rbp\n 17c:   48 89 e5                mov    %rsp,%rbp\n 17f:   53                      push   %rbx\n 180:   48 83 ec 08             sub    $0x8,%rsp\n 184:   e8 00 00 00 00          callq  189 \u003cinit_post+0xe\u003e\n                        185: R_X86_64_PC32      mcount+0xfffffffffffffffc\n[...]\n\nWe will add a section to point to each function call.\n\n   .section __mcount_loc,\"a\",@progbits\n[...]\n   .quad .text + 0x185\n[...]\n\nThe offset to of the mcount call site in init_post is an offset from\nthe start of the section, and not the start of the function init_post.\nThe mcount relocation is at the call site 0x185 from the start of the\n.text section.\n\n  .text + 0x185  \u003d\u003d init_post + 0xa\n\nWe need a way to add this __mcount_loc section in a way that we do not\nlose the relocations after final link.  The .text section here will\nbe attached to all other .text sections after final link and the\noffsets will be meaningless.  We need to keep track of where these\n.text sections are.\n\nTo do this, we use the start of the first function in the section.\ndo_one_initcall.  We can make a tmp.s file with this function as a reference\nto the start of the .text section.\n\n   .section __mcount_loc,\"a\",@progbits\n[...]\n   .quad do_one_initcall + 0x185\n[...]\n\nThen we can compile the tmp.s into a tmp.o\n\n  gcc -c tmp.s -o tmp.o\n\nAnd link it into back into main.o.\n\n  ld -r main.o tmp.o -o tmp_main.o\n  mv tmp_main.o main.o\n\nBut we have a problem.  What happens if the first function in a section\nis not exported, and is a static function. The linker will not let\nthe tmp.o use it.  This case exists in main.o as well.\n\nDisassembly of section .init.text:\n\n0000000000000000 \u003cset_reset_devices\u003e:\n   0:   55                      push   %rbp\n   1:   48 89 e5                mov    %rsp,%rbp\n   4:   e8 00 00 00 00          callq  9 \u003cset_reset_devices+0x9\u003e\n                        5: R_X86_64_PC32        mcount+0xfffffffffffffffc\n\nThe first function in .init.text is a static function.\n\n00000000000000a8 t __setup_set_reset_devices\n000000000000105f t __setup_str_set_reset_devices\n0000000000000000 t set_reset_devices\n\nThe lowercase \u0027t\u0027 means that set_reset_devices is local and is not exported.\nIf we simply try to link the tmp.o with the set_reset_devices we end\nup with two symbols: one local and one global.\n\n .section __mcount_loc,\"a\",@progbits\n .quad set_reset_devices + 0x10\n\n00000000000000a8 t __setup_set_reset_devices\n000000000000105f t __setup_str_set_reset_devices\n0000000000000000 t set_reset_devices\n                 U set_reset_devices\n\nWe still have an undefined reference to set_reset_devices, and if we try\nto compile the kernel, we will end up with an undefined reference to\nset_reset_devices, or even worst, it could be exported someplace else,\nand then we will have a reference to the wrong location.\n\nTo handle this case, we make an intermediate step using objcopy.\nWe convert set_reset_devices into a global exported symbol before linking\nit with tmp.o and set it back afterwards.\n\n00000000000000a8 t __setup_set_reset_devices\n000000000000105f t __setup_str_set_reset_devices\n0000000000000000 T set_reset_devices\n\n00000000000000a8 t __setup_set_reset_devices\n000000000000105f t __setup_str_set_reset_devices\n0000000000000000 T set_reset_devices\n\n00000000000000a8 t __setup_set_reset_devices\n000000000000105f t __setup_str_set_reset_devices\n0000000000000000 t set_reset_devices\n\nNow we have a section in main.o called __mcount_loc that we can place\nsomewhere in the kernel using vmlinux.ld.S and access it to convert\nall these locations that call mcount into nops before starting SMP\nand thus, eliminating the need to do this with kstop_machine.\n\nNote, A well documented perl script (scripts/recordmcount.pl) is used\nto do all this in one location.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "5f87f1121895dc09d2d1c1db5f14af6aa4ce3e94",
      "tree": "4b8354ab2dc0890d0d4c91d42ff9e13db50ebeab",
      "parents": [
        "cf569a932217b97e2fc2c48aa597fe29519a0cff"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Jul 23 14:15:22 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 14 10:33:32 2008 +0200"
      },
      "message": "tracing: clean up tracepoints kconfig structure\n\ndo not expose users to CONFIG_TRACEPOINTS - tracers can select it\njust fine.\n\nupdate ftrace to select CONFIG_TRACEPOINTS.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4d2df795f0c3eb91f97a666f47716121a2f166ed",
      "tree": "3eec35f76966ff456c6069ddabeb630afbe66a8a",
      "parents": [
        "cf3271a73b612a03da00681ecd9bfefab37c74c9"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat May 24 15:00:46 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat May 24 15:00:46 2008 +0200"
      },
      "message": "sysprof: make it depend on X86\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "5fc4511c756860149b81aead6eca5bdf5c438ea7",
      "tree": "5d4e2239badd3d43f03155fa4ab1ad7b7e7837b0",
      "parents": [
        "9caee613d3b860ae81b79370eeae9ac967c07536"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 23:58:21 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 23:58:21 2008 +0200"
      },
      "message": "ftrace: make it more available in the Kconfig\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "ef4ab15ff34fd9c65e92bee70f58e7179da881c5",
      "tree": "6d0ed3900e7095aa60f74cc5e0cb54f8efb54c1e",
      "parents": [
        "842af315e8b0adad58fc642eaa5e6f53525e0534"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 12 21:20:48 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 23:40:01 2008 +0200"
      },
      "message": "ftrace: make sysprof dependent on x86 for now\n\nthat\u0027s the only tested platform for now. If there\u0027s interest we\ncan make it generic easily.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "f06c38103ea9dbca27c3f4d77f444ddefb5477cd",
      "tree": "9452cf51a1acb2a2019d1680668d051370b08981",
      "parents": [
        "677aa9f77e8de3791b481a0cec6c8b84d1eec626"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 12 21:20:47 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 23:39:00 2008 +0200"
      },
      "message": "ftrace: add sysprof plugin\n\nvery first baby version.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "677aa9f77e8de3791b481a0cec6c8b84d1eec626",
      "tree": "4a3cdc6b1653231af31f045dcbaebb806a04d78d",
      "parents": [
        "7fa09f24b477ad41b821713eba757b3aa7a2864a"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Sat May 17 00:01:36 2008 -0400"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 22:49:18 2008 +0200"
      },
      "message": "ftrace: add have dynamic ftrace config for archs\n\nNow that ftrace is being ported to other architectures, it has become\napparent that DYNAMIC_FTRACE is dependent on whether or not that\narchitecture implements dynamic ftrace. FTRACE itself may be ported to\nan architecture without porting dynamic ftrace.\n\nThis patch adds HAVE_DYNAMIC_FTRACE to allow architectures to port ftrace\nwithout having to also port the dynamic aspect as well.\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": "c1d2327b36f2261ffa8ff7227321ba900c7eee7f",
      "tree": "2d09d1fe2e07c097b18c2573bd03189cffa82e71",
      "parents": [
        "1d09daa55d2e9bab7e7d30f0d05e5a7bc60b2a4a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 12 21:20:55 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 21:15:29 2008 +0200"
      },
      "message": "ftrace: restrict tracing to HAVE_FTRACE architectures\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "694379e9ed4f2f6babe111bf001c69e2e263338b",
      "tree": "9ce5695c9e650c802b23096d6fe58c0fe626538e",
      "parents": [
        "5429db2d26a59903c81a4f6c6dae7eb9daaea5fc"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon May 12 21:20:54 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 21:12:26 2008 +0200"
      },
      "message": "ftrace: make it more available in the Kconfig\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "86387f7ee5d3273ff4859e2c64ce656639b6ca65",
      "tree": "d2080c680e9e9415dfa99bb8408302584035e664",
      "parents": [
        "57422797dc009fc83766bcf230d29dbe6e08e21e"
      ],
      "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 21:04:20 2008 +0200"
      },
      "message": "ftrace: add stack tracing\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "60a11774b38fef1ab90b18c5353bd1c7c4d311c8",
      "tree": "e2a6fd066b0dba6dcd776d07383e2932055cf66a",
      "parents": [
        "e1c08bdd9fa73e44096e5a82c0d5928b04ab02c8"
      ],
      "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:36 2008 +0200"
      },
      "message": "ftrace: add self-tests\n\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": "6cd8a4bb2f97527a9ceb30bc77ea4e959c6a95e3",
      "tree": "845af8f3c7f8956b4f3591759a0d67248af243a2",
      "parents": [
        "81d68a96a39844853b37f20cc8282d9b65b78ef3"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:32:54 2008 +0200"
      },
      "message": "ftrace: trace preempt off critical timings\n\nAdd preempt off timings. A lot of kernel core code is taken from the RT patch\nlatency trace that was written by Ingo Molnar.\n\nThis adds \"preemptoff\" and \"preemptirqsoff\" to /debugfs/tracing/available_tracers\n\nNow instead of just tracing irqs off, preemption off can be selected\nto be recorded.\n\nWhen this is selected, it shares the same files as irqs off timings.\nOne can either trace preemption off, irqs off, or one or the other off.\n\nBy echoing \"preemptoff\" into /debugfs/tracing/current_tracer, recording\nof preempt off only is performed. \"irqsoff\" will only record the time\nirqs are disabled, but \"preemptirqsoff\" will take the total time irqs\nor preemption are disabled. Runtime switching of these options is now\nsupported by simpling echoing in the appropriate trace name into\n/debugfs/tracing/current_tracer.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "81d68a96a39844853b37f20cc8282d9b65b78ef3",
      "tree": "bbc05f415930c15fb5a1004620bd77585fcec43a",
      "parents": [
        "352ad25aa4a189c667cb2af333948d34692a2d27"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:32:46 2008 +0200"
      },
      "message": "ftrace: trace irq disabled critical timings\n\nThis patch adds latency tracing for critical timings\n(how long interrupts are disabled for).\n\n \"irqsoff\" is added to /debugfs/tracing/available_tracers\n\nNote:\n  tracing_max_latency\n    also holds the max latency for irqsoff (in usecs).\n   (default to large number so one must start latency tracing)\n\n  tracing_thresh\n    threshold (in usecs) to always print out if irqs off\n    is detected to be longer than stated here.\n    If irq_thresh is non-zero, then max_irq_latency\n    is ignored.\n\nHere\u0027s an example of a trace with ftrace_enabled \u003d 0\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\npreemption latency trace v1.1.5 on 2.6.24-rc7\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n--------------------------------------------------------------------\n latency: 100 us, #3/3, CPU#1 | (M:rt VP:0, KP:0, SP:0 HP:0 #P:2)\n    -----------------\n    | task: swapper-0 (uid:0 nice:0 policy:0 rt_prio:0)\n    -----------------\n \u003d\u003e started at: _spin_lock_irqsave+0x2a/0xb7\n \u003d\u003e ended at:   _spin_unlock_irqrestore+0x32/0x5f\n\n                 _------\u003d\u003e CPU#\n                / _-----\u003d\u003e irqs-off\n               | / _----\u003d\u003e need-resched\n               || / _---\u003d\u003e hardirq/softirq\n               ||| / _--\u003d\u003e preempt-depth\n               |||| /\n               |||||     delay\n   cmd     pid ||||| time  |   caller\n      \\   /    |||||   \\   |   /\n swapper-0     1d.s3    0us+: _spin_lock_irqsave+0x2a/0xb7 (e1000_update_stats+0x47/0x64c [e1000])\n swapper-0     1d.s3  100us : _spin_unlock_irqrestore+0x32/0x5f (e1000_update_stats+0x641/0x64c [e1000])\n swapper-0     1d.s3  100us : trace_hardirqs_on_caller+0x75/0x89 (_spin_unlock_irqrestore+0x32/0x5f)\n\nvim:ft\u003dhelp\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nAnd this is a trace with ftrace_enabled \u003d\u003d 1\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\npreemption latency trace v1.1.5 on 2.6.24-rc7\n--------------------------------------------------------------------\n latency: 102 us, #12/12, CPU#1 | (M:rt VP:0, KP:0, SP:0 HP:0 #P:2)\n    -----------------\n    | task: swapper-0 (uid:0 nice:0 policy:0 rt_prio:0)\n    -----------------\n \u003d\u003e started at: _spin_lock_irqsave+0x2a/0xb7\n \u003d\u003e ended at:   _spin_unlock_irqrestore+0x32/0x5f\n\n                 _------\u003d\u003e CPU#\n                / _-----\u003d\u003e irqs-off\n               | / _----\u003d\u003e need-resched\n               || / _---\u003d\u003e hardirq/softirq\n               ||| / _--\u003d\u003e preempt-depth\n               |||| /\n               |||||     delay\n   cmd     pid ||||| time  |   caller\n      \\   /    |||||   \\   |   /\n swapper-0     1dNs3    0us+: _spin_lock_irqsave+0x2a/0xb7 (e1000_update_stats+0x47/0x64c [e1000])\n swapper-0     1dNs3   46us : e1000_read_phy_reg+0x16/0x225 [e1000] (e1000_update_stats+0x5e2/0x64c [e1000])\n swapper-0     1dNs3   46us : e1000_swfw_sync_acquire+0x10/0x99 [e1000] (e1000_read_phy_reg+0x49/0x225 [e1000])\n swapper-0     1dNs3   46us : e1000_get_hw_eeprom_semaphore+0x12/0xa6 [e1000] (e1000_swfw_sync_acquire+0x36/0x99 [e1000])\n swapper-0     1dNs3   47us : __const_udelay+0x9/0x47 (e1000_read_phy_reg+0x116/0x225 [e1000])\n swapper-0     1dNs3   47us+: __delay+0x9/0x50 (__const_udelay+0x45/0x47)\n swapper-0     1dNs3   97us : preempt_schedule+0xc/0x84 (__delay+0x4e/0x50)\n swapper-0     1dNs3   98us : e1000_swfw_sync_release+0xc/0x55 [e1000] (e1000_read_phy_reg+0x211/0x225 [e1000])\n swapper-0     1dNs3   99us+: e1000_put_hw_eeprom_semaphore+0x9/0x35 [e1000] (e1000_swfw_sync_release+0x50/0x55 [e1000])\n swapper-0     1dNs3  101us : _spin_unlock_irqrestore+0xe/0x5f (e1000_update_stats+0x641/0x64c [e1000])\n swapper-0     1dNs3  102us : _spin_unlock_irqrestore+0x32/0x5f (e1000_update_stats+0x641/0x64c [e1000])\n swapper-0     1dNs3  102us : trace_hardirqs_on_caller+0x75/0x89 (_spin_unlock_irqrestore+0x32/0x5f)\n\nvim:ft\u003dhelp\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "352ad25aa4a189c667cb2af333948d34692a2d27",
      "tree": "83a11c626b3818711d3b88061964c9ea603f7b68",
      "parents": [
        "35e8e302e5d6e32675df2fc1dd3a53dfa6630dc1"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:32:36 2008 +0200"
      },
      "message": "ftrace: tracer for scheduler wakeup latency\n\nThis patch adds the tracer that tracks the wakeup latency of the\nhighest priority waking task.\n\n  \"wakeup\" is added to /debugfs/tracing/available_tracers\n\nAlso added to /debugfs/tracing\n\n  tracing_max_latency\n     holds the current max latency for the wakeup\n\n  wakeup_thresh\n     if set to other than zero, a log will be recorded\n     for every wakeup that takes longer than the number\n     entered in here (usecs for all counters)\n     (deletes previous trace)\n\nExamples:\n\n  (with ftrace_enabled \u003d 0)\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\npreemption latency trace v1.1.5 on 2.6.24-rc8\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n--------------------------------------------------------------------\n latency: 26 us, #2/2, CPU#1 | (M:rt VP:0, KP:0, SP:0 HP:0 #P:2)\n    -----------------\n    | task: migration/0-3 (uid:0 nice:-5 policy:1 rt_prio:99)\n    -----------------\n\n                 _------\u003d\u003e CPU#\n                / _-----\u003d\u003e irqs-off\n               | / _----\u003d\u003e need-resched\n               || / _---\u003d\u003e hardirq/softirq\n               ||| / _--\u003d\u003e preempt-depth\n               |||| /\n               |||||     delay\n   cmd     pid ||||| time  |   caller\n      \\   /    |||||   \\   |   /\n   quilt-8551  0d..3    0us+: wake_up_process+0x15/0x17 \u003cffffffff80233e80\u003e (sched_exec+0xc9/0x100 \u003cffffffff80235343\u003e)\n   quilt-8551  0d..4   26us : sched_switch_callback+0x73/0x81 \u003cffffffff80338d2f\u003e (schedule+0x483/0x6d5 \u003cffffffff8048b3ee\u003e)\n\nvim:ft\u003dhelp\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n  (with ftrace_enabled \u003d 1)\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\npreemption latency trace v1.1.5 on 2.6.24-rc8\n--------------------------------------------------------------------\n latency: 36 us, #45/45, CPU#0 | (M:rt VP:0, KP:0, SP:0 HP:0 #P:2)\n    -----------------\n    | task: migration/1-5 (uid:0 nice:-5 policy:1 rt_prio:99)\n    -----------------\n\n                 _------\u003d\u003e CPU#\n                / _-----\u003d\u003e irqs-off\n               | / _----\u003d\u003e need-resched\n               || / _---\u003d\u003e hardirq/softirq\n               ||| / _--\u003d\u003e preempt-depth\n               |||| /\n               |||||     delay\n   cmd     pid ||||| time  |   caller\n      \\   /    |||||   \\   |   /\n    bash-10653 1d..3    0us : wake_up_process+0x15/0x17 \u003cffffffff80233e80\u003e (sched_exec+0xc9/0x100 \u003cffffffff80235343\u003e)\n    bash-10653 1d..3    1us : try_to_wake_up+0x271/0x2e7 \u003cffffffff80233dcf\u003e (sub_preempt_count+0xc/0x7a \u003cffffffff8023309e\u003e)\n    bash-10653 1d..2    2us : try_to_wake_up+0x296/0x2e7 \u003cffffffff80233df4\u003e (update_rq_clock+0x9/0x20 \u003cffffffff802303f3\u003e)\n    bash-10653 1d..2    2us : update_rq_clock+0x1e/0x20 \u003cffffffff80230408\u003e (__update_rq_clock+0xc/0x90 \u003cffffffff80230366\u003e)\n    bash-10653 1d..2    3us : __update_rq_clock+0x1b/0x90 \u003cffffffff80230375\u003e (sched_clock+0x9/0x29 \u003cffffffff80214529\u003e)\n    bash-10653 1d..2    4us : try_to_wake_up+0x2a6/0x2e7 \u003cffffffff80233e04\u003e (activate_task+0xc/0x3f \u003cffffffff8022ffca\u003e)\n    bash-10653 1d..2    4us : activate_task+0x2d/0x3f \u003cffffffff8022ffeb\u003e (enqueue_task+0xe/0x66 \u003cffffffff8022ff66\u003e)\n    bash-10653 1d..2    5us : enqueue_task+0x5b/0x66 \u003cffffffff8022ffb3\u003e (enqueue_task_rt+0x9/0x3c \u003cffffffff80233351\u003e)\n    bash-10653 1d..2    6us : try_to_wake_up+0x2ba/0x2e7 \u003cffffffff80233e18\u003e (check_preempt_wakeup+0x12/0x99 \u003cffffffff80234f84\u003e)\n[...]\n    bash-10653 1d..5   33us : tracing_record_cmdline+0xcf/0xd4 \u003cffffffff80338aad\u003e (_spin_unlock+0x9/0x33 \u003cffffffff8048d3ec\u003e)\n    bash-10653 1d..5   34us : _spin_unlock+0x19/0x33 \u003cffffffff8048d3fc\u003e (sub_preempt_count+0xc/0x7a \u003cffffffff8023309e\u003e)\n    bash-10653 1d..4   35us : wakeup_sched_switch+0x65/0x2ff \u003cffffffff80339f66\u003e (_spin_lock_irqsave+0xc/0xa9 \u003cffffffff8048d08b\u003e)\n    bash-10653 1d..4   35us : _spin_lock_irqsave+0x19/0xa9 \u003cffffffff8048d098\u003e (add_preempt_count+0xe/0x77 \u003cffffffff8023311a\u003e)\n    bash-10653 1d..4   36us : sched_switch_callback+0x73/0x81 \u003cffffffff80338d2f\u003e (schedule+0x483/0x6d5 \u003cffffffff8048b3ee\u003e)\n\nvim:ft\u003dhelp\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nThe [...] was added here to not waste your email box space.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "35e8e302e5d6e32675df2fc1dd3a53dfa6630dc1",
      "tree": "5b5b503666d882bbb4d805b7b20b4f3b11d2c40e",
      "parents": [
        "1b29b01887e6032dcaf818c14999c7a39593b4e7"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:32:27 2008 +0200"
      },
      "message": "ftrace: add tracing of context switches\n\nThis patch adds context switch tracing, of the format of:\n\n                  _------\u003d\u003e CPU#\n                 / _-----\u003d\u003e irqs-off\n                | / _----\u003d\u003e need-resched\n                || / _---\u003d\u003e hardirq/softirq\n                ||| / _--\u003d\u003e preempt-depth\n                |||| /\n                |||||     delay\n    cmd     pid ||||| time  |      pid:prio:state\n       \\   /    |||||   \\   |      /\n  swapper-0     1d..3    137us+:  0:140:R --\u003e 2912:120\n     sshd-2912  1d..3    216us+:  2912:120:S --\u003e 0:140\n  swapper-0     1d..3    261us+:  0:140:R --\u003e 2912:120\n     bash-2920  0d..3    267us+:  2920:120:S --\u003e 0:140\n     sshd-2912  1d..3    330us!:  2912:120:S --\u003e 0:140\n  swapper-0     1d..3   2389us+:  0:140:R --\u003e 2847:120\n yum-upda-2847  1d..3   2411us!:  2847:120:S --\u003e 0:140\n  swapper-0     0d..3  11089us+:  0:140:R --\u003e 3139:120\n gdm-bina-3139  0d..3  11113us!:  3139:120:S --\u003e 0:140\n  swapper-0     1d..3 102328us+:  0:140:R --\u003e 2847:120\n yum-upda-2847  1d..3 102348us!:  2847:120:S --\u003e 0:140\n\n \"sched_switch\" is added to /debugfs/tracing/available_tracers\n\n[ Eugene Teo \u003ceugeneteo@kernel.sg: remove unused tracing_sched_switch_enabled ]\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nCc: Mathieu Desnoyers \u003cmathieu.desnoyers@polymtl.ca\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "1b29b01887e6032dcaf818c14999c7a39593b4e7",
      "tree": "6bcef64d5a7822b0f259a52b852af8cade6b3468",
      "parents": [
        "bc0c38d139ec7fcd5c030aea16b008f3732e42ac"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:32:13 2008 +0200"
      },
      "message": "ftrace: function tracer\n\nThis is a simple trace that uses the ftrace infrastructure. It is\ndesigned to be fast and small, and easy to use. It is useful to\nrecord things that happen over a very short period of time, and\nnot to analyze the system in general.\n\n Updates:\n\n  available_tracers\n     \"function\" is added to this file.\n\n  current_tracer\n    To enable the function tracer:\n\n      echo function \u003e /debugfs/tracing/current_tracer\n\n     To disable the tracer:\n\n       echo disable \u003e /debugfs/tracing/current_tracer\n\nThe output of the function_trace file is as follows\n\n  \"echo noverbose \u003e /debugfs/tracing/iter_ctrl\"\n\npreemption latency trace v1.1.5 on 2.6.24-rc7-tst\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n--------------------------------------------------------------------\n latency: 0 us, #419428/4361791, CPU#1 | (M:desktop VP:0, KP:0, SP:0 HP:0 #P:4)\n    -----------------\n    | task: -0 (uid:0 nice:0 policy:0 rt_prio:0)\n    -----------------\n\n                 _------\u003d\u003e CPU#\n                / _-----\u003d\u003e irqs-off\n               | / _----\u003d\u003e need-resched\n               || / _---\u003d\u003e hardirq/softirq\n               ||| / _--\u003d\u003e preempt-depth\n               |||| /\n               |||||     delay\n   cmd     pid ||||| time  |   caller\n      \\   /    |||||   \\   |   /\n swapper-0     0d.h. 1595128us+: set_normalized_timespec+0x8/0x2d \u003cc043841d\u003e (ktime_get_ts+0x4a/0x4e \u003cc04499d4\u003e)\n swapper-0     0d.h. 1595131us+: _spin_lock+0x8/0x18 \u003cc0630690\u003e (hrtimer_interrupt+0x6e/0x1b0 \u003cc0449c56\u003e)\n\nOr with verbose turned on:\n\n  \"echo verbose \u003e /debugfs/tracing/iter_ctrl\"\n\npreemption latency trace v1.1.5 on 2.6.24-rc7-tst\n--------------------------------------------------------------------\n latency: 0 us, #419428/4361791, CPU#1 | (M:desktop VP:0, KP:0, SP:0 HP:0 #P:4)\n    -----------------\n    | task: -0 (uid:0 nice:0 policy:0 rt_prio:0)\n    -----------------\n\n         swapper     0 0 9 00000000 00000000 [f3675f41] 1595.128ms (+0.003ms): set_normalized_timespec+0x8/0x2d \u003cc043841d\u003e (ktime_get_ts+0x4a/0x4e \u003cc04499d4\u003e)\n         swapper     0 0 9 00000000 00000001 [f3675f45] 1595.131ms (+0.003ms): _spin_lock+0x8/0x18 \u003cc0630690\u003e (hrtimer_interrupt+0x6e/0x1b0 \u003cc0449c56\u003e)\n         swapper     0 0 9 00000000 00000002 [f3675f48] 1595.135ms (+0.003ms): _spin_lock+0x8/0x18 \u003cc0630690\u003e (hrtimer_interrupt+0x6e/0x1b0 \u003cc0449c56\u003e)\n\nThe \"trace\" file is not affected by the verbose mode, but is by the symonly.\n\n echo \"nosymonly\" \u003e /debugfs/tracing/iter_ctrl\n\ntracer:\n[   81.479967] CPU 0: bash:3154 register_ftrace_function+0x5f/0x66 \u003cffffffff80337a4d\u003e \u003c-- _spin_unlock_irqrestore+0xe/0x5a \u003cffffffff8048cc8f\u003e\n[   81.479967] CPU 0: bash:3154 _spin_unlock_irqrestore+0x3e/0x5a \u003cffffffff8048ccbf\u003e \u003c-- sub_preempt_count+0xc/0x7a \u003cffffffff80233d7b\u003e\n[   81.479968] CPU 0: bash:3154 sub_preempt_count+0x30/0x7a \u003cffffffff80233d9f\u003e \u003c-- in_lock_functions+0x9/0x24 \u003cffffffff8025a75d\u003e\n[   81.479968] CPU 0: bash:3154 vfs_write+0x11d/0x155 \u003cffffffff8029a043\u003e \u003c-- dnotify_parent+0x12/0x78 \u003cffffffff802d54fb\u003e\n[   81.479968] CPU 0: bash:3154 dnotify_parent+0x2d/0x78 \u003cffffffff802d5516\u003e \u003c-- _spin_lock+0xe/0x70 \u003cffffffff8048c910\u003e\n[   81.479969] CPU 0: bash:3154 _spin_lock+0x1b/0x70 \u003cffffffff8048c91d\u003e \u003c-- add_preempt_count+0xe/0x77 \u003cffffffff80233df7\u003e\n[   81.479969] CPU 0: bash:3154 add_preempt_count+0x3e/0x77 \u003cffffffff80233e27\u003e \u003c-- in_lock_functions+0x9/0x24 \u003cffffffff8025a75d\u003e\n\n echo \"symonly\" \u003e /debugfs/tracing/iter_ctrl\n\ntracer:\n[   81.479913] CPU 0: bash:3154 register_ftrace_function+0x5f/0x66 \u003c-- _spin_unlock_irqrestore+0xe/0x5a\n[   81.479913] CPU 0: bash:3154 _spin_unlock_irqrestore+0x3e/0x5a \u003c-- sub_preempt_count+0xc/0x7a\n[   81.479913] CPU 0: bash:3154 sub_preempt_count+0x30/0x7a \u003c-- in_lock_functions+0x9/0x24\n[   81.479914] CPU 0: bash:3154 vfs_write+0x11d/0x155 \u003c-- dnotify_parent+0x12/0x78\n[   81.479914] CPU 0: bash:3154 dnotify_parent+0x2d/0x78 \u003c-- _spin_lock+0xe/0x70\n[   81.479914] CPU 0: bash:3154 _spin_lock+0x1b/0x70 \u003c-- add_preempt_count+0xe/0x77\n[   81.479914] CPU 0: bash:3154 add_preempt_count+0x3e/0x77 \u003c-- in_lock_functions+0x9/0x24\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "bc0c38d139ec7fcd5c030aea16b008f3732e42ac",
      "tree": "adaaf5e2ca49bbd7025bc357f87df9cb47641022",
      "parents": [
        "16444a8a40d4c7b4f6de34af0cae1f76a4f6c901"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:32:06 2008 +0200"
      },
      "message": "ftrace: latency tracer infrastructure\n\nThis patch adds the latency tracer infrastructure. This patch\ndoes not add anything that will select and turn it on, but will\nbe used by later patches.\n\nIf it were to be compiled, it would add the following files\nto the debugfs:\n\n The root tracing directory:\n\n  /debugfs/tracing/\n\nThis patch also adds the following files:\n\n  available_tracers\n     list of available tracers. Currently no tracers are\n     available. Looking into this file only shows\n     \"none\" which is used to unregister all tracers.\n\n  current_tracer\n     The trace that is currently active. Empty on start up.\n     To switch to a tracer simply echo one of the tracers that\n     are listed in available_tracers:\n\n   example: (used with later patches)\n\n      echo function \u003e /debugfs/tracing/current_tracer\n\n     To disable the tracer:\n\n       echo disable \u003e /debugfs/tracing/current_tracer\n\n  tracing_enabled\n     echoing \"1\" into this file starts the ftrace function tracing\n      (if sysctl kernel.ftrace_enabled\u003d1)\n     echoing \"0\" turns it off.\n\n  latency_trace\n      This file is readonly and holds the result of the trace.\n\n  trace\n      This file outputs a easier to read version of the trace.\n\n  iter_ctrl\n      Controls the way the output of traces look.\n      So far there\u0027s two controls:\n        echoing in \"symonly\" will only show the kallsyms variables\n            without the addresses (if kallsyms was configured)\n        echoing in \"verbose\" will change the output to show\n            a lot more data, but not very easy to understand by\n            humans.\n        echoing in \"nosymonly\" turns off symonly.\n        echoing in \"noverbose\" turns off verbose.\n\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "16444a8a40d4c7b4f6de34af0cae1f76a4f6c901",
      "tree": "9c290bcdbdc1ecf8f578c30b3b36914e14fdaacc",
      "parents": [
        "6e766410c4babd37bc7cd5e25009c179781742c8"
      ],
      "author": {
        "name": "Arnaldo Carvalho de Melo",
        "email": "acme@ghostprotocols.net",
        "time": "Mon May 12 21:20:42 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri May 23 20:31:58 2008 +0200"
      },
      "message": "ftrace: add basic support for gcc profiler instrumentation\n\nIf CONFIG_FTRACE is selected and /proc/sys/kernel/ftrace_enabled is\nset to a non-zero value the ftrace routine will be called everytime\nwe enter a kernel function that is not marked with the \"notrace\"\nattribute.\n\nThe ftrace routine will then call a registered function if a function\nhappens to be registered.\n\n[ This code has been highly hacked by Steven Rostedt and Ingo Molnar,\n  so don\u0027t blame Arnaldo for all of this ;-) ]\n\nUpdate:\n  It is now possible to register more than one ftrace function.\n  If only one ftrace function is registered, that will be the\n  function that ftrace calls directly. If more than one function\n  is registered, then ftrace will call a function that will loop\n  through the functions to call.\n\nSigned-off-by: Arnaldo Carvalho de Melo \u003cacme@ghostprotocols.net\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    }
  ]
}
