)]}'
{
  "log": [
    {
      "commit": "234e340582901211f40d8c732afc49f0630ecf05",
      "tree": "753076500dfd883b3db56d4f5410af31d8945623",
      "parents": [
        "9b3ae64be658a573b33d05a8dc73b08d3345fa44"
      ],
      "author": {
        "name": "Stephen Boyd",
        "email": "sboyd@codeaurora.org",
        "time": "Thu Apr 05 14:25:11 2012 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 05 15:25:50 2012 -0700"
      },
      "message": "simple_open: automatically convert to simple_open()\n\nMany users of debugfs copy the implementation of default_open() when\nthey want to support a custom read/write function op.  This leads to a\nproliferation of the default_open() implementation across the entire\ntree.\n\nNow that the common implementation has been consolidated into libfs we\ncan replace all the users of this function with simple_open().\n\nThis replacement was done with the following semantic patch:\n\n\u003csmpl\u003e\n@ open @\nidentifier open_f !\u003d simple_open;\nidentifier i, f;\n@@\n-int open_f(struct inode *i, struct file *f)\n-{\n(\n-if (i-\u003ei_private)\n-f-\u003eprivate_data \u003d i-\u003ei_private;\n|\n-f-\u003eprivate_data \u003d i-\u003ei_private;\n)\n-return 0;\n-}\n\n@ has_open depends on open @\nidentifier fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...\n-.open \u003d open_f,\n+.open \u003d simple_open,\n...\n};\n\u003c/smpl\u003e\n\n[akpm@linux-foundation.org: checkpatch fixes]\nSigned-off-by: Stephen Boyd \u003csboyd@codeaurora.org\u003e\nCc: Greg Kroah-Hartman \u003cgregkh@linuxfoundation.org\u003e\nCc: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\nCc: Julia Lawall \u003cJulia.Lawall@lip6.fr\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "318ceed088497d1ca839b1172518ac4cc7096b82",
      "tree": "7dfd07bfb5e8c5d5dbb0ba4ea523f334c98c66bb",
      "parents": [
        "ca85c07809ca19de3391cb79ee1198f3dd91fa8d"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Feb 12 22:08:01 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:37 2012 -0400"
      },
      "message": "tidy up after d_make_root() conversion\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "48fde701aff662559b38d9a609574068f22d00fe",
      "tree": "aa6b203dc671b51d58575b65eb08310ff8309b60",
      "parents": [
        "6b4231e2f92adbcf96fb2a3fa751d7ca0a61b21f"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jan 08 22:15:13 2012 -0500"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Tue Mar 20 21:29:35 2012 -0400"
      },
      "message": "switch open-coded instances of d_make_root() to new helper\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "35b740e4662ef386f0c60e1b60aaf5b44db9914c",
      "tree": "502a8f9499bc1b4cb3300d666dab2d01a1921224",
      "parents": [
        "423d091dfe58d3109d84c408810a7cfa82f6f184",
        "9e183426bfb52bb44bf3c443d6587e4d02478603"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 06 08:02:58 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 06 08:02:58 2012 -0800"
      },
      "message": "Merge branch \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip\n\n* \u0027perf-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (106 commits)\n  perf kvm: Fix copy \u0026 paste error in description\n  perf script: Kill script_spec__delete\n  perf top: Fix a memory leak\n  perf stat: Introduce get_ratio_color() helper\n  perf session: Remove impossible condition check\n  perf tools: Fix feature-bits rework fallout, remove unused variable\n  perf script: Add generic perl handler to process events\n  perf tools: Use for_each_set_bit() to iterate over feature flags\n  perf tools: Unify handling of features when writing feature section\n  perf report: Accept fifos as input file\n  perf tools: Moving code in some files\n  perf tools: Fix out-of-bound access to struct perf_session\n  perf tools: Continue processing header on unknown features\n  perf tools: Improve macros for struct feature_ops\n  perf: builtin-record: Document and check that mmap_pages must be a power of two.\n  perf: builtin-record: Provide advice if mmap\u0027ing fails with EPERM.\n  perf tools: Fix truncated annotation\n  perf script: look up thread using tid instead of pid\n  perf tools: Look up thread names for system wide profiling\n  perf tools: Fix comm for processes with named threads\n  ...\n"
    },
    {
      "commit": "124ba9403318d834ef21bcd899c22c870708d2c4",
      "tree": "2ac84214085de8780dfa565be7e3ef0d675f6a68",
      "parents": [
        "74eec26facadbe6dbc0621bc862892c915c4534f",
        "dd3c4670d7fafeb18bf7542fbcfd2606fb06a4a1"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 20 12:10:29 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Dec 20 12:10:29 2011 +0100"
      },
      "message": "Merge branch \u0027for-tip\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile into perf/core\n"
    },
    {
      "commit": "913050b91eb94f194392dd797b1ff3779f606ac0",
      "tree": "bcb861e17dc40875ef0f694641392b7177f04852",
      "parents": [
        "497f16f21a04060098c0da6ed522fbcafb90c0db"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Dec 19 16:38:30 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Dec 19 17:18:43 2011 +0100"
      },
      "message": "oprofile: Fix uninitialized memory access when writing to writing to oprofilefs\n\nIf oprofilefs_ulong_from_user() is called with count equals\nzero, *val remains unchanged. Depending on the implementation it\nmight be uninitialized.\n\nChange oprofilefs_ulong_from_user()\u0027s interface to return count\non success. Thus, we are able to return early if count equals\nzero which avoids using *val uninitialized. Fixing all users of\noprofilefs_ulong_ from_user().\n\nThis follows write syscall implementation when count is zero:\n\"If count is zero ... [and if] no errors are detected, 0 will be\nreturned without causing any other effect.\" (man 2 write)\n\nReported-By: Mike Waychison \u003cmikew@google.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nCc: \u003cstable@vger.kernel.org\u003e\nCc: oprofile-list \u003coprofile-list@lists.sourceforge.net\u003e\nLink: http://lkml.kernel.org/r/20111219153830.GH16765@erda.amd.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f8c852031a383ac260ae37df7ad063d42d0ed271",
      "tree": "f2cad20309acdaab383e8cc7261804b15afc0d37",
      "parents": [
        "de346b6949063aa040ef607943b072835294f4b3"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Dec 07 11:16:38 2011 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Dec 07 11:16:38 2011 +0100"
      },
      "message": "oprofile: Fix oprofile_timer_exit() breakage\n\nRemoving remainings of oprofile_timer_exit() completly.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "c23205c8488f11cb9ebe7a7b5851a1d8a0171011",
      "tree": "239dd82daddb1ce08b50ea9145d8f2a4685ebead",
      "parents": [
        "5d81e5cfb37a174e8ddc0413e2e70cdf05807ace",
        "de346b6949063aa040ef607943b072835294f4b3"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 15 11:05:18 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 15 11:05:18 2011 +0100"
      },
      "message": "Merge branch \u0027core\u0027 of git://amd64.org/linux/rric into perf/core\n"
    },
    {
      "commit": "4a1dba72384193753e44e15d9d05a50be6587271",
      "tree": "a4fc4caa6a11413463b59d8521b67e3cb3926320",
      "parents": [
        "ed13ec58bfe0d5dc95f748e6118432cb0fa283cb",
        "97f7f8189fe54e3cfe324ef9ad35064f3d2d3bff"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 15 11:03:30 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Nov 15 11:03:30 2011 +0100"
      },
      "message": "Merge branch \u0027urgent\u0027 of git://amd64.org/linux/rric into perf/urgent\n"
    },
    {
      "commit": "dcfce4a095932e6e95d83ad982be3609947963bc",
      "tree": "2808b7cbdb57deab25cc1cd847fd0f9ffa058f92",
      "parents": [
        "75c43a20b220f885c39ffa7cdbbb1191e257a9a9"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue Oct 11 17:11:08 2011 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Nov 04 16:27:18 2011 +0100"
      },
      "message": "oprofile, x86: Reimplement nmi timer mode using perf event\n\nThe legacy x86 nmi watchdog code was removed with the implementation\nof the perf based nmi watchdog. This broke Oprofile\u0027s nmi timer\nmode. To run nmi timer mode we relied on a continuous ticking nmi\nsource which the nmi watchdog provided. The nmi tick was no longer\navailable and current watchdog can not be used anymore since it runs\nwith very long periods in the range of seconds. This patch\nreimplements the nmi timer mode using a perf counter nmi source.\n\nV2:\n* removing pr_info()\n* fix undefined reference to `__udivdi3\u0027 for 32 bit build\n* fix section mismatch of .cpuinit.data:nmi_timer_cpu_nb\n* removed nmi timer setup in arch/x86\n* implemented function stubs for op_nmi_init/exit()\n* made code more readable in oprofile_init()\n\nV3:\n* fix architectural initialization in oprofile_init()\n* fix CONFIG_OPROFILE_NMI_TIMER dependencies\n\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "75c43a20b220f885c39ffa7cdbbb1191e257a9a9",
      "tree": "a623847b0235f618438b03785b4860a80e0d4b1b",
      "parents": [
        "159a80b2142df709416ab369113de7d511c48331"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 14 15:46:10 2011 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Nov 04 15:04:35 2011 +0100"
      },
      "message": "oprofile: Remove exit function for timer mode\n\nRemove exit functions by moving init/exit code to oprofile\u0027s setup/\nshutdown functions. Doing so the oprofile module exit code will be\neasier and less error-prone.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "87121ca504fd1d963a66b3fb0c72054b0fd9a177",
      "tree": "789b9c8a7ea7b92d5359aa59653dd394bdec3710",
      "parents": [
        "4167ab90ee6a2c029855db53d1631c84a213f3d1"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 07 16:31:46 2011 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Nov 04 15:04:33 2011 +0100"
      },
      "message": "oprofile: Fix crash when unloading module (hr timer mode)\n\nOprofile may crash in a KVM guest while unlaoding modules. This\nhappens if oprofile_arch_init() fails and oprofile switches to the hr\ntimer mode as a fallback. In this case oprofile_arch_exit() is called,\nbut it never was initialized properly which causes the crash. This\npatch fixes this.\n\noprofile: using timer interrupt.\nBUG: unable to handle kernel NULL pointer dereference at 0000000000000008\nIP: [\u003cffffffff8123c226\u003e] unregister_syscore_ops+0x41/0x58\nPGD 41da3f067 PUD 41d80e067 PMD 0\nOops: 0002 [#1] PREEMPT SMP\nCPU 5\nModules linked in: oprofile(-)\n\nPid: 2382, comm: modprobe Not tainted 3.1.0-rc7-00018-g709a39d #18 Advanced Micro Device Anaheim/Anaheim\nRIP: 0010:[\u003cffffffff8123c226\u003e]  [\u003cffffffff8123c226\u003e] unregister_syscore_ops+0x41/0x58\nRSP: 0018:ffff88041de1de98  EFLAGS: 00010296\nRAX: 0000000000000000 RBX: ffffffffa00060e0 RCX: dead000000200200\nRDX: 0000000000000000 RSI: dead000000100100 RDI: ffffffff8178c620\nRBP: ffff88041de1dea8 R08: 0000000000000001 R09: 0000000000000082\nR10: 0000000000000000 R11: ffff88041de1dde8 R12: 0000000000000080\nR13: fffffffffffffff5 R14: 0000000000000001 R15: 0000000000610210\nFS:  00007f9ae5bef700(0000) GS:ffff88042fd40000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b\nCR2: 0000000000000008 CR3: 000000041ca44000 CR4: 00000000000006e0\nDR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000\nDR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400\nProcess modprobe (pid: 2382, threadinfo ffff88041de1c000, task ffff88042db6d040)\nStack:\n ffff88041de1deb8 ffffffffa0006770 ffff88041de1deb8 ffffffffa000251e\n ffff88041de1dec8 ffffffffa00022c2 ffff88041de1ded8 ffffffffa0004993\n ffff88041de1df78 ffffffff81073115 656c69666f72706f 0000000000610200\nCall Trace:\n [\u003cffffffffa000251e\u003e] op_nmi_exit+0x15/0x17 [oprofile]\n [\u003cffffffffa00022c2\u003e] oprofile_arch_exit+0xe/0x10 [oprofile]\n [\u003cffffffffa0004993\u003e] oprofile_exit+0x13/0x15 [oprofile]\n [\u003cffffffff81073115\u003e] sys_delete_module+0x1c3/0x22f\n [\u003cffffffff811bf09e\u003e] ? trace_hardirqs_on_thunk+0x3a/0x3f\n [\u003cffffffff8148070b\u003e] system_call_fastpath+0x16/0x1b\nCode: 20 c6 78 81 e8 c5 cc 23 00 48 8b 13 48 8b 43 08 48 be 00 01 10 00 00 00 ad de 48 b9 00 02 20 00 00 00 ad de 48 c7 c7 20 c6 78 81\n 89 42 08 48 89 10 48 89 33 48 89 4b 08 e8 a6 c0 23 00 5a 5b\nRIP  [\u003cffffffff8123c226\u003e] unregister_syscore_ops+0x41/0x58\n RSP \u003cffff88041de1de98\u003e\nCR2: 0000000000000008\n---[ end trace 06d4e95b6aa3b437 ]---\n\nCC: stable@kernel.org # 2.6.37+\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "2d21a29fb62f142b8a62496700d8d82a6a8fd783",
      "tree": "78d83ed47a72b1e31ecadb3f77e91f865b407b48",
      "parents": [
        "6b2c1800f1d3a608af952cfbd57f8f1a71c5d9b4"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Sat Jul 25 16:18:34 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 13 11:12:05 2011 +0200"
      },
      "message": "locking, oprofile: Annotate oprofilefs lock as raw\n\nThe oprofilefs_lock can be taken in atomic context (in profiling\ninterrupts) and therefore cannot cannot be preempted on -rt -\nannotate it.\n\nIn mainline this change documents the low level nature of\nthe lock - otherwise there\u0027s no functional difference. Lockdep\nand Sparse checking will work as usual.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "60063497a95e716c9a689af3be2687d261f115b4",
      "tree": "6ce0d68db76982c53df46aee5f29f944ebf2c320",
      "parents": [
        "148817ba092f9f6edd35bad3c6c6b8e8f90fe2ed"
      ],
      "author": {
        "name": "Arun Sharma",
        "email": "asharma@fb.com",
        "time": "Tue Jul 26 16:09:06 2011 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Jul 26 16:49:47 2011 -0700"
      },
      "message": "atomic: use \u003clinux/atomic.h\u003e\n\nThis allows us to move duplicated code in \u003casm/atomic.h\u003e\n(atomic_inc_not_zero() for now) to \u003clinux/atomic.h\u003e\n\nSigned-off-by: Arun Sharma \u003casharma@fb.com\u003e\nReviewed-by: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: David Miller \u003cdavem@davemloft.net\u003e\nCc: Eric Dumazet \u003ceric.dumazet@gmail.com\u003e\nAcked-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "7fcfd1abd6480d3b9ef17f5759c175e036e835cf",
      "tree": "1207684bb61efd16be56ba09b1e7dcbbae022c5f",
      "parents": [
        "1ac2e6ca44e13a087eb7438d284f887097ee7e84"
      ],
      "author": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Fri Jul 08 18:34:42 2011 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jul 21 20:41:58 2011 +0200"
      },
      "message": "perf: Remove the nmi parameter from the oprofile_perf backend\n\nIn commit a8b0ca17b80e (\"perf: Remove the nmi parameter from the\nswevent and overflow interface\") one site was overlooked.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/20110708173442.GB31972@e102144-lin.cambridge.arm.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4dc0da86967d5463708631d02a70cfed5b104884",
      "tree": "e09071a62f2457b710ff69df3be1bff39340a4c6",
      "parents": [
        "89d6c0b5bdbb1927775584dcf532d98b3efe1477"
      ],
      "author": {
        "name": "Avi Kivity",
        "email": "avi@redhat.com",
        "time": "Wed Jun 29 18:42:35 2011 +0300"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 01 11:06:38 2011 +0200"
      },
      "message": "perf: Add context field to perf_event\n\nThe perf_event overflow handler does not receive any caller-derived\nargument, so many callers need to resort to looking up the perf_event\nin their local data structure.  This is ugly and doesn\u0027t scale if a\nsingle callback services many perf_events.\n\nFix by adding a context parameter to perf_event_create_kernel_counter()\n(and derived hardware breakpoints APIs) and storing it in the perf_event.\nThe field can be accessed from the callback as event-\u003eoverflow_handler_context.\nAll callers are updated.\n\nSigned-off-by: Avi Kivity \u003cavi@redhat.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLink: http://lkml.kernel.org/r/1309362157-6596-2-git-send-email-avi@redhat.com\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "130c5ce716c9bfd1c2a2ec840a746eb7ff9ce1e6",
      "tree": "9d5ae217dd7236c73c12ee1bed9111ad6782acab",
      "parents": [
        "6ac6519b93065625119a347be1cbcc1b89edb773"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Thu May 26 18:39:35 2011 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue May 31 16:33:34 2011 +0200"
      },
      "message": "oprofile: Fix locking dependency in sync_start()\n\nThis fixes the A-\u003eB/B-\u003eA locking dependency, see the warning below.\n\nThe function task_exit_notify() is called with (task_exit_notifier)\n.rwsem set and then calls sync_buffer() which locks buffer_mutex. In\nsync_start() the buffer_mutex was set to prevent notifier functions to\nbe started before sync_start() is finished. But when registering the\nnotifier, (task_exit_notifier).rwsem is locked too, but now in\ndifferent order than in sync_buffer(). In theory this causes a locking\ndependency, what does not occur in practice since task_exit_notify()\nis always called after the notifier is registered which means the lock\nis already released.\n\nHowever, after checking the notifier functions it turned out the\nbuffer_mutex in sync_start() is unnecessary. This is because\nsync_buffer() may be called from the notifiers even if sync_start()\ndid not finish yet, the buffers are already allocated but empty. No\nneed to protect this with the mutex.\n\nSo we fix this theoretical locking dependency by removing buffer_mutex\nin sync_start(). This is similar to the implementation before commit:\n\n 750d857 oprofile: fix crash when accessing freed task structs\n\nwhich introduced the locking dependency.\n\nLockdep warning:\n\noprofiled/4447 is trying to acquire lock:\n (buffer_mutex){+.+...}, at: [\u003cffffffffa0000e55\u003e] sync_buffer+0x31/0x3ec [oprofile]\n\nbut task is already holding lock:\n ((task_exit_notifier).rwsem){++++..}, at: [\u003cffffffff81058026\u003e] __blocking_notifier_call_chain+0x39/0x67\n\nwhich lock already depends on the new lock.\n\nthe existing dependency chain (in reverse order) is:\n\n-\u003e #1 ((task_exit_notifier).rwsem){++++..}:\n       [\u003cffffffff8106557f\u003e] lock_acquire+0xf8/0x11e\n       [\u003cffffffff81463a2b\u003e] down_write+0x44/0x67\n       [\u003cffffffff810581c0\u003e] blocking_notifier_chain_register+0x52/0x8b\n       [\u003cffffffff8105a6ac\u003e] profile_event_register+0x2d/0x2f\n       [\u003cffffffffa00013c1\u003e] sync_start+0x47/0xc6 [oprofile]\n       [\u003cffffffffa00001bb\u003e] oprofile_setup+0x60/0xa5 [oprofile]\n       [\u003cffffffffa00014e3\u003e] event_buffer_open+0x59/0x8c [oprofile]\n       [\u003cffffffff810cd3b9\u003e] __dentry_open+0x1eb/0x308\n       [\u003cffffffff810cd59d\u003e] nameidata_to_filp+0x60/0x67\n       [\u003cffffffff810daad6\u003e] do_last+0x5be/0x6b2\n       [\u003cffffffff810dbc33\u003e] path_openat+0xc7/0x360\n       [\u003cffffffff810dbfc5\u003e] do_filp_open+0x3d/0x8c\n       [\u003cffffffff810ccfd2\u003e] do_sys_open+0x110/0x1a9\n       [\u003cffffffff810cd09e\u003e] sys_open+0x20/0x22\n       [\u003cffffffff8146ad4b\u003e] system_call_fastpath+0x16/0x1b\n\n-\u003e #0 (buffer_mutex){+.+...}:\n       [\u003cffffffff81064dfb\u003e] __lock_acquire+0x1085/0x1711\n       [\u003cffffffff8106557f\u003e] lock_acquire+0xf8/0x11e\n       [\u003cffffffff814634f0\u003e] mutex_lock_nested+0x63/0x309\n       [\u003cffffffffa0000e55\u003e] sync_buffer+0x31/0x3ec [oprofile]\n       [\u003cffffffffa0001226\u003e] task_exit_notify+0x16/0x1a [oprofile]\n       [\u003cffffffff81467b96\u003e] notifier_call_chain+0x37/0x63\n       [\u003cffffffff8105803d\u003e] __blocking_notifier_call_chain+0x50/0x67\n       [\u003cffffffff81058068\u003e] blocking_notifier_call_chain+0x14/0x16\n       [\u003cffffffff8105a718\u003e] profile_task_exit+0x1a/0x1c\n       [\u003cffffffff81039e8f\u003e] do_exit+0x2a/0x6fc\n       [\u003cffffffff8103a5e4\u003e] do_group_exit+0x83/0xae\n       [\u003cffffffff8103a626\u003e] sys_exit_group+0x17/0x1b\n       [\u003cffffffff8146ad4b\u003e] system_call_fastpath+0x16/0x1b\n\nother info that might help us debug this:\n\n1 lock held by oprofiled/4447:\n #0:  ((task_exit_notifier).rwsem){++++..}, at: [\u003cffffffff81058026\u003e] __blocking_notifier_call_chain+0x39/0x67\n\nstack backtrace:\nPid: 4447, comm: oprofiled Not tainted 2.6.39-00007-gcf4d8d4 #10\nCall Trace:\n [\u003cffffffff81063193\u003e] print_circular_bug+0xae/0xbc\n [\u003cffffffff81064dfb\u003e] __lock_acquire+0x1085/0x1711\n [\u003cffffffffa0000e55\u003e] ? sync_buffer+0x31/0x3ec [oprofile]\n [\u003cffffffff8106557f\u003e] lock_acquire+0xf8/0x11e\n [\u003cffffffffa0000e55\u003e] ? sync_buffer+0x31/0x3ec [oprofile]\n [\u003cffffffff81062627\u003e] ? mark_lock+0x42f/0x552\n [\u003cffffffffa0000e55\u003e] ? sync_buffer+0x31/0x3ec [oprofile]\n [\u003cffffffff814634f0\u003e] mutex_lock_nested+0x63/0x309\n [\u003cffffffffa0000e55\u003e] ? sync_buffer+0x31/0x3ec [oprofile]\n [\u003cffffffffa0000e55\u003e] sync_buffer+0x31/0x3ec [oprofile]\n [\u003cffffffff81058026\u003e] ? __blocking_notifier_call_chain+0x39/0x67\n [\u003cffffffff81058026\u003e] ? __blocking_notifier_call_chain+0x39/0x67\n [\u003cffffffffa0001226\u003e] task_exit_notify+0x16/0x1a [oprofile]\n [\u003cffffffff81467b96\u003e] notifier_call_chain+0x37/0x63\n [\u003cffffffff8105803d\u003e] __blocking_notifier_call_chain+0x50/0x67\n [\u003cffffffff81058068\u003e] blocking_notifier_call_chain+0x14/0x16\n [\u003cffffffff8105a718\u003e] profile_task_exit+0x1a/0x1c\n [\u003cffffffff81039e8f\u003e] do_exit+0x2a/0x6fc\n [\u003cffffffff81465031\u003e] ? retint_swapgs+0xe/0x13\n [\u003cffffffff8103a5e4\u003e] do_group_exit+0x83/0xae\n [\u003cffffffff8103a626\u003e] sys_exit_group+0x17/0x1b\n [\u003cffffffff8146ad4b\u003e] system_call_fastpath+0x16/0x1b\n\nReported-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nCc: Carl Love \u003ccarll@us.ibm.com\u003e\nCc: \u003cstable@kernel.org\u003e # .36+\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "6ac6519b93065625119a347be1cbcc1b89edb773",
      "tree": "673965e52a026d00685e36105b45f74086c1f38c",
      "parents": [
        "cbf74cea070fa1f705de4712e25d9e56ae6543c7"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Thu May 26 18:22:54 2011 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue May 31 16:33:33 2011 +0200"
      },
      "message": "oprofile: Free potentially owned tasks in case of errors\n\nAfter registering the task free notifier we possibly have tasks in our\ndying_tasks list. Free them after unregistering the notifier in case\nof an error.\n\nCc: \u003cstable@kernel.org\u003e # .36+\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "b76a06e08d94b2a63e47837dfe46bbbf0a3af6c2",
      "tree": "aaee219bd932c807906d1159b3605f0b7efccc99",
      "parents": [
        "d819437156fd99da61d4e1402b2dbfc5cc472265"
      ],
      "author": {
        "name": "Anton Blanchard",
        "email": "anton@samba.org",
        "time": "Sun May 08 19:32:36 2011 -0400"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue May 24 12:45:59 2011 +0200"
      },
      "message": "oprofile: Use linux/mutex.h\n\nThe oprofile code is still including asm/mutex.h instead of\nlinux/mutex.h.\n\nSigned-off-by: Anton Blanchard \u003canton@samba.org\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "a0d76247e07abd14968adc4486aaa8e270e9c209",
      "tree": "bec9fa0f5a3c7b3d1f3c3032900d74f41941ed2d",
      "parents": [
        "997dbb4967da248808850c250182ef2528fff2d1"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Feb 11 17:31:44 2011 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue Feb 15 11:10:20 2011 +0100"
      },
      "message": "oprofile, s390: Rework hwsampler implementation\n\nThis patch is a rework of the hwsampler oprofile implementation that\nhas been applied recently. Now there are less non-architectural\nchanges. The only changes are:\n\n* introduction of oprofile_add_ext_hw_sample(), and\n* removal of section attributes of oprofile_timer_init/_exit().\n\nTo setup hwsampler for oprofile we need to modify start()/stop()\ncallbacks and additional hwsampler control files in oprofilefs. We do\nnot reinitialize the timer or hwsampler mode by restarting calling\ninit/exit() anymore, instead hwsampler_running is used to switch the\nmode directly in oprofile_hwsampler_start/_stop(). For locking reasons\nthere is also hwsampler_file that reflects the value in oprofilefs.\n\nThe overall diffstat of the oprofile s390 hwsampler implemenation\nshows the low impact to non-architectural code:\n\n arch/Kconfig                         |    3 +\n arch/s390/Kconfig                    |    1 +\n arch/s390/oprofile/Makefile          |    2 +-\n arch/s390/oprofile/hwsampler.c       | 1256 ++++++++++++++++++++++++++++++++++\n arch/s390/oprofile/hwsampler.h       |  113 +++\n arch/s390/oprofile/hwsampler_files.c |  162 +++++\n arch/s390/oprofile/init.c            |    6 +-\n drivers/oprofile/cpu_buffer.c        |   24 +-\n drivers/oprofile/timer_int.c         |    4 +-\n include/linux/oprofile.h             |    7 +\n 10 files changed, 1567 insertions(+), 11 deletions(-)\n\nAcked-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "997dbb4967da248808850c250182ef2528fff2d1",
      "tree": "b41497541383c2e569b629fbab09fb2280611965",
      "parents": [
        "ec6a3df1c008d9e8664e53b0363f6847c5c0dc3f"
      ],
      "author": {
        "name": "Heinz Graalfs",
        "email": "graalfs@linux.vnet.ibm.com",
        "time": "Fri Jan 21 10:06:53 2011 +0000"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue Feb 15 11:08:50 2011 +0100"
      },
      "message": "oprofile, s390: Enhance OProfile to support System zs hardware sampling feature\n\nOProfile is enhanced to export all files for controlling System z\u0027s\nhardware sampling, and to invoke hwsampler exported functions to\ninitialize and use System z\u0027s hardware sampling.\n\nThe patch invokes hwsampler_setup() during oprofile init and exports\nfollowing hwsampler files under oprofilefs if hwsampler\u0027s setup\nsucceeded:\n\nA new directory for hardware sampling based files\n\n /dev/oprofile/hwsampling/\n\nThe userland daemon must explicitly write to the following files\nto disable (or enable) hardware based sampling\n\n /dev/oprofile/hwsampling/hwsampler\n\nto modify the actual sampling rate\n\n /dev/oprofile/hwsampling/hw_interval\n\nto modify the amount of sampling memory (measured in 4K pages)\n\n /dev/oprofile/hwsampling/hw_sdbt_blocks\n\nThe following files are read only and show\nthe possible minimum sampling rate\n\n /dev/oprofile/hwsampling/hw_min_interval\n\nthe possible maximum sampling rate\n\n /dev/oprofile/hwsampling/hw_max_interval\n\nThe patch splits the oprofile_timer_[init/exit] function so that it\ncan be also called through user context (oprofilefs) to avoid kernel\noops.\n\nApplied with following changes:\n* whitespace changes in Makefile and timer_int.c\n\nSigned-off-by: Mahesh Salgaonkar \u003cmahesh@linux.vnet.ibm.com\u003e\nSigned-off-by: Maran Pakkirisamy \u003cmaranp@linux.vnet.ibm.com\u003e\nSigned-off-by: Heinz Graalfs \u003cgraalfs@linux.vnet.ibm.com\u003e\nAcked-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "54ebbe7ba51d97a28a9a406203d171d61858e4b9",
      "tree": "529982f17aa0aba84a310261be0773f68f4337b1",
      "parents": [
        "d14dd7e20d5e526557f5d3cfef4046a642f80924"
      ],
      "author": {
        "name": "Heinz Graalfs",
        "email": "graalfs@linux.vnet.ibm.com",
        "time": "Fri Jan 21 10:06:54 2011 +0000"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue Feb 15 11:07:07 2011 +0100"
      },
      "message": "oprofile: Introduce new oprofile sample add function (oprofile_add_ext_hw_sample)\n\nThis patch introduces a new oprofile sample add function\n(oprofile_add_ext_hw_sample) that can also take task_struct as an\nargument, which is used by the hwsampler kernel module when copying\nhardware samples to OProfile buffers.\n\nApplied with following changes:\n* removed #include \u003clinux/module.h\u003e\n* whitespace changes\n* removed conditional compilation (CONFIG_HAVE_HWSAMPLER)\n* modified order of functions\n* fix missing function definition in header file\n\nSigned-off-by: Mahesh Salgaonkar \u003cmahesh@linux.vnet.ibm.com\u003e\nSigned-off-by: Maran Pakkirisamy \u003cmaranp@linux.vnet.ibm.com\u003e\nSigned-off-by: Heinz Graalfs \u003cgraalfs@linux.vnet.ibm.com\u003e\nAcked-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "f02a38d86a14b6e544e218d806ffb0442785f62b",
      "tree": "84aace4aaf4b018c48f25ec2831888354baae16c",
      "parents": [
        "925d169f5b86fe57e2f5264ea574cce9a89b719d",
        "169ed55bd30305b933f52bfab32a58671d44ab68",
        "7b79462a20826a7269322113c68ca78d5f67c0bd"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 11:43:26 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Oct 30 11:43:26 2010 -0700"
      },
      "message": "Merge branches \u0027perf-fixes-for-linus\u0027 and \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027perf-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  jump label: Add work around to i386 gcc asm goto bug\n  x86, ftrace: Use safe noops, drop trap test\n  jump_label: Fix unaligned traps on sparc.\n  jump label: Make arch_jump_label_text_poke_early() optional\n  jump label: Fix error with preempt disable holding mutex\n  oprofile: Remove deprecated use of flush_scheduled_work()\n  oprofile: Fix the hang while taking the cpu offline\n  jump label: Fix deadlock b/w jump_label_mutex vs. text_mutex\n  jump label: Fix module __init section race\n\n* \u0027x86-fixes-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86: Check irq_remapped instead of remapping_enabled in destroy_irq()\n"
    },
    {
      "commit": "169ed55bd30305b933f52bfab32a58671d44ab68",
      "tree": "32e280957474f458901abfce16fa2a1687ef7497",
      "parents": [
        "3d7851b3cdd43a734e5cc4c643fd886ab28ad4d5",
        "45f81b1c96d9793e47ce925d257ea693ce0b193e"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Oct 30 10:43:08 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Oct 30 10:43:08 2010 +0200"
      },
      "message": "Merge branch \u0027tip/perf/jump-label-2\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-2.6-trace into perf/urgent\n"
    },
    {
      "commit": "3d7851b3cdd43a734e5cc4c643fd886ab28ad4d5",
      "tree": "c78750f357d78e226faa83d393b19e963dd85fa2",
      "parents": [
        "4ac3dbec800d93485a5c84e37af676278eea657c"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Fri Oct 15 09:51:08 2010 -0400"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 29 11:54:18 2010 +0200"
      },
      "message": "oprofile: Remove deprecated use of flush_scheduled_work()\n\nflush_scheduled_work() is deprecated and scheduled to be removed.\nsync_stop() currently cancels cpu_buffer works inside buffer_mutex and\nflushes the system workqueue outside.  Instead, split end_cpu_work()\ninto two parts - stopping further work enqueues and flushing works -\nand do the former inside buffer_mutex and latter outside.\n\nFor stable kernels v2.6.35.y and v2.6.36.y.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "4ac3dbec800d93485a5c84e37af676278eea657c",
      "tree": "aa1a3e7065ed3f40e880de786df9b8077b278e59",
      "parents": [
        "0b849ee88846e3488a34007c5b8b4249579ff159"
      ],
      "author": {
        "name": "Santosh Shilimkar",
        "email": "santosh.shilimkar@ti.com",
        "time": "Wed Oct 27 11:17:15 2010 -0400"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 29 11:52:53 2010 +0200"
      },
      "message": "oprofile: Fix the hang while taking the cpu offline\n\nThe kernel build with CONFIG_OPROFILE and CPU_HOTPLUG enabled.\nThe oprofile is initialised using system timer in absence of hardware\ncounters supports. Oprofile isn\u0027t started from userland.\n\nIn this setup while doing a CPU offline the kernel hangs in infinite\nfor loop inside lock_hrtimer_base() function\n\nThis happens because as part of oprofile_cpu_notify(, it tries to\nstop an hrtimer which was never started. These per-cpu hrtimers\nare started when the oprfile is started.\n\techo 1\t\u003e /dev/oprofile/enable\n\nThis problem also existwhen the cpu is booted with maxcpus parameter\nset. When bringing the remaining cpus online the timers are started\neven if oprofile is not yet enabled.\n\nThis patch fix this issue by adding a state variable so that\nthese hrtimer start/stop is only attempted when oprofile is\nstarted\n\nFor stable kernels v2.6.35.y and v2.6.36.y.\n\nReported-by: Jan Sebastien \u003cs-jan@ti.com\u003e\nTested-by: sricharan \u003cr.sricharan@ti.com\u003e\nSigned-off-by: Santosh Shilimkar \u003csantosh.shilimkar@ti.com\u003e\nCc: stable@kernel.org\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "fc14f2fef682df677d64a145256dbd263df2aa7b",
      "tree": "74f6b939fbad959a43c04ec646cd0adc8af5f53a",
      "parents": [
        "848b83a59b772b8f102bc5e3f1187c2fa5676959"
      ],
      "author": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Sun Jul 25 01:48:30 2010 +0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Fri Oct 29 04:16:28 2010 -0400"
      },
      "message": "convert get_sb_single() users\n\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "85fe4025c616a7c0ed07bc2fc8c5371b07f3888c",
      "tree": "7a5db7accb6192f2911f2473b4e3191227b914cc",
      "parents": [
        "f991bd2e14210fb93d722cb23e54991de20e8a3d"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Sat Oct 23 11:19:54 2010 -0400"
      },
      "committer": {
        "name": "Al Viro",
        "email": "viro@zeniv.linux.org.uk",
        "time": "Mon Oct 25 21:26:11 2010 -0400"
      },
      "message": "fs: do not assign default i_ino in new_inode\n\nInstead of always assigning an increasing inode number in new_inode\nmove the call to assign it into those callers that actually need it.\nFor now callers that need it is estimated conservatively, that is\nthe call is added to all filesystems that do not assign an i_ino\nby themselves.  For a few more filesystems we can avoid assigning\nany inode number given that they aren\u0027t user visible, and for others\nit could be done lazily when an inode number is actually needed,\nbut that\u0027s left for later patches.\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nSigned-off-by: Dave Chinner \u003cdchinner@redhat.com\u003e\nSigned-off-by: Al Viro \u003cviro@zeniv.linux.org.uk\u003e\n"
    },
    {
      "commit": "092e0e7e520a1fca03e13c9f2d157432a8657ff2",
      "tree": "451897252c4c08c4b5a8ef535da156f1e817e80b",
      "parents": [
        "79f14b7c56d3b3ba58f8b43d1f70b9b71477a800",
        "776c163b1b93c8dfa5edba885bc2bfbc2d228a5f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Oct 22 10:52:56 2010 -0700"
      },
      "message": "Merge branch \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl\n\n* \u0027llseek\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/arnd/bkl:\n  vfs: make no_llseek the default\n  vfs: don\u0027t use BKL in default_llseek\n  llseek: automatically add .llseek fop\n  libfs: use generic_file_llseek for simple_attr\n  mac80211: disallow seeks in minstrel debug code\n  lirc: make chardev nonseekable\n  viotape: use noop_llseek\n  raw: use explicit llseek file operations\n  ibmasmfs: use generic_file_llseek\n  spufs: use llseek in all file operations\n  arm/omap: use generic_file_llseek in iommu_debug\n  lkdtm: use generic_file_llseek in debugfs\n  net/wireless: use generic_file_llseek in debugfs\n  drm: use noop_llseek\n"
    },
    {
      "commit": "6038f373a3dc1f1c26496e60b6c40b164716f07e",
      "tree": "a0d3bbd026eea41b9fc36b8c722cbaf56cd9f825",
      "parents": [
        "1ec5584e3edf9c4bf2c88c846534d19cf986ba11"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Sun Aug 15 18:52:59 2010 +0200"
      },
      "committer": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Fri Oct 15 15:53:27 2010 +0200"
      },
      "message": "llseek: automatically add .llseek fop\n\nAll file_operations should get a .llseek operation so we can make\nnonseekable_open the default for future file operations without a\n.llseek pointer.\n\nThe three cases that we can automatically detect are no_llseek, seq_lseek\nand default_llseek. For cases where we can we can automatically prove that\nthe file offset is always ignored, we use noop_llseek, which maintains\nthe current behavior of not returning an error from a seek.\n\nNew drivers should normally not use noop_llseek but instead use no_llseek\nand call nonseekable_open at open time.  Existing drivers can be converted\nto do the same when the maintainer knows for certain that no user code\nrelies on calling seek on the device file.\n\nThe generated code is often incorrectly indented and right now contains\ncomments that clarify for each added line why a specific variant was\nchosen. In the version that gets submitted upstream, the comments will\nbe gone and I will manually fix the indentation, because there does not\nseem to be a way to do that using coccinelle.\n\nSome amount of new code is currently sitting in linux-next that should get\nthe same modifications, which I will do at the end of the merge window.\n\nMany thanks to Julia Lawall for helping me learn to write a semantic\npatch that does all this.\n\n\u003d\u003d\u003d\u003d\u003d begin semantic patch \u003d\u003d\u003d\u003d\u003d\n// This adds an llseek\u003d method to all file operations,\n// as a preparation for making no_llseek the default.\n//\n// The rules are\n// - use no_llseek explicitly if we do nonseekable_open\n// - use seq_lseek for sequential files\n// - use default_llseek if we know we access f_pos\n// - use noop_llseek if we know we don\u0027t access f_pos,\n//   but we still want to allow users to call lseek\n//\n@ open1 exists @\nidentifier nested_open;\n@@\nnested_open(...)\n{\n\u003c+...\nnonseekable_open(...)\n...+\u003e\n}\n\n@ open exists@\nidentifier open_f;\nidentifier i, f;\nidentifier open1.nested_open;\n@@\nint open_f(struct inode *i, struct file *f)\n{\n\u003c+...\n(\nnonseekable_open(...)\n|\nnested_open(...)\n)\n...+\u003e\n}\n\n@ read disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n   *off \u003d E\n|\n   *off +\u003d E\n|\n   func(..., off, ...)\n|\n   E \u003d *off\n)\n...+\u003e\n}\n\n@ read_no_fpos disable optional_qualifier exists @\nidentifier read_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t read_f(struct file *f, char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ write @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\nexpression E;\nidentifier func;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n\u003c+...\n(\n  *off \u003d E\n|\n  *off +\u003d E\n|\n  func(..., off, ...)\n|\n  E \u003d *off\n)\n...+\u003e\n}\n\n@ write_no_fpos @\nidentifier write_f;\nidentifier f, p, s, off;\ntype ssize_t, size_t, loff_t;\n@@\nssize_t write_f(struct file *f, const char *p, size_t s, loff_t *off)\n{\n... when !\u003d off\n}\n\n@ fops0 @\nidentifier fops;\n@@\nstruct file_operations fops \u003d {\n ...\n};\n\n@ has_llseek depends on fops0 @\nidentifier fops0.fops;\nidentifier llseek_f;\n@@\nstruct file_operations fops \u003d {\n...\n .llseek \u003d llseek_f,\n...\n};\n\n@ has_read depends on fops0 @\nidentifier fops0.fops;\nidentifier read_f;\n@@\nstruct file_operations fops \u003d {\n...\n .read \u003d read_f,\n...\n};\n\n@ has_write depends on fops0 @\nidentifier fops0.fops;\nidentifier write_f;\n@@\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n...\n};\n\n@ has_open depends on fops0 @\nidentifier fops0.fops;\nidentifier open_f;\n@@\nstruct file_operations fops \u003d {\n...\n .open \u003d open_f,\n...\n};\n\n// use no_llseek if we call nonseekable_open\n////////////////////////////////////////////\n@ nonseekable1 depends on !has_llseek \u0026\u0026 has_open @\nidentifier fops0.fops;\nidentifier nso ~\u003d \"nonseekable_open\";\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d nso, ...\n+.llseek \u003d no_llseek, /* nonseekable */\n};\n\n@ nonseekable2 depends on !has_llseek @\nidentifier fops0.fops;\nidentifier open.open_f;\n@@\nstruct file_operations fops \u003d {\n...  .open \u003d open_f, ...\n+.llseek \u003d no_llseek, /* open uses nonseekable */\n};\n\n// use seq_lseek for sequential files\n/////////////////////////////////////\n@ seq depends on !has_llseek @\nidentifier fops0.fops;\nidentifier sr ~\u003d \"seq_read\";\n@@\nstruct file_operations fops \u003d {\n...  .read \u003d sr, ...\n+.llseek \u003d seq_lseek, /* we have seq_read */\n};\n\n// use default_llseek if there is a readdir\n///////////////////////////////////////////\n@ fops1 depends on !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier readdir_e;\n@@\n// any other fop is used that changes pos\nstruct file_operations fops \u003d {\n... .readdir \u003d readdir_e, ...\n+.llseek \u003d default_llseek, /* readdir is present */\n};\n\n// use default_llseek if at least one of read/write touches f_pos\n/////////////////////////////////////////////////////////////////\n@ fops2 depends on !fops1 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read.read_f;\n@@\n// read fops use offset\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d default_llseek, /* read accesses f_pos */\n};\n\n@ fops3 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+\t.llseek \u003d default_llseek, /* write accesses f_pos */\n};\n\n// Use noop_llseek if neither read nor write accesses f_pos\n///////////////////////////////////////////////////////////\n\n@ fops4 depends on !fops1 \u0026\u0026 !fops2 \u0026\u0026 !fops3 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\nidentifier write_no_fpos.write_f;\n@@\n// write fops use offset\nstruct file_operations fops \u003d {\n...\n .write \u003d write_f,\n .read \u003d read_f,\n...\n+.llseek \u003d noop_llseek, /* read and write both use no f_pos */\n};\n\n@ depends on has_write \u0026\u0026 !has_read \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier write_no_fpos.write_f;\n@@\nstruct file_operations fops \u003d {\n... .write \u003d write_f, ...\n+.llseek \u003d noop_llseek, /* write uses no f_pos */\n};\n\n@ depends on has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\nidentifier read_no_fpos.read_f;\n@@\nstruct file_operations fops \u003d {\n... .read \u003d read_f, ...\n+.llseek \u003d noop_llseek, /* read uses no f_pos */\n};\n\n@ depends on !has_read \u0026\u0026 !has_write \u0026\u0026 !fops1 \u0026\u0026 !fops2 \u0026\u0026 !has_llseek \u0026\u0026 !nonseekable1 \u0026\u0026 !nonseekable2 \u0026\u0026 !seq @\nidentifier fops0.fops;\n@@\nstruct file_operations fops \u003d {\n...\n+.llseek \u003d noop_llseek, /* no read or write fn */\n};\n\u003d\u003d\u003d\u003d\u003d End semantic patch \u003d\u003d\u003d\u003d\u003d\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Julia Lawall \u003cjulia@diku.dk\u003e\nCc: Christoph Hellwig \u003chch@infradead.org\u003e\n"
    },
    {
      "commit": "cd254f295248c98b62ea824f361e10d80a081fe7",
      "tree": "eef867346f4e41db9067f8628f6ec596b47e7313",
      "parents": [
        "b3b3a9b63f2deacfd59137e3781211d21a568ca9"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 15 11:28:07 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 15 12:47:18 2010 +0200"
      },
      "message": "oprofile: make !CONFIG_PM function stubs static inline\n\nMake !CONFIG_PM function stubs static inline and remove section\nattribute.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "b3b3a9b63f2deacfd59137e3781211d21a568ca9",
      "tree": "673b271644137b60eeabbd8ad0ba133735d84c3f",
      "parents": [
        "277dd984172b063497d2ff6cfa7f2355f13a292d"
      ],
      "author": {
        "name": "Anand Gadiyar",
        "email": "gadiyar@ti.com",
        "time": "Thu Oct 14 11:31:42 2010 -0400"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 15 12:45:44 2010 +0200"
      },
      "message": "oprofile: fix linker errors\n\nCommit e9677b3ce (oprofile, ARM: Use oprofile_arch_exit() to\ncleanup on failure) caused oprofile_perf_exit to be called\nin the cleanup path of oprofile_perf_init. The __exit tag\nfor oprofile_perf_exit should therefore be dropped.\n\nThe same has to be done for exit_driverfs as well, as this\nfunction is called from oprofile_perf_exit. Else, we get\nthe following two linker errors.\n\n  LD      .tmp_vmlinux1\n`oprofile_perf_exit\u0027 referenced in section `.init.text\u0027 of arch/arm/oprofile/built-in.o: defined in discarded section `.exit.text\u0027 of arch/arm/oprofile/built-in.o\nmake: *** [.tmp_vmlinux1] Error 1\n\n  LD      .tmp_vmlinux1\n`exit_driverfs\u0027 referenced in section `.text\u0027 of arch/arm/oprofile/built-in.o: defined in discarded section `.exit.text\u0027 of arch/arm/oprofile/built-in.o\nmake: *** [.tmp_vmlinux1] Error 1\n\nSigned-off-by: Anand Gadiyar \u003cgadiyar@ti.com\u003e\nCc: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "277dd984172b063497d2ff6cfa7f2355f13a292d",
      "tree": "2cbb64755ac00b333e88a567dc60372bfe09d04b",
      "parents": [
        "6268464b370e234e0255330190f9bd5d19386ad7"
      ],
      "author": {
        "name": "Anand Gadiyar",
        "email": "gadiyar@ti.com",
        "time": "Thu Oct 14 11:31:43 2010 -0400"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 15 12:45:44 2010 +0200"
      },
      "message": "oprofile: include platform_device.h to fix build break\n\noprofile_perf.c needs to include platform_device.h\nOtherwise we get the following build break.\n\n  CC      arch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.o\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:192: warning: \u0027struct platform_device\u0027 declared inside parameter list\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:192: warning: its scope is only this definition or declaration, which is probably not what you want\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:201: warning: \u0027struct platform_device\u0027 declared inside parameter list\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:210: error: variable \u0027oprofile_driver\u0027 has initializer but incomplete type\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:211: error: unknown field \u0027driver\u0027 specified in initializer\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:211: error: extra brace group at end of initializer\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:211: error: (near initialization for \u0027oprofile_driver\u0027)\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:213: warning: excess elements in struct initializer\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:213: warning: (near initialization for \u0027oprofile_driver\u0027)\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:214: error: unknown field \u0027resume\u0027 specified in initializer\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:214: warning: excess elements in struct initializer\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:214: warning: (near initialization for \u0027oprofile_driver\u0027)\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:215: error: unknown field \u0027suspend\u0027 specified in initializer\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:215: warning: excess elements in struct initializer\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c:215: warning: (near initialization for \u0027oprofile_driver\u0027)\narch/arm/oprofile/../../../drivers/oprofile/oprofile_perf.c: In function \u0027init_driverfs\u0027:\n\nSigned-off-by: Anand Gadiyar \u003cgadiyar@ti.com\u003e\nCc: Matt Fleming \u003cmatt@console-pimps.org\u003e\nCc: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "6268464b370e234e0255330190f9bd5d19386ad7",
      "tree": "5742641092ce64227dd2086d78baaede57da1f80",
      "parents": [
        "7df01d96b295e400167e78061b81d4c91630b12d",
        "0fdf13606b67f830559abdaad15980c7f4f05ec4"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 15 12:45:00 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 15 12:45:00 2010 +0200"
      },
      "message": "Merge remote branch \u0027tip/perf/core\u0027 into oprofile/core\n\nConflicts:\n\tarch/arm/oprofile/common.c\n\tkernel/perf_event.c\n"
    },
    {
      "commit": "7df01d96b295e400167e78061b81d4c91630b12d",
      "tree": "52782cc1d78c24030d627f719cdaa29846c42efb",
      "parents": [
        "0361e02342f60b64a7075755d5851ed4e6f98c7d"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Oct 04 21:09:36 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue Oct 12 17:25:06 2010 +0200"
      },
      "message": "oprofile: disable write access to oprofilefs while profiler is running\n\nOprofile counters are setup when profiling is disabled. Thus, writing\nto oprofilefs has no immediate effect. Changes are updated only after\noprofile is reenabled.\n\nTo keep userland and kernel states synchronized, we now allow\nconfiguration of oprofile only if profiling is disabled.  In this case\nit checks if the profiler is running and then disables write access to\noprofilefs by returning -EBUSY. The change should be backward\ncompatible with current oprofile userland daemon.\n\nAcked-by: Maynard Johnson \u003cmaynardj@us.ibm.com\u003e\nCc: William Cohen \u003cwcohen@redhat.com\u003e\nCc: Suravee Suthikulpanit \u003csuravee.suthikulpanit@amd.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "0361e02342f60b64a7075755d5851ed4e6f98c7d",
      "tree": "76ca78323ad1d4b1ecf1e8137f6b48eddcbebe3a",
      "parents": [
        "4fdaa7b682b413dfb7ca9fa74ff45b1e0cb3dade",
        "e9677b3ce207a07fad5746b6f7ddc70cae79de0a"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Oct 11 19:38:39 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Oct 11 19:38:39 2010 +0200"
      },
      "message": "Merge branch \u0027oprofile/perf\u0027 into oprofile/core\n\nConflicts:\n\tarch/arm/oprofile/common.c\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "e9677b3ce207a07fad5746b6f7ddc70cae79de0a",
      "tree": "fd94cd24431c1c853372bea47f662e50a7ea4bcf",
      "parents": [
        "2bcb2b641a8f1524f7a9801eb9e52a00b8f18c6e"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Sep 29 15:42:30 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Oct 11 19:34:04 2010 +0200"
      },
      "message": "oprofile, ARM: Use oprofile_arch_exit() to cleanup on failure\n\nThere is duplicate cleanup code in the init and exit functions. Now,\noprofile_arch_exit() is also used if oprofile_arch_init() fails.\n\nAcked-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "2bcb2b641a8f1524f7a9801eb9e52a00b8f18c6e",
      "tree": "1faeb9a6d2aecf54259205341c17fd9aef2bd5e6",
      "parents": [
        "9c91283a19c2d998a83f50f113f8585709c15caf"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Sep 29 14:43:29 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Oct 11 19:34:03 2010 +0200"
      },
      "message": "oprofile, ARM: Rework op_create_counter()\n\nThis patch simplifies op_create_counter(). Removing if/else if paths\nand return code variable by direct returning from function.\n\nAcked-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "9c91283a19c2d998a83f50f113f8585709c15caf",
      "tree": "77a0af19cf77eca6c3068f76f5de286f7df7bb0d",
      "parents": [
        "652953b72eea8b9d1bd6b9f67b796c6722bada3a"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Aug 27 14:32:41 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Oct 11 19:34:03 2010 +0200"
      },
      "message": "oprofile, ARM: Remove some goto statements\n\nThis patch removes some unnecessary goto statements.\n\nAcked-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "81771974ae49bf79aab60c42eac7a6d730a9ef2b",
      "tree": "82f6448db358d7850f52516ebab38f90a6f06190",
      "parents": [
        "ad0f7cfaa85fc033523a09ab1f3dd6b8ded3dff5"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Sep 29 16:52:25 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Oct 11 19:27:10 2010 +0200"
      },
      "message": "oprofile, ARM: Release resources on failure\n\nThis patch fixes a resource leak on failure, where the\noprofilefs and some counters may not released properly.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\nAcked-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nCc: linux-arm-kernel@lists.infradead.org\nCc: \u003cstable@kernel.org\u003e # .35.x\nLKML-Reference: \u003c20100929145225.GJ13563@erda.amd.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "ad0f7cfaa85fc033523a09ab1f3dd6b8ded3dff5",
      "tree": "2565121e4b9945d953e02c77a2e53065b3789aa4",
      "parents": [
        "86c8c04792f152c5469023885510140dd34817bc",
        "c7a27aa4652c63172489a73f3961455650a79a7f"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Oct 11 19:26:50 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Oct 11 19:26:50 2010 +0200"
      },
      "message": "Merge branch \u0027oprofile/urgent\u0027 (early part) into oprofile/perf\n"
    },
    {
      "commit": "3d90a00763b51e1db344a7430c966be723b67a29",
      "tree": "16d089339f161eb1e719b4b9b61e59e572587656",
      "parents": [
        "58850e210cd207399cf6461326e322541b2ec81c"
      ],
      "author": {
        "name": "Matt Fleming",
        "email": "matt@console-pimps.org",
        "time": "Mon Sep 27 20:45:08 2010 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Oct 11 17:46:16 2010 +0200"
      },
      "message": "oprofile: Abstract the perf-events backend\n\nMove the perf-events backend from arch/arm/oprofile into\ndrivers/oprofile so that the code can be shared between architectures.\n\nThis allows each architecture to maintain only a single copy of the PMU\naccessor functions instead of one for both perf and OProfile. It also\nbecomes possible for other architectures to delete much of their\nOProfile code in favour of the common code now available in\ndrivers/oprofile/oprofile_perf.c.\n\nSigned-off-by: Matt Fleming \u003cmatt@console-pimps.org\u003e\nTested-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "4fdaa7b682b413dfb7ca9fa74ff45b1e0cb3dade",
      "tree": "dbd363d92dde1eca2da778e50c03b7c49159dc4d",
      "parents": [
        "dc0c22b878a60373762495b8e5628a32c1b80ac4"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Thu Aug 19 10:50:26 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Oct 04 10:55:24 2010 +0200"
      },
      "message": "oprofile: Remove duplicate code around __oprofilefs_create_file()\n\nRemoving duplicate code by assigning the inodes private data pointer\nin __oprofilefs_create_file(). Extending the function interface to\npass the pointer.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "ef70fcc0cd5d98f5e2df82c9e598b47f351d4f66",
      "tree": "b801ba4d7ebb1155df68d530df49444ffa6252cc",
      "parents": [
        "4cbe75be5c6ae86bdc7daec864eeb2dfd66f48bb",
        "98d943b02f6f1b57787ff1aa6f34d019a407e3ee"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 01 08:54:17 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 01 08:54:17 2010 +0200"
      },
      "message": "Merge branch \u0027oprofile/urgent\u0027 into oprofile/core\n\nConflicts:\n\tarch/arm/oprofile/common.c\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "979048e1f26190d16b5aea87166177f37e614439",
      "tree": "28c6e5c6c11343f934249cfdf9cc806f8a587758",
      "parents": [
        "2bfc96a127bc1cc94d26bfaa40159966064f9c8c"
      ],
      "author": {
        "name": "Will Deacon",
        "email": "will.deacon@arm.com",
        "time": "Sun Aug 29 14:51:59 2010 -0400"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue Aug 31 11:47:50 2010 +0200"
      },
      "message": "oprofile: don\u0027t call arch exit code from init code on failure\n\noprofile_init calls oprofile_arch_init to initialise the architecture-specific\nbackend code. If this backend code returns failure, oprofile_arch_exit is\ncalled immediately, making it difficult to allocate and free resources\ncorrectly.\n\nThis patch removes the oprofile_arch_exit call from oprofile_init,\nmeaning that all architectures must ensure that oprofile_arch_init\ncleans up any mess it\u0027s made before returning an error. As far as\nI can tell, this only affects the code for ARM.\n\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Matt Fleming \u003cmatt@console-pimps.org\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Will Deacon \u003cwill.deacon@arm.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "750d857c682f4db60d14722d430c7ccc35070962",
      "tree": "bcf6e23fc5dd861104bc4b8309a8ce47aded2d6e",
      "parents": [
        "da5cabf80e2433131bf0ed8993abc0f7ea618c73"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Aug 13 16:29:04 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Aug 25 09:09:09 2010 +0200"
      },
      "message": "oprofile: fix crash when accessing freed task structs\n\nThis patch fixes a crash during shutdown reported below. The crash is\ncaused by accessing already freed task structs. The fix changes the\norder for registering and unregistering notifier callbacks.\n\nAll notifiers must be initialized before buffers start working. To\nstop buffer synchronization we cancel all workqueues, unregister the\nnotifier callback and then flush all buffers. After all of this we\nfinally can free all tasks listed.\n\nThis should avoid accessing freed tasks.\n\nOn 22.07.10 01:14:40, Benjamin Herrenschmidt wrote:\n\n\u003e So the initial observation is a spinlock bad magic followed by a crash\n\u003e in the spinlock debug code:\n\u003e\n\u003e [ 1541.586531] BUG: spinlock bad magic on CPU#5, events/5/136\n\u003e [ 1541.597564] Unable to handle kernel paging request for data at address 0x6b6b6b6b6b6b6d03\n\u003e\n\u003e Backtrace looks like:\n\u003e\n\u003e       spin_bug+0x74/0xd4\n\u003e       ._raw_spin_lock+0x48/0x184\n\u003e       ._spin_lock+0x10/0x24\n\u003e       .get_task_mm+0x28/0x8c\n\u003e       .sync_buffer+0x1b4/0x598\n\u003e       .wq_sync_buffer+0xa0/0xdc\n\u003e       .worker_thread+0x1d8/0x2a8\n\u003e       .kthread+0xa8/0xb4\n\u003e       .kernel_thread+0x54/0x70\n\u003e\n\u003e So we are accessing a freed task struct in the work queue when\n\u003e processing the samples.\n\nReported-by: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: stable@kernel.org\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "729419f0090601406abe714c5f8872a3bd53ff68",
      "tree": "6d6a2b9085ff174163f174ea53759b6e04700c91",
      "parents": [
        "b12eab1a796a306caef7046b21a76efa35f5f489"
      ],
      "author": {
        "name": "Arnd Bergmann",
        "email": "arnd@arndb.de",
        "time": "Wed Jul 07 17:40:13 2010 -0400"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Jul 26 10:58:24 2010 +0200"
      },
      "message": "oprofile: make event buffer nonseekable\n\nThe event buffer cannot deal with seeks, so\nwe should forbid that outright.\n\nSigned-off-by: Arnd Bergmann \u003carnd@arndb.de\u003e\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: oprofile-list@lists.sf.net\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "9414e99672271adcc661f3c160a30b374179b92f",
      "tree": "da2052d48666552400b3204f15bb18b58156065f",
      "parents": [
        "b971f06187d83b5c03d2b597cccdfef421c0ca91"
      ],
      "author": {
        "name": "Phil Carmody",
        "email": "ext-phil.2.carmody@nokia.com",
        "time": "Wed Apr 28 12:09:16 2010 -0500"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon May 03 23:02:39 2010 +0200"
      },
      "message": "oprofile: protect from not being in an IRQ context\n\nhttp://lkml.org/lkml/2010/4/27/285\n\nProtect against dereferencing regs when it\u0027s NULL, and\nforce a magic number into pc to prevent too deep processing.\nThis approach permits the dropped samples to be tallied as\ninvalid Instruction Pointer events.\n\ne.g. output from about 15mins at 10kHz sample rate:\nNr. samples received: 2565380\nNr. samples lost invalid pc: 4\n\nSigned-off-by: Phil Carmody \u003cext-phil.2.carmody@nokia.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "b971f06187d83b5c03d2b597cccdfef421c0ca91",
      "tree": "849dbe485ca9472bea002f94681882ce103fe3cd",
      "parents": [
        "cb6e943ccf19ab6d3189147e9d625a992e016084",
        "c1ab9cab75098924fa8226a8a371de66977439df"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Apr 23 16:47:51 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Apr 23 16:47:51 2010 +0200"
      },
      "message": "Merge commit \u0027tip/tracing/core\u0027 into oprofile/core\n\nConflicts:\n\tdrivers/oprofile/cpu_buffer.c\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "cb6e943ccf19ab6d3189147e9d625a992e016084",
      "tree": "8ecbe4eae825ea4f7bbb685cab5a45206d437f05",
      "parents": [
        "a36bf32e9e8a86f291f746b7f8292e042ee04a46"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "andi@firstfloor.org",
        "time": "Thu Apr 01 03:17:25 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Apr 23 15:30:38 2010 +0200"
      },
      "message": "oprofile: remove double ring buffering\n\noprofile used a double buffer scheme for its cpu event buffer\nto avoid races on reading with the old locked ring buffer.\n\nBut that is obsolete now with the new ring buffer, so simply\nuse a single buffer. This greatly simplifies the code and avoids\na lot of sample drops on large runs, especially with call graph.\n\nBased on suggestions from Steven Rostedt\n\nFor stable kernels from v2.6.32, but not earlier.\n\nSigned-off-by: Andi Kleen \u003cak@linux.intel.com\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nCc: stable \u003cstable@kernel.org\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "a36bf32e9e8a86f291f746b7f8292e042ee04a46",
      "tree": "c5c999baa4c214218e3adea9b336cbd9f23950ad",
      "parents": [
        "bc078e4eab65f11bbaeed380593ab8151b30d703",
        "01bf0b64579ead8a82e7cfc32ae44bc667e7ad0f"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Apr 23 14:30:22 2010 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Apr 23 14:30:22 2010 +0200"
      },
      "message": "Merge commit \u0027v2.6.34-rc5\u0027 into oprofile/core\n"
    },
    {
      "commit": "c1ab9cab75098924fa8226a8a371de66977439df",
      "tree": "767e77302ca8f2eb781c60624bc8518cd50ba6eb",
      "parents": [
        "ff0ff84a0767df48d728c36510365344a7e7d582",
        "f5284e7635787224dda1a2bf82a4c56b1c75671f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 08 09:06:12 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 08 10:18:47 2010 +0200"
      },
      "message": "Merge branch \u0027linus\u0027 into tracing/core\n\nConflicts:\n\tinclude/linux/module.h\n\tkernel/module.c\n\nSemantic conflict:\n\tinclude/trace/events/module.h\n\nMerge reason: Resolve the conflict with upstream commit 5fbfb18 (\"Fix up\n              possibly racy module refcounting\")\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "66a8cb95ed04025664d1db4e952155ee1dccd048",
      "tree": "74417422a78bc8198de46b0e52e490175af866e0",
      "parents": [
        "eb0c53771fb2f5f66b0edb3ebce33be4bbf1c285"
      ],
      "author": {
        "name": "Steven Rostedt",
        "email": "srostedt@redhat.com",
        "time": "Wed Mar 31 13:21:56 2010 -0400"
      },
      "committer": {
        "name": "Steven Rostedt",
        "email": "rostedt@goodmis.org",
        "time": "Wed Mar 31 22:57:04 2010 -0400"
      },
      "message": "ring-buffer: Add place holder recording of dropped events\n\nCurrently, when the ring buffer drops events, it does not record\nthe fact that it did so. It does inform the writer that the event\nwas dropped by returning a NULL event, but it does not put in any\nplace holder where the event was dropped.\n\nThis is not a trivial thing to add because the ring buffer mostly\nruns in overwrite (flight recorder) mode. That is, when the ring\nbuffer is full, new data will overwrite old data.\n\nIn a produce/consumer mode, where new data is simply dropped when\nthe ring buffer is full, it is trivial to add the placeholder\nfor dropped events. When there\u0027s more room to write new data, then\na special event can be added to notify the reader about the dropped\nevents.\n\nBut in overwrite mode, any new write can overwrite events. A place\nholder can not be inserted into the ring buffer since there never\nmay be room. A reader could also come in at anytime and miss the\nplaceholder.\n\nLuckily, the way the ring buffer works, the read side can find out\nif events were lost or not, and how many events. Everytime a write\ntakes place, if it overwrites the header page (the next read) it\nupdates a \"overrun\" variable that keeps track of the number of\nlost events. When a reader swaps out a page from the ring buffer,\nit can record this number, perfom the swap, and then check to\nsee if the number changed, and take the diff if it has, which would be\nthe number of events dropped. This can be stored by the reader\nand returned to callers of the reader.\n\nSince the reader page swap will fail if the writer moved the head\npage since the time the reader page set up the swap, this gives room\nto record the overruns without worrying about races. If the reader\nsets up the pages, records the overrun, than performs the swap,\nif the swap succeeds, then the overrun variable has not been\nupdated since the setup before the swap.\n\nFor binary readers of the ring buffer, a flag is set in the header\nof each sub page (sub buffer) of the ring buffer. This flag is embedded\nin the size field of the data on the sub buffer, in the 31st bit (the size\ncan be 32 or 64 bits depending on the architecture), but only 27\nbits needs to be used for the actual size (less actually).\n\nWe could add a new field in the sub buffer header to also record the\nnumber of events dropped since the last read, but this will change the\nformat of the binary ring buffer a bit too much. Perhaps this change can\nbe made if the information on the number of events dropped is considered\nimportant enough.\n\nNote, the notification of dropped events is only used by consuming reads\nor peeking at the ring buffer. Iterating over the ring buffer does not\nkeep this information because the necessary data is only available when\na page swap is made, and the iterator does not swap out pages.\n\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Andi Kleen \u003candi@firstfloor.org\u003e\nCc: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Arnaldo Carvalho de Melo \u003cacme@redhat.com\u003e\nCc: \"Luis Claudio R. Goncalves\" \u003clclaudio@uudg.org\u003e\nCc: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nSigned-off-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "5a0e3ad6af8660be21ca98a971cd00f331318c05",
      "tree": "5bfb7be11a03176a87296a43ac6647975c00a1d1",
      "parents": [
        "ed391f4ebf8f701d3566423ce8f17e614cde9806"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Wed Mar 24 17:04:11 2010 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Tue Mar 30 22:02:32 2010 +0900"
      },
      "message": "include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h\n\npercpu.h is included by sched.h and module.h and thus ends up being\nincluded when building most .c files.  percpu.h includes slab.h which\nin turn includes gfp.h making everything defined by the two files\nuniversally available and complicating inclusion dependencies.\n\npercpu.h -\u003e slab.h dependency is about to be removed.  Prepare for\nthis change by updating users of gfp and slab facilities include those\nheaders directly instead of assuming availability.  As this conversion\nneeds to touch large number of source files, the following script is\nused as the basis of conversion.\n\n  http://userweb.kernel.org/~tj/misc/slabh-sweep.py\n\nThe script does the followings.\n\n* Scan files for gfp and slab usages and update includes such that\n  only the necessary includes are there.  ie. if only gfp is used,\n  gfp.h, if slab is used, slab.h.\n\n* When the script inserts a new include, it looks at the include\n  blocks and try to put the new include such that its order conforms\n  to its surrounding.  It\u0027s put in the include block which contains\n  core kernel includes, in the same order that the rest are ordered -\n  alphabetical, Christmas tree, rev-Xmas-tree or at the end if there\n  doesn\u0027t seem to be any matching order.\n\n* If the script can\u0027t find a place to put a new include (mostly\n  because the file doesn\u0027t have fitting include block), it prints out\n  an error message indicating which .h file needs to be added to the\n  file.\n\nThe conversion was done in the following steps.\n\n1. The initial automatic conversion of all .c files updated slightly\n   over 4000 files, deleting around 700 includes and adding ~480 gfp.h\n   and ~3000 slab.h inclusions.  The script emitted errors for ~400\n   files.\n\n2. Each error was manually checked.  Some didn\u0027t need the inclusion,\n   some needed manual addition while adding it to implementation .h or\n   embedding .c file was more appropriate for others.  This step added\n   inclusions to around 150 files.\n\n3. The script was run again and the output was compared to the edits\n   from #2 to make sure no file was left behind.\n\n4. Several build tests were done and a couple of problems were fixed.\n   e.g. lib/decompress_*.c used malloc/free() wrappers around slab\n   APIs requiring slab.h to be added manually.\n\n5. The script was run on all .h files but without automatically\n   editing them as sprinkling gfp.h and slab.h inclusions around .h\n   files could easily lead to inclusion dependency hell.  Most gfp.h\n   inclusion directives were ignored as stuff from gfp.h was usually\n   wildly available and often used in preprocessor macros.  Each\n   slab.h inclusion directive was examined and added manually as\n   necessary.\n\n6. percpu.h was updated not to include slab.h.\n\n7. Build test were done on the following configurations and failures\n   were fixed.  CONFIG_GCOV_KERNEL was turned off for all tests (as my\n   distributed build env didn\u0027t work with gcov compiles) and a few\n   more options had to be turned off depending on archs to make things\n   build (like ipr on powerpc/64 which failed due to missing writeq).\n\n   * x86 and x86_64 UP and SMP allmodconfig and a custom test config.\n   * powerpc and powerpc64 SMP allmodconfig\n   * sparc and sparc64 SMP allmodconfig\n   * ia64 SMP allmodconfig\n   * s390 SMP allmodconfig\n   * alpha SMP allmodconfig\n   * um on x86_64 SMP allmodconfig\n\n8. percpu.h modifications were reverted so that it could be applied as\n   a separate patch and serve as bisection point.\n\nGiven the fact that I had only a couple of failures from tests on step\n6, I\u0027m fairly confident about the coverage of this conversion patch.\nIf there is a breakage, it\u0027s likely to be something in one of the arch\nheaders which should be easily discoverable easily on most builds of\nthe specific arch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nGuess-its-ok-by: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Ingo Molnar \u003cmingo@redhat.com\u003e\nCc: Lee Schermerhorn \u003cLee.Schermerhorn@hp.com\u003e\n"
    },
    {
      "commit": "bc078e4eab65f11bbaeed380593ab8151b30d703",
      "tree": "8d61457355fad4e5b5938cd7c01a1dd379778789",
      "parents": [
        "cfc9c0b450176a077205ef39092f0dc1a04e020a"
      ],
      "author": {
        "name": "Martin Schwidefsky",
        "email": "schwidefsky@de.ibm.com",
        "time": "Tue Mar 02 16:01:10 2010 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue Mar 02 17:03:20 2010 +0100"
      },
      "message": "oprofile: convert oprofile from timer_hook to hrtimer\n\nOprofile is currently broken on systems running with NOHZ enabled.\nA maximum of 1 tick is accounted via the timer_hook if a cpu sleeps\nfor a longer period of time. This does bad things to the percentages\nin the profiler output. To solve this problem convert oprofile to\nuse a restarting hrtimer instead of the timer_hook.\n\nSigned-off-by: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "d0316554d3586cbea60592a41391b5def2553d6f",
      "tree": "5e7418f0bacbc68cec5dfd1541e03eb56870aa02",
      "parents": [
        "fb0bbb92d42d5bd0ab224605444efdfed06d6934",
        "51e99be00ce2713cbb841cedc997cafa6e26c7f4"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 14 09:58:24 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Dec 14 09:58:24 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu: (34 commits)\n  m68k: rename global variable vmalloc_end to m68k_vmalloc_end\n  percpu: add missing per_cpu_ptr_to_phys() definition for UP\n  percpu: Fix kdump failure if booted with percpu_alloc\u003dpage\n  percpu: make misc percpu symbols unique\n  percpu: make percpu symbols in ia64 unique\n  percpu: make percpu symbols in powerpc unique\n  percpu: make percpu symbols in x86 unique\n  percpu: make percpu symbols in xen unique\n  percpu: make percpu symbols in cpufreq unique\n  percpu: make percpu symbols in oprofile unique\n  percpu: make percpu symbols in tracer unique\n  percpu: make percpu symbols under kernel/ and mm/ unique\n  percpu: remove some sparse warnings\n  percpu: make alloc_percpu() handle array types\n  vmalloc: fix use of non-existent percpu variable in put_cpu_var()\n  this_cpu: Use this_cpu_xx in trace_functions_graph.c\n  this_cpu: Use this_cpu_xx for ftrace\n  this_cpu: Use this_cpu_xx in nmi handling\n  this_cpu: Use this_cpu operations in RCU\n  this_cpu: Use this_cpu ops for VM statistics\n  ...\n\nFix up trivial (famous last words) global per-cpu naming conflicts in\n\tarch/x86/kvm/svm.c\n\tmm/slab.c\n"
    },
    {
      "commit": "b3e9f672b6cd0f4c2982c1bcc0b3c3fb39d3b0fe",
      "tree": "4aaac8850226d81df5f90240839c1d1310c0ae75",
      "parents": [
        "9705f69ed0a5ef593f45e618bcb3cbfdbf391f64"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:13 2009 +0900"
      },
      "committer": {
        "name": "Tejun Heo",
        "email": "tj@kernel.org",
        "time": "Thu Oct 29 22:34:13 2009 +0900"
      },
      "message": "percpu: make percpu symbols in oprofile unique\n\nThis patch updates percpu related symbols in oprofile such that percpu\nsymbols are unique and don\u0027t clash with local symbols.  This serves\ntwo purposes of decreasing the possibility of global percpu symbol\ncollision and allowing dropping per_cpu__ prefix from percpu symbols.\n\n* drivers/oprofile/cpu_buffer.c: s/cpu_buffer/op_cpu_buffer/\n\nPartly based on Rusty Russell\u0027s \"alloc_percpu: rename percpu vars\nwhich cause name clashes\" patch.\n\nSigned-off-by: Tejun Heo \u003ctj@kernel.org\u003e\nAcked-by: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "c0868934e536e0ff508f2d359d006b25abc4970d",
      "tree": "54932dfb00ee6731a1d3421eba1a87ed025f72dd",
      "parents": [
        "066b3aa8454bee3cdc665d86b5de812d8d0513b3"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 09 03:17:44 2009 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 09 21:32:05 2009 +0200"
      },
      "message": "oprofile: warn on freeing event buffer too early\n\nA race shouldn\u0027t happen since all workqueues or handlers are canceled\nor flushed before the event buffer is freed. A warning is triggered\nnow if the buffer is freed too early.\n\nAlso, this patch adds some comments about event buffer protection,\nreworks some code and adds code to clear buffer_pos during alloc and\nfree of the event buffer.\n\nCc: David Rientjes \u003crientjes@google.com\u003e\nCc: Stephane Eranian \u003ceranian@google.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "066b3aa8454bee3cdc665d86b5de812d8d0513b3",
      "tree": "5005ac2eba0190371c21d88af286ecff267a229c",
      "parents": [
        "374576a8b6f865022c0fd1ca62396889b23d66dd"
      ],
      "author": {
        "name": "David Rientjes",
        "email": "rientjes@google.com",
        "time": "Wed Sep 09 15:02:33 2009 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Oct 09 18:02:01 2009 +0200"
      },
      "message": "oprofile: fix race condition in event_buffer free\n\nLooking at the 2.6.31-rc9 code, it appears there is a race condition\nin the event_buffer cleanup code path (shutdown). This could lead to\nkernel panic as some CPUs may be operating on the event buffer AFTER\nit has been freed. The attached patch solves the problem and makes\nsure CPUs check if the buffer is not NULL before they access it as\nsome may have been spinning on the mutex while the buffer was being\nfreed.\n\nThe race may happen if the buffer is freed during pending reads. But\nit is not clear why there are races in add_event_entry() since all\nworkqueues or handlers are canceled or flushed before the event buffer\nis freed.\n\nSigned-off-by: David Rientjes \u003crientjes@google.com\u003e\nSigned-off-by: Stephane Eranian \u003ceranian@google.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "79f5599772ac2f138d7a75b8f3f06a93f09c75f7",
      "tree": "092c9f6e3f7c49d8f5bb9f3d39752ae7cfb9415a",
      "parents": [
        "a724eada8c2a7b62463b73ccf73fd0bb6e928aeb"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Jun 15 14:58:26 2009 +0800"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Thu Sep 24 09:34:24 2009 +0930"
      },
      "message": "cpumask: use zalloc_cpumask_var() where possible\n\nRemove open-coded zalloc_cpumask_var() and zalloc_cpumask_var_node().\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "b87221de6a4934eda856475a0065688d12973a04",
      "tree": "6bcf0628e106c4833538f4c23d710fbbe3d7609a",
      "parents": [
        "0d54b217a247f39605361f867fefbb9e099a5432"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Mon Sep 21 17:01:09 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Sep 22 07:17:24 2009 -0700"
      },
      "message": "const: mark remaining super_operations const\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "1b294f5960cd89e49eeb3e797860c552b03f2272",
      "tree": "2582a7f6d56c2f34ff956d24eda97b18720aa0ce",
      "parents": [
        "4d015f79e972cea1761cfee8872b1c0992ccd8b2"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Thu Jul 09 14:56:25 2009 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Jul 20 16:43:21 2009 +0200"
      },
      "message": "oprofile: Adding switch counter to oprofile statistic variables\n\nThis patch moves the multiplexing switch counter from x86 code to\ncommon oprofile statistic variables. Now the value will be available\nand usable for all architectures. The initialization and\nincrementation also moved to common code.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "a5659d17adb815fb35e11745e2f39c3f0bfd579f",
      "tree": "5a7b151a9bbf0d9ec4c38e828e213ac9915f0483",
      "parents": [
        "16422a6e2d16a39861ae5b0b11d9b411a245ab83"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Jun 19 16:45:34 2009 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Jul 20 16:43:19 2009 +0200"
      },
      "message": "oprofile: Grouping multiplexing code in oprof.c\n\nThis patch moves multiplexing code to a single section of code. This\nreduces the use of #ifdefs especially within functions.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "16422a6e2d16a39861ae5b0b11d9b411a245ab83",
      "tree": "a3c2c5122b234e3f367df19a303da0200bfeee15",
      "parents": [
        "afe1b50fe6aa56093e9234bdc08779e9fe20b5bf"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jul 15 15:44:18 2009 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Jul 20 16:43:19 2009 +0200"
      },
      "message": "oprofile: Remove oprofile_multiplexing_init()\n\noprofile_multiplexing_init() can be removed when moving the\ninitialization of oprofile_time_slice to oprofile_create_files().\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "afe1b50fe6aa56093e9234bdc08779e9fe20b5bf",
      "tree": "9c6ce25e09476a0d6c16ceabda66323dd3f5aefe",
      "parents": [
        "2051cade7ccbe45a8bf8b7809d56b23d6d75ad03"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jul 15 15:19:29 2009 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Jul 20 16:43:19 2009 +0200"
      },
      "message": "oprofile: Rename variable timeout_jiffies and move to oprofile_files.c\n\nThis patch renames timeout_jiffies into an oprofile specific name. The\nmacro MULTIPLEXING_TIMER_DEFAULT is changed too.\n\nAlso, since this variable is controlled using oprofilefs, its\ndefinition is moved to oprofile_files.c.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "2051cade7ccbe45a8bf8b7809d56b23d6d75ad03",
      "tree": "6c3e1973ac658f4db220ee5bbf9f770f504e210c",
      "parents": [
        "6bfccd099c2841e1c42530f1b6d2553bfa13be3a"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jul 15 15:44:18 2009 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Jul 20 16:43:18 2009 +0200"
      },
      "message": "oprofile: oprofile_set_timeout(), return with error for invalid args\n\nReturn with -EINVAL for invalid parameters instead of setting the\ndefault value in oprofile_set_timeout().\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "4d4036e0e7299c6cbb2d2421b4b30b7a409ce61a",
      "tree": "c9003cd927ed878412e89a59db0138b6b701b629",
      "parents": [
        "6e63ea4b0b14ff5fb8a3ca704fcda7d28b95f079"
      ],
      "author": {
        "name": "Jason Yeh",
        "email": "jason.yeh@amd.com",
        "time": "Wed Jul 08 13:49:38 2009 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Jul 20 16:33:53 2009 +0200"
      },
      "message": "oprofile: Implement performance counter multiplexing\n\nThe number of hardware counters is limited. The multiplexing feature\nenables OProfile to gather more events than counters are provided by\nthe hardware. This is realized by switching between events at an user\nspecified time interval.\n\nA new file (/dev/oprofile/time_slice) is added for the user to specify\nthe timer interval in ms. If the number of events to profile is higher\nthan the number of hardware counters available, the patch will\nschedule a work queue that switches the event counter and re-writes\nthe different sets of values into it. The switching mechanism needs to\nbe implemented for each architecture to support multiplexing. This\npatch only implements AMD CPU support, but multiplexing can be easily\nextended for other models and architectures.\n\nThere are follow-on patches that rework parts of this patch.\n\nSigned-off-by: Jason Yeh \u003cjason.yeh@amd.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "debc6a6927dcd833a30750b07a4c2b456b71f1be",
      "tree": "edd16582c57409e75172e5a397e371d4da88f5fc",
      "parents": [
        "21e70878215f620fe99ea7d7c74bc641aeec932f",
        "6847e154e3cd74fca6084124c097980a7634285a",
        "4f6e1fe1d8ba3d9f4fb52dd006da9714d75243cf"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue Jul 14 15:20:44 2009 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue Jul 14 15:20:44 2009 +0200"
      },
      "message": "Merge commit \u0027v2.6.31-rc3\u0027; commit \u0027tip/oprofile\u0027 into oprofile/core\n\nConflicts:\n\tdrivers/oprofile/oprofile_stats.c\n\tdrivers/usb/otg/Kconfig\n\tdrivers/usb/otg/Makefile\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "2b8777ca0c944bf6498c45ed9c5c246bd63a719e",
      "tree": "fb62bd8d92828d6c1e6b66cc1cbb1bd49f0a19fc",
      "parents": [
        "8d7ff4f2a0b22b7d6d7bc3982257d1dadea22824"
      ],
      "author": {
        "name": "Maynard Johnson",
        "email": "maynardj@us.ibm.com",
        "time": "Wed May 27 10:15:08 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jul 10 12:35:36 2009 +0200"
      },
      "message": "oprofile: reset bt_lost_no_mapping with other stats\n\nThe bt_lost_no_mapping is not getting reset at the start of a\nprofiling run, thus the oprofiled.log shows erroneous values for this\nstatistic. The attached patch fixes this problem.\n\nSigned-off-by: Maynard Johnson \u003cmaynardj@us.ibm.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b72f7fa9788c85866da10d7b2091077397018b7a",
      "tree": "c3b09298a12a73aa029f87d024d722917f0f7850",
      "parents": [
        "802070f5474af1a49435a9528aede47bb18abd47",
        "1cc4ce6f5f89cdc355013aa43f06a14a015766d1"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Jun 12 18:46:35 2009 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Jun 12 18:46:35 2009 +0200"
      },
      "message": "Merge branches \u0027oprofile/fixes\u0027, \u0027oprofile/next\u0027 and \u0027oprofile/master\u0027 into oprofile/auto\n"
    },
    {
      "commit": "1cc4ce6f5f89cdc355013aa43f06a14a015766d1",
      "tree": "6311518bac579d1eadadadb335a0f555e0cc8c15",
      "parents": [
        "0886751c5d8b19fcee2e65d34ae21c9111e652a9"
      ],
      "author": {
        "name": "Maynard Johnson",
        "email": "maynardj@us.ibm.com",
        "time": "Wed May 27 10:15:08 2009 -0500"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Jun 12 17:25:43 2009 +0200"
      },
      "message": "oprofile: reset bt_lost_no_mapping with other stats\n\nThe bt_lost_no_mapping is not getting reset at the start of a\nprofiling run, thus the oprofiled.log shows erroneous values for this\nstatistic. The attached patch fixes this problem.\n\nSigned-off-by: Maynard Johnson \u003cmaynardj@us.ibm.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "51563a0e5650d0d76539625388d72d62b34c726e",
      "tree": "17148f56578af8f7d7d67491f8b7eb05d99acdd9",
      "parents": [
        "c572ae4efd1b0a5cc76c5e6aae05c1b182b6a69c"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jun 03 20:54:56 2009 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Thu Jun 11 20:16:00 2009 +0200"
      },
      "message": "x86/oprofile: introduce oprofile_add_data64()\n\nThe IBS implemention writes 64 bit register values to the cpu buffer\nby writing two 32 values using oprofile_add_data(). This patch\nintroduces oprofile_add_data64() to write a single 64 bit value to the\nbuffer.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "fecfe6320ba71eed6d16849683298f0894aa60de",
      "tree": "a1179708c0eed6ee8db942a87237103e4b44d8e0",
      "parents": [
        "0dc8335aa3e59f1adbb0fce7c9c0b342146cd036"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Thu May 07 16:07:41 2009 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Thu Jun 11 16:10:12 2009 +0200"
      },
      "message": "oprofile: remove obselete include headers\n\nThis became obsolete with this commit:\n\n 6dad828 oprofile: port to the new ring_buffer\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "54f2c841fa0007e5fee3b7d01a911c774f0a6cda",
      "tree": "058b9a96ed4fa2c963d18d0a66c2d3a5af38d881",
      "parents": [
        "091438dd5668396328a3419abcbc6591159eb8d1"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Thu May 07 17:28:59 2009 +0200"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Thu May 07 17:28:59 2009 +0200"
      },
      "message": "oprofile: fix cpu buffer size\n\nThe unit of oprofile_cpu_buffer_size is in samples, but was allocated\nin bytes. This led to the allocation of too small cpu buffers. This\npatch recalculates the buffer size in bytes taking also the\nring_buffer_event header size into account.\n\nReported-by: Suravee Suthikulpanit \u003csuravee.suthikulpanit@amd.com\u003e\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "714f83d5d9f7c785f622259dad1f4fad12d64664",
      "tree": "20563541ae438e11d686b4d629074eb002a481b7",
      "parents": [
        "8901e7ffc2fa78ede7ce9826dbad68a3a25dc2dc",
        "645dae969c3b8651c5bc7c54a1835ec03820f85f"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:04:19 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Apr 05 11:04:19 2009 -0700"
      },
      "message": "Merge branch \u0027tracing-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027tracing-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (413 commits)\n  tracing, net: fix net tree and tracing tree merge interaction\n  tracing, powerpc: fix powerpc tree and tracing tree interaction\n  ring-buffer: do not remove reader page from list on ring buffer free\n  function-graph: allow unregistering twice\n  trace: make argument \u0027mem\u0027 of trace_seq_putmem() const\n  tracing: add missing \u0027extern\u0027 keywords to trace_output.h\n  tracing: provide trace_seq_reserve()\n  blktrace: print out BLK_TN_MESSAGE properly\n  blktrace: extract duplidate code\n  blktrace: fix memory leak when freeing struct blk_io_trace\n  blktrace: fix blk_probes_ref chaos\n  blktrace: make classic output more classic\n  blktrace: fix off-by-one bug\n  blktrace: fix the original blktrace\n  blktrace: fix a race when creating blk_tree_root in debugfs\n  blktrace: fix timestamp in binary output\n  tracing, Text Edit Lock: cleanup\n  tracing: filter fix for TRACE_EVENT_FORMAT events\n  ftrace: Using FTRACE_WARN_ON() to check \"freed record\" in ftrace_release()\n  x86: kretprobe-booster interrupt emulation code fix\n  ...\n\nFix up trivial conflicts in\n arch/parisc/include/asm/ftrace.h\n include/linux/memory.h\n kernel/extable.c\n kernel/module.c\n"
    },
    {
      "commit": "8302294f43250dc337108c51882a6007f2b1e2e0",
      "tree": "85acd4440799c46a372df9cad170fa0c21e59096",
      "parents": [
        "4fe70410d9a219dabb47328effccae7e7f2a6e26",
        "2e572895bf3203e881356a4039ab0fa428ed2639"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Apr 01 21:54:19 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Apr 02 00:49:02 2009 +0200"
      },
      "message": "Merge branch \u0027tracing/core-v2\u0027 into tracing-for-linus\n\nConflicts:\n\tinclude/linux/slub_def.h\n\tlib/Kconfig.debug\n\tmm/slob.c\n\tmm/slub.c\n"
    },
    {
      "commit": "bb75efddeaca89f8a67fd82cdcbaaf436cf17ca9",
      "tree": "a0c5c0d07a62b002f2793ac8d57aa1c3b1791925",
      "parents": [
        "97c12f85ac5e4ac2faee6cada014ac6205105b19"
      ],
      "author": {
        "name": "Russell King",
        "email": "rmk@arm.linux.org.uk",
        "time": "Sun Mar 29 17:12:22 2009 +0100"
      },
      "committer": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Mon Mar 30 22:05:18 2009 +1030"
      },
      "message": "oprofile: Thou shalt not call __exit functions from __init functions\n\nImpact: fix ref to discarded function\n\n`buffer_sync_cleanup\u0027 referenced in section `.init.text\u0027 of arch/arm/oprofile/built-in.o: defined in discarded section `.exit.text\u0027 of arch/arm/oprofile/built-in.o\n\nSigned-off-by: Russell King \u003crmk+kernel@arm.linux.org.uk\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\n"
    },
    {
      "commit": "d95c3578120e5bc4784069439f00ccb1b5f87717",
      "tree": "c819de31de3983f3d69f223ede07667ff23bf7da",
      "parents": [
        "ba1d755a36f66101aa88ac9ebb54694def6ec38d",
        "78b020d035074fc3aa4d017353bb2c32e2aff56f"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 11 10:49:34 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Mar 11 10:49:34 2009 +0100"
      },
      "message": "Merge branch \u0027x86/core\u0027 into cpus4096\n"
    },
    {
      "commit": "f0ef03985130287c6c84ebe69416cf790e6cc00e",
      "tree": "3ecb04cc4d82e5fc3ae5f1747e6da172ae8cbcb7",
      "parents": [
        "16097439703bcd38e9fe5608c12add6dacb825ea",
        "31bbed527e7039203920c51c9fb48c27aed0820c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 06 16:44:14 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Mar 06 16:45:01 2009 +0100"
      },
      "message": "Merge branch \u0027x86/core\u0027 into tracing/textedit\n\nConflicts:\n\tarch/x86/Kconfig\n\tblock/blktrace.c\n\tkernel/irq/handle.c\n\nSemantic conflict:\n\tkernel/trace/blktrace.c\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "304cc6ae1bf7a8e6d00053fbe0b7e2b26cdddda2",
      "tree": "2fab76394a32e42cd63d353bb8d943b4b7851825",
      "parents": [
        "b6f11df26fdc28324cf9c9e3b77f2dc985c1bb13"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 06 01:12:02 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Feb 06 01:14:05 2009 +0100"
      },
      "message": "ring_buffer: remove unused flags parameter, fix\n\nOprofile\u0027s ring-buffer use was not considered.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3ddeb51d9c83931c1ca6abf76a38934c5a1ed918",
      "tree": "fc2efb59d627135ea2199a8a68415b162646b121",
      "parents": [
        "5a611268b69f05262936dd177205acbce4471358",
        "5ee810072175042775e39bdd3eaaa68884c27805"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 27 12:01:51 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jan 27 12:01:51 2009 +0100"
      },
      "message": "Merge branch \u0027linus\u0027 into core/percpu\n\nConflicts:\n\tarch/x86/kernel/setup_percpu.c\n"
    },
    {
      "commit": "4c50d9ea9ca9e46b65aeffed3e0d6f54ff38c8d4",
      "tree": "c153b251584bcfbfb8fbbf849400e28d2c8c3720",
      "parents": [
        "5766b842b23c6b40935a5f3bd435b2bcdaff2143"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Thu Jan 22 14:14:14 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jan 22 14:37:06 2009 +0100"
      },
      "message": "cpumask: modifiy oprofile initialization\n\nDelta patch to f7df8ed164996cd2c6aca9674388be6ef78d8b37 for\ntip/cpus4096.\n\nMoved initialization to sync_start()/sync_stop(). No changes needed in\nbuffer_sync.h and oprof.c anymore.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "fdb6a8f4db813b4e50f4e975efe6be12ba5bf460",
      "tree": "ffb4cd30eb41639779925f7c81eaba0e95e9261a",
      "parents": [
        "c903ff837909ccada51243307d4239f86af40179"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Sat Jan 17 17:13:27 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Jan 17 17:26:39 2009 +0100"
      },
      "message": "oprofile: fix uninitialized use of struct op_entry\n\nImpact: fix crash\n\nIn case of losing samples struct op_entry could have been used\nuninitialized causing e.g. a wrong preemption count or NULL pointer\naccess. This patch fixes this.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f7df8ed164996cd2c6aca9674388be6ef78d8b37",
      "tree": "cdd2cb084b8aa19f6688b24aefe71d170a8c8c22",
      "parents": [
        "fbd59a8d1f7cf325fdb6828659f1fb76631e87b3"
      ],
      "author": {
        "name": "Rusty Russell",
        "email": "rusty@rustcorp.com.au",
        "time": "Sat Jan 10 21:58:09 2009 -0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Jan 11 19:12:52 2009 +0100"
      },
      "message": "cpumask: convert misc driver functions\n\nImpact: use new cpumask API.\n\nConvert misc driver functions to use struct cpumask.\n\nTo Do:\n  - Convert iucv_buffer_cpumask to cpumask_var_t.\n\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Mike Travis \u003ctravis@sgi.com\u003e\nAcked-by: Dean Nelson \u003cdcn@sgi.com\u003e\nCc: Robert Richter \u003crobert.richter@amd.com\u003e\nCc: oprofile-list@lists.sf.net\nCc: Jeremy Fitzhardinge \u003cjeremy@xensource.com\u003e\nCc: Chris Wright \u003cchrisw@sous-sol.org\u003e\nCc: virtualization@lists.osdl.org\nCc: xen-devel@lists.xensource.com\nCc: Ursula Braun \u003cursula.braun@de.ibm.com\u003e\nCc: linux390@de.ibm.com\nCc: linux-s390@vger.kernel.org\n"
    },
    {
      "commit": "4ce5f24193cef2e26f182ce708e94ba1f5fafc0c",
      "tree": "300373440be70af7c8ce662d4b30d8103e7c6026",
      "parents": [
        "7c51d57e9d7fbce89f79c41dc8da383101dbe9c6",
        "a076aa4f96f40fc75451ae835a1a665ce1faf951"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 09 12:43:06 2009 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Fri Jan 09 12:43:06 2009 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile\n\n* \u0027for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/rric/oprofile: (31 commits)\n  powerpc/oprofile: fix whitespaces in op_model_cell.c\n  powerpc/oprofile: IBM CELL: add SPU event profiling support\n  powerpc/oprofile: fix cell/pr_util.h\n  powerpc/oprofile: IBM CELL: cleanup and restructuring\n  oprofile: make new cpu buffer functions part of the api\n  oprofile: remove #ifdef CONFIG_OPROFILE_IBS in non-ibs code\n  ring_buffer: fix ring_buffer_event_length()\n  oprofile: use new data sample format for ibs\n  oprofile: add op_cpu_buffer_get_data()\n  oprofile: add op_cpu_buffer_add_data()\n  oprofile: rework implementation of cpu buffer events\n  oprofile: modify op_cpu_buffer_read_entry()\n  oprofile: add op_cpu_buffer_write_reserve()\n  oprofile: rename variables in add_ibs_begin()\n  oprofile: rename add_sample() in cpu_buffer.c\n  oprofile: rename variable ibs_allowed to has_ibs in op_model_amd.c\n  oprofile: making add_sample_entry() inline\n  oprofile: remove backtrace code for ibs\n  oprofile: remove unused ibs macro\n  oprofile: remove unused components in struct oprofile_cpu_buffer\n  ...\n"
    },
    {
      "commit": "14f0ca8eaea42a5b5a69cfcb699665dd2618db5f",
      "tree": "918cdb7d3ace9c84811bc606db631a1dc68496f7",
      "parents": [
        "ebf8d974e298018f0b4ee02b1b097bf5500d3d27"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 21:50:22 2009 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 22:48:15 2009 +0100"
      },
      "message": "oprofile: make new cpu buffer functions part of the api\n\nThis patch creates the new functions\n\n oprofile_write_reserve()\n oprofile_add_data()\n oprofile_write_commit()\n\nand makes them part of the oprofile api.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "ebf8d974e298018f0b4ee02b1b097bf5500d3d27",
      "tree": "84cdfc122513336bfda25be03d85518642b2f924",
      "parents": [
        "465634adc1d09b490c8ee31885575be39d375d53"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 00:20:57 2009 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 22:47:56 2009 +0100"
      },
      "message": "oprofile: remove #ifdef CONFIG_OPROFILE_IBS in non-ibs code\n\nThe ifdefs can be removed since the code is no longer ibs specific and\ncan be used for other purposes as well. IBS specific code is only in\nop_model_amd.c.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "1acda878e20ea0cd3708ba66dca67d52eaafdd2b",
      "tree": "97eb93396efc357f91dbd0ce080a5df51f29fd9b",
      "parents": [
        "bd7dc46f770d317ada1348294ff1f319243b803b"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Jan 05 10:35:31 2009 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 22:47:23 2009 +0100"
      },
      "message": "oprofile: use new data sample format for ibs\n\nThe new ring buffer implementation allows the storage of samples with\ndifferent size. This patch implements the usage of the new sample\nformat to store ibs samples in the cpu buffer. Until now, writing to\nthe cpu buffer could lead to incomplete sampling sequences since IBS\nsamples were transfered in multiple samples. Due to a full buffer,\ndata could be lost at any time. This can\u0027t happen any more since the\ncomplete data is reserved in advance and then stored in a single\nsample.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "bd7dc46f770d317ada1348294ff1f319243b803b",
      "tree": "b328520c9676e4787de076aeb6e5c4804cd14786",
      "parents": [
        "d9928c25a6960cf128c2078a89fe6f8e0180ff60"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue Jan 06 03:56:50 2009 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 22:45:46 2009 +0100"
      },
      "message": "oprofile: add op_cpu_buffer_get_data()\n\nThis function provides access to attached data of a sample. It returns\nthe size of data including the current value. Also,\nop_cpu_buffer_get_size() is available to check if there is data\nattached.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "d9928c25a6960cf128c2078a89fe6f8e0180ff60",
      "tree": "a6aa4141a531beb6f5d2025d8656d9404ae64ba8",
      "parents": [
        "ae735e9964b4584923f2997d98a8d80ae9c1a75c"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Thu Dec 25 17:26:07 2008 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 22:41:47 2009 +0100"
      },
      "message": "oprofile: add op_cpu_buffer_add_data()\n\nThis function can be used to attach data to a sample. It returns the\nremaining free buffer size that has been reserved with\nop_cpu_buffer_write_reserve().\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "ae735e9964b4584923f2997d98a8d80ae9c1a75c",
      "tree": "0fc72d18bcc5951f9dd519e8a4527593724b816f",
      "parents": [
        "2d87b14cf8d0b07720de26d90789d02124141616"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Thu Dec 25 17:26:07 2008 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 22:40:47 2009 +0100"
      },
      "message": "oprofile: rework implementation of cpu buffer events\n\nSpecial events such as task or context switches are marked with an\nescape code in the cpu buffer followed by an event code or a task\nidentifier. There is one escape code per event. To make escape\nsequences also available for data samples the internal cpu buffer\nformat must be changed. The current implementation does not allow the\nextension of event codes since this would lead to collisions with the\ntask identifiers. To avoid this, this patch introduces an event mask\nthat allows the storage of multiple events with one escape code. Now,\ntask identifiers are stored in the data section of the sample. The\nimplementation also allows the usage of custom data in a sample. As a\nside effect the new code is much more readable and easier to\nunderstand.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "2d87b14cf8d0b07720de26d90789d02124141616",
      "tree": "418285e8cd7127c6207ac9a3e1acf8f0f3c2282f",
      "parents": [
        "2cc28b9f261dd28d69767a34682ce55a27d928ed"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue Dec 30 04:10:46 2008 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 22:40:02 2009 +0100"
      },
      "message": "oprofile: modify op_cpu_buffer_read_entry()\n\nThis implements the support of samples with attached data.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "2cc28b9f261dd28d69767a34682ce55a27d928ed",
      "tree": "eb99ee33781cc79ab09f2d70c93f14c90c664f91",
      "parents": [
        "d358e75fc40cc3bbab11654ba0a88b232c543d12"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Thu Dec 25 17:26:07 2008 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 22:37:44 2009 +0100"
      },
      "message": "oprofile: add op_cpu_buffer_write_reserve()\n\nThis function prepares the cpu buffer to write a sample.\n\nStruct op_entry is used during operations on the ring buffer while\nstruct op_sample contains the data that is stored in the ring\nbuffer. Struct entry can be uninitialized. The function reserves a\ndata array that is specified by size. Use op_cpu_buffer_write_commit()\nafter preparing the sample. In case of errors a null pointer is\nreturned, otherwise the pointer to the sample.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "d358e75fc40cc3bbab11654ba0a88b232c543d12",
      "tree": "d69d24b7646b4d47b9ac4a891bdfa51bbc97a07c",
      "parents": [
        "d0e233846dcef56ae78f6d8fd0e0cba85a2a1489"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Jan 05 13:14:04 2009 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 22:35:42 2009 +0100"
      },
      "message": "oprofile: rename variables in add_ibs_begin()\n\nThis unifies usage of variable names within oprofile.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "d0e233846dcef56ae78f6d8fd0e0cba85a2a1489",
      "tree": "91caf0a91407983fcddfc6b1496d23575ba9d079",
      "parents": [
        "fc81be8ca29e28bfb89aa23359036a8ad4118d0f"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue Dec 23 04:03:05 2008 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 22:35:26 2009 +0100"
      },
      "message": "oprofile: rename add_sample() in cpu_buffer.c\n\nRename the fucntion to op_add_sample() since there is a collision with\nanother one with the same name in buffer_sync.c.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "6368a1f4d99fe9a1990ef3f04ab2d2ce9dad0a7c",
      "tree": "f830decbd97f864219c87b2b3e7a3ee0531e59e7",
      "parents": [
        "8350c78734e67ac1f8bfd4eb14b70ff4d01a9a12"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Dec 29 18:44:21 2008 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 17:06:47 2009 +0100"
      },
      "message": "oprofile: making add_sample_entry() inline\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "8350c78734e67ac1f8bfd4eb14b70ff4d01a9a12",
      "tree": "a4a78d79a0d88f98fffab92e66906121841ca893",
      "parents": [
        "f4ff2364417f0092e49f6a3aa474549a56697f2d"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Fri Dec 19 12:59:28 2008 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 17:06:32 2009 +0100"
      },
      "message": "oprofile: remove backtrace code for ibs\n\nThis code is broken since a TRACE_BEGIN_CODE is never sent to the\ndaemon. The data becomes corrupt since the backtrace is interpreted as\nibs sample.\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "f4ff2364417f0092e49f6a3aa474549a56697f2d",
      "tree": "a22ba592e88e378a51770fc46f81bb7b2026d2a5",
      "parents": [
        "8d15df84a42b140a8262a325b987a283ef9f5f63"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Mon Jan 05 11:27:52 2009 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 17:06:16 2009 +0100"
      },
      "message": "oprofile: remove unused ibs macro\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "8d15df84a42b140a8262a325b987a283ef9f5f63",
      "tree": "fdddf392dee4a9674138753004fd00637f6f5bcc",
      "parents": [
        "dbe6e2835e32461e7d592077947081c32f3da1d5"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Dec 24 15:42:58 2008 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 17:06:00 2009 +0100"
      },
      "message": "oprofile: remove unused components in struct oprofile_cpu_buffer\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    },
    {
      "commit": "dbe6e2835e32461e7d592077947081c32f3da1d5",
      "tree": "5214ed8375f061ee34cfb97301b2026f5a1a227d",
      "parents": [
        "3967e93e063d7ee608f465cbccb65abb518e9d33"
      ],
      "author": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Tue Dec 16 11:01:18 2008 +0100"
      },
      "committer": {
        "name": "Robert Richter",
        "email": "robert.richter@amd.com",
        "time": "Wed Jan 07 17:05:44 2009 +0100"
      },
      "message": "oprofile: simplify add_ibs_begin()\n\nSigned-off-by: Robert Richter \u003crobert.richter@amd.com\u003e\n"
    }
  ],
  "next": "56ff5efad96182f4d3cb3dc6b07396762c658f16"
}
