)]}'
{
  "log": [
    {
      "commit": "3340808cf04faad7b87d6c6e13800825e5552b51",
      "tree": "6f6f10c00a7172043a39abb03527ead9f5c56ab3",
      "parents": [
        "765a5e0cb581ef32646f58a213b38b56c77709b0"
      ],
      "author": {
        "name": "Dan Carpenter",
        "email": "dan.carpenter@oracle.com",
        "time": "Wed Apr 18 14:28:10 2012 +0300"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 18 13:38:48 2012 +0200"
      },
      "message": "debugobjects: Fill_pool() returns void now\n\nThere was a return missed in 1fda107d44 \"debugobjects: Remove unused\nreturn value from fill_pool()\".  It makes gcc complain:\n\n\tlib/debugobjects.c: In function ‘fill_pool’:\n\tlib/debugobjects.c:98:4: warning: ‘return’ with a value, in\n\t\tfunction returning void [enabled by default]\n\nSigned-off-by: Dan Carpenter \u003cdan.carpenter@oracle.com\u003e\nLink: http://lkml.kernel.org/r/20120418112810.GA2669@elgon.mountain\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "765a5e0cb581ef32646f58a213b38b56c77709b0",
      "tree": "a26024288f0dba86084adc716bb4e0f82b155b04",
      "parents": [
        "1fda107d44de1e8df2bdfd1d4a2c12a338b8d725"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 11 11:54:27 2012 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 11 11:56:17 2012 +0200"
      },
      "message": "debugobjects: printk with irqs enabled\n\nNo point in keeping interrupts disabled here.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "1fda107d44de1e8df2bdfd1d4a2c12a338b8d725",
      "tree": "c15e86b196d23d8328f0d101170bd07057214b27",
      "parents": [
        "923e9a1399b620d063cd88537c64561bc3d5f905"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 11 11:52:18 2012 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 11 11:56:17 2012 +0200"
      },
      "message": "debugobjects: Remove unused return value from fill_pool()\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "9f78ff005a6b6313728247113948450b2adddde8",
      "tree": "91bf021b9d2d1a09ae74a39c11275aacaf6082f1",
      "parents": [
        "9354f1b8e6c55c335d1c4fb10d0ae7a041935240"
      ],
      "author": {
        "name": "Stephen Boyd",
        "email": "sboyd@codeaurora.org",
        "time": "Mon Mar 05 14:59:17 2012 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Mon Mar 05 15:49:43 2012 -0800"
      },
      "message": "debugobjects: Fix selftest for static warnings\n\ndebugobjects is now printing a warning when a fixup for a NOTAVAILABLE\nobject is run.  This causes the selftest to fail like:\n\n\tODEBUG: selftest warnings failed 4 !\u003d 5\n\nWe could just increase the number of warnings that the selftest is\nexpecting to see because that is actually what has changed.  But, it turns\nout that fixup_activate() was written with inverted logic and thus a fixup\nfor a static object returned 1 indicating the object had been fixed, and 0\notherwise.  Fix the logic to be correct and update the counts to reflect\nthat nothing needed fixing for a static object.\n\nSigned-off-by: Stephen Boyd \u003csboyd@codeaurora.org\u003e\nReported-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "b84d435cc228e87951f3bbabf6cc4a5f25d5fb16",
      "tree": "4a43e7224c49f1ef9b3f25d38a80c29c2692b8dc",
      "parents": [
        "feac18dda25134005909e7770c77464e65608bd8"
      ],
      "author": {
        "name": "Christine Chan",
        "email": "cschan@codeaurora.org",
        "time": "Mon Nov 07 19:48:27 2011 -0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 23 18:49:22 2011 +0100"
      },
      "message": "debugobjects: Extend to assert that an object is initialized\n\nCalling del_timer_sync() on an uninitialized timer leads to a\nnever ending loop in lock_timer_base() that spins checking for a\nnon-NULL timer base. Add an assertion to debugobjects to catch\nusage of uninitialized objects so that we can initialize timers\nin the del_timer_sync() path before it calls lock_timer_base().\n\n[ sboyd@codeaurora.org: Clarify commit message ]\n\nSigned-off-by: Christine Chan \u003ccschan@codeaurora.org\u003e\nSigned-off-by: Stephen Boyd \u003csboyd@codeaurora.org\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nLink: http://lkml.kernel.org/r/1320724108-20788-3-git-send-email-sboyd@codeaurora.org\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "feac18dda25134005909e7770c77464e65608bd8",
      "tree": "2c3b2d2dfe0ca8ed9f12e49da9f86ad7845bf002",
      "parents": [
        "c5e0c7825d3a14c2dfc383763393f0bcb5400aa6"
      ],
      "author": {
        "name": "Stephen Boyd",
        "email": "sboyd@codeaurora.org",
        "time": "Mon Nov 07 19:48:26 2011 -0800"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Nov 23 18:49:22 2011 +0100"
      },
      "message": "debugobjects: Be smarter about static objects\n\nMake debugobjects use the return code from the fixup function. That\nallows us better diagnostics in the activate check than relying on a\nWARN_ON() in the object specific code.\n\n[ tglx@linutronix.de: Split out the debugobjects vs. the timer change ]\n\nSigned-off-by: Stephen Boyd \u003csboyd@codeaurora.org\u003e\nCc: Christine Chan \u003ccschan@codeaurora.org\u003e\nCc: John Stultz \u003cjohn.stultz@linaro.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nLink: http://lkml.kernel.org/r/1320724108-20788-2-git-send-email-sboyd@codeaurora.org\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "161b6ae0e067e421b20bb35caf66bdb405c929ac",
      "tree": "ef8d7eb7d8b9acdfb6c6df40df771c6978d03132",
      "parents": [
        "f8b7fc6b514f34a51875dd48dff70d4d17a54f38"
      ],
      "author": {
        "name": "Marcin Slusarz",
        "email": "marcin.slusarz@gmail.com",
        "time": "Sat May 28 13:23:42 2011 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Jun 20 14:38:43 2011 +0200"
      },
      "message": "debugobjects: Fix boot crash when kmemleak and debugobjects enabled\n\nOrder of initialization look like this:\n...\ndebugobjects\nkmemleak\n...(lots of other subsystems)...\nworkqueues (through early initcall)\n...\n\ndebugobjects use schedule_work for batch freeing of its data and kmemleak\nheavily use debugobjects, so when it comes to freeing and workqueues were\nnot initialized yet, kernel crashes:\n\nBUG: unable to handle kernel NULL pointer dereference at           (null)\nIP: [\u003cffffffff810854d1\u003e] __queue_work+0x29/0x41a\n [\u003cffffffff81085910\u003e] queue_work_on+0x16/0x1d\n [\u003cffffffff81085abc\u003e] queue_work+0x29/0x55\n [\u003cffffffff81085afb\u003e] schedule_work+0x13/0x15\n [\u003cffffffff81242de1\u003e] free_object+0x90/0x95\n [\u003cffffffff81242f6d\u003e] debug_check_no_obj_freed+0x187/0x1d3\n [\u003cffffffff814b6504\u003e] ? _raw_spin_unlock_irqrestore+0x30/0x4d\n [\u003cffffffff8110bd14\u003e] ? free_object_rcu+0x68/0x6d\n [\u003cffffffff8110890c\u003e] kmem_cache_free+0x64/0x12c\n [\u003cffffffff8110bd14\u003e] free_object_rcu+0x68/0x6d\n [\u003cffffffff810b58bc\u003e] __rcu_process_callbacks+0x1b6/0x2d9\n...\n\nbecause system_wq is NULL.\n\nFix it by checking if workqueues susbystem was initialized before using.\n\nSigned-off-by: Marcin Slusarz \u003cmarcin.slusarz@gmail.com\u003e\nCc: Catalin Marinas \u003ccatalin.marinas@arm.com\u003e\nCc: Tejun Heo \u003ctj@kernel.org\u003e\nCc: Dipankar Sarma \u003cdipankar@in.ibm.com\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\nCc: stable@kernel.org\nLink: http://lkml.kernel.org/r/20110528112342.GA3068@joi.lan\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "997772884036e6e121de39322179989154437d9f",
      "tree": "618ef63c45e16892ea26a99cafef6b0442e8eca1",
      "parents": [
        "a5abba989deceb731047425812d268daf7536575"
      ],
      "author": {
        "name": "Stanislaw Gruszka",
        "email": "sgruszka@redhat.com",
        "time": "Mon Mar 07 09:58:33 2011 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 08 16:10:38 2011 +0100"
      },
      "message": "debugobjects: Add hint for better object identification\n\nIn complex subsystems like mac80211 structures can contain several\ntimers and work structs, so identifying a specific instance from the\ncall trace and object type output of debugobjects can be hard.\n\nAllow the subsystems which support debugobjects to provide a hint\nfunction. This function returns a pointer to a kernel address\n(preferrably the objects callback function) which is printed along\nwith the debugobjects type.\n\nAdd hint methods for timer_list, work_struct and hrtimer.\n\n[ tglx: Massaged changelog, made it compile ]\n\nSigned-off-by: Stanislaw Gruszka \u003csgruszka@redhat.com\u003e\nLKML-Reference: \u003c20110307085809.GA9334@redhat.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "f262af3d08d3fffc4e11277d3a177b2d67ea2aba",
      "tree": "cf5e4ac1bc39fe46cfbf4d17a0e9c71ee43b9728",
      "parents": [
        "1014cfe2fb4cdd663137aafb21448cb613dd6a7d",
        "72d5a9f7a9542f88397558c65bcfc3b115a65e34"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 08:17:58 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 08:17:58 2010 -0700"
      },
      "message": "Merge branch \u0027core-rcu-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-rcu-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (24 commits)\n  rcu: remove all rcu head initializations, except on_stack initializations\n  rcu head introduce rcu head init on stack\n  Debugobjects transition check\n  rcu: fix build bug in RCU_FAST_NO_HZ builds\n  rcu: RCU_FAST_NO_HZ must check RCU dyntick state\n  rcu: make SRCU usable in modules\n  rcu: improve the RCU CPU-stall warning documentation\n  rcu: reduce the number of spurious RCU_SOFTIRQ invocations\n  rcu: permit discontiguous cpu_possible_mask CPU numbering\n  rcu: improve RCU CPU stall-warning messages\n  rcu: print boot-time console messages if RCU configs out of ordinary\n  rcu: disable CPU stall warnings upon panic\n  rcu: enable CPU_STALL_VERBOSE by default\n  rcu: slim down rcutiny by removing rcu_scheduler_active and friends\n  rcu: refactor RCU\u0027s context-switch handling\n  rcu: rename rcutiny rcu_ctrlblk to rcu_sched_ctrlblk\n  rcu: shrink rcutiny by making synchronize_rcu_bh() be inline\n  rcu: fix now-bogus rcu_scheduler_active comments.\n  rcu: Fix bogus CONFIG_PROVE_LOCKING in comments to reflect reality.\n  rcu: ignore offline CPUs in last non-dyntick-idle CPU check\n  ...\n"
    },
    {
      "commit": "06ee772043c7ad125f2c2e6a08dc563706f39e8d",
      "tree": "36575def46dbf339c91bcfdf34737f81d887b1fc",
      "parents": [
        "fd25a1f556760dbd6e29dec66c70223a8912cdb2",
        "1fb2f77c037624601fd214fb7c29faa84cd7bdd7"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 07:20:19 2010 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue May 18 07:20:19 2010 -0700"
      },
      "message": "Merge branch \u0027core-debugobjects-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027core-debugobjects-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  debugobjects: Section mismatch cleanup\n"
    },
    {
      "commit": "a5d8e467f83f6672104f276223a88e3b50cbd375",
      "tree": "13f66a14b75735e5bbff450ae1f8975a0cb92543",
      "parents": [
        "d822ed1094032ab524344a9a474c93128d9c2159"
      ],
      "author": {
        "name": "Mathieu Desnoyers",
        "email": "mathieu.desnoyers@efficios.com",
        "time": "Sat Apr 17 08:48:38 2010 -0400"
      },
      "committer": {
        "name": "Paul E. McKenney",
        "email": "paulmck@linux.vnet.ibm.com",
        "time": "Mon May 10 16:08:01 2010 -0700"
      },
      "message": "Debugobjects transition check\n\nImplement a basic state machine checker in the debugobjects.\n\nThis state machine checker detects races and inconsistencies within the \"active\"\nlife of a debugobject. The checker only keeps track of the current state; all\nthe state machine logic is kept at the object instance level.\n\nThe checker works by adding a supplementary \"unsigned int astate\" field to the\ndebug_obj structure. It keeps track of the current \"active state\" of the object.\n\nThe only constraints that are imposed on the states by the debugobjects system\nis that:\n\n- activation of an object sets the current active state to 0,\n- deactivation of an object expects the current active state to be 0.\n\nFor the rest of the states, the state mapping is determined by the specific\nobject instance. Therefore, the logic keeping track of the state machine is\nwithin the specialized instance, without any need to know about it at the\ndebugobject level.\n\nThe current object active state is changed by calling:\n\ndebug_object_active_state(addr, descr, expect, next)\n\nwhere \"expect\" is the expected state and \"next\" is the next state to move to if\nthe expected state is found. A warning is generated if the expected is not\nfound.\n\nSigned-off-by: Mathieu Desnoyers \u003cmathieu.desnoyers@efficios.com\u003e\nReviewed-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: David S. Miller \u003cdavem@davemloft.net\u003e\nCC: \"Paul E. McKenney\" \u003cpaulmck@linux.vnet.ibm.com\u003e\nCC: akpm@linux-foundation.org\nCC: mingo@elte.hu\nCC: laijs@cn.fujitsu.com\nCC: dipankar@in.ibm.com\nCC: josh@joshtriplett.org\nCC: dvhltc@us.ibm.com\nCC: niv@us.ibm.com\nCC: peterz@infradead.org\nCC: rostedt@goodmis.org\nCC: Valdis.Kletnieks@vt.edu\nCC: dhowells@redhat.com\nCC: eric.dumazet@gmail.com\nCC: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nSigned-off-by: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\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": "1fb2f77c037624601fd214fb7c29faa84cd7bdd7",
      "tree": "9235ff2fc459b58695267a24e5f0fee770e2c8f5",
      "parents": [
        "220bf991b0366cc50a94feede3d7341fa5710ee4"
      ],
      "author": {
        "name": "Henrik Kretzschmar",
        "email": "henne@nachtwindheim.de",
        "time": "Fri Mar 26 20:38:35 2010 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Fri Mar 26 21:52:29 2010 +0100"
      },
      "message": "debugobjects: Section mismatch cleanup\n\nThis patch marks two functions, which only get called at\ninitialization, as __init.\n\nHere is also interesting, that modpost doesn\u0027t catch here the right\nfunction name.\n\nWARNING: lib/built-in.o(.text+0x585f): Section mismatch in reference\nfrom the function T.506() to the variable .init.data:obj\nThe function T.506() references the variable __initdata obj.\nThis is often because T.506 lacks a __initdata annotation or the \nannotation of obj is wrong.\n\nSigned-off-by: Henrik Kretzschmar \u003chenne@nachtwindheim.de\u003e\nLKML-Reference: \u003c1269632315-19403-1-git-send-email-henne@nachtwindheim.de\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "aef9cb05247df3d7615773737beb4f83d78577bb",
      "tree": "32e45f7d7cacb58c01b2a9fc1a49466cb0de6dfc",
      "parents": [
        "e625cce1b73fb38b74e5387226534f7bcbfc36fe"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Nov 17 18:11:28 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Dec 14 23:55:34 2009 +0100"
      },
      "message": "debugobjects: Convert to raw_spinlocks\n\nConvert locks which cannot be sleeping locks in preempt-rt to\nraw_spinlocks.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nAcked-by: Peter Zijlstra \u003cpeterz@infradead.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d43c36dc6b357fa1806800f18aa30123c747a6d1",
      "tree": "339ce510073ecbe9b3592008f7dece7b277035ef",
      "parents": [
        "69585dd69e663a40729492c7b52eb82477a2027a"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Oct 07 17:09:06 2009 +0400"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sun Oct 11 11:20:58 2009 -0700"
      },
      "message": "headers: remove sched.h from interrupt.h\n\nAfter m68k\u0027s task_thread_info() doesn\u0027t refer to current,\nit\u0027s possible to remove sched.h from interrupt.h and not break m68k!\nMany thanks to Heiko Carstens for allowing this.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\n"
    },
    {
      "commit": "337fff8b5ed0573ea106491c6de47bd7fe623500",
      "tree": "7fd379d4a3d23e055f19be2d447de2ea64ecd069",
      "parents": [
        "1be1cb7b47f0744141ed61cdb25648819ae1a56f"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 16 10:04:53 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 17 12:28:30 2009 +0100"
      },
      "message": "debugobjects: delay free of internal objects\n\nImpact: avoid recursive kfree calls, less slab activity on heavy load\n\ndebugobjects checks on kfree whether tracked objects are freed. When a\ntracked object is freed debugobjects frees the internal reference\nobject as well. The debug object slab cache is marked to not recurse\ninto debugobjects when a slab objects is freed, but the recursive call\ncan be problematic versus locking in the memory allocator.\n\nDefer the freeing of debug slab objects via schedule_work. The reasons\nnot to use RCU are:\n\n1) rcu makes the data structure larger\n2) there is no real need for rcu as nothing references the obj after\n   we freed it\n3) under heavy load it is easier to reuse the to be freed objects instead\n   of allocating new objects from the slab. This lowered the slab activity\n   significantly in a heavy load networking test where lots of timers are\n   created/destroyed. The workqueue based delayed free allows us just to\n   put the to be freed objects back into the object pool and reuse them\n   right away.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003c200903162049.58058.nickpiggin@yahoo.com.au\u003e\n"
    },
    {
      "commit": "1be1cb7b47f0744141ed61cdb25648819ae1a56f",
      "tree": "2d13d83492881e333f633f5513aec79b4816ff78",
      "parents": [
        "3e8ebb5c433f016dff5824587436642d87fc2e6c"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Mar 16 18:53:18 2009 +0100"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Tue Mar 17 12:28:30 2009 +0100"
      },
      "message": "debugobjects: replace static objects when slab cache becomes available\n\nImpact: refactor/consolidate object management, prepare for delayed free\n\ndebugobjects allocates static reference objects to track objects which\nare initialized or activated before the slab cache becomes\navailable. These static reference objects have to be handled\nseperately in free_object(). The handling of these objects is in the\nway of implementing a delayed free functionality. The delayed free is\nrequired to avoid callbacks into the mm code from\ndebug_check_no_obj_freed().\n\nReplace the static object references with dynamic ones after the slab\ncache has been initialized. The static objects are now marked initdata.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nLKML-Reference: \u003c200903162049.58058.nickpiggin@yahoo.com.au\u003e\n\n"
    },
    {
      "commit": "3e8ebb5c433f016dff5824587436642d87fc2e6c",
      "tree": "cc6c7cef8faadc1e61f66cf1241863afca722ebb",
      "parents": [
        "778ef1e6cbb049c9bcbf405936ee6f2b6e451892"
      ],
      "author": {
        "name": "Kyle McMartin",
        "email": "kyle@redhat.com",
        "time": "Sun Mar 01 20:41:41 2009 -0500"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Mar 02 12:04:01 2009 +0100"
      },
      "message": "debug_objects: add boot-parameter toggle to turn object debugging off again\n\nWhile trying to debug why my Atom netbook is falling over booting\nrawhide debug-enabled kernels, I stumbled across the fact that we\u0027ve\nbeen enabling object debugging by default. However, once you default it\nto on, you\u0027ve got no way to turn it back off again at runtime.\n\nAdd a boolean toggle to turn it off. I would just make it an int\nmodule_param, however people may already expect the boolean enable\nbehaviour, so just add an analogue for disabling.\n\nSigned-off-by: Kyle McMartin \u003ckyle@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3ae7020543db0b769538e64d1ce8d51fceff60ca",
      "tree": "ceb0b336afd954bbaff7c58002501b1486b74e03",
      "parents": [
        "ed313489badef16d700f5a3be50e8fd8f8294bc8"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 10:02:00 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 26 10:07:06 2008 +0100"
      },
      "message": "debugobjects: add boot parameter default value\n\nImpact: add .config driven boot parameter default value\n\nRight now debugobjects can only be activated if the debug_objects\nboot parameter is passed in via the boot command line.\n\nMake this more convenient (and randomizable) by also providing\na .config method. Enable it by default. (DEBUG_OBJECTS itself\nis default-off)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "673d62cc5ea6fca046650f17f77985b112c62322",
      "tree": "7cde0d756ffa71ad732cc079d28254b256c14e68",
      "parents": [
        "bef69ea0dcce574a425feb0a5aa4c63dd108b9a6"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Sun Aug 31 23:39:21 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Mon Sep 01 09:47:16 2008 +0200"
      },
      "message": "debugobjects: fix lockdep warning\n\nDaniel J. Blueman reported:\n\u003e \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\u003e [ INFO: possible circular locking dependency detected ]\n\u003e 2.6.27-rc4-224c #1\n\u003e -------------------------------------------------------\n\u003e hald/4680 is trying to acquire lock:\n\u003e  (\u0026n-\u003elist_lock){++..}, at: [\u003cffffffff802bfa26\u003e] add_partial+0x26/0x80\n\u003e\n\u003e but task is already holding lock:\n\u003e  (\u0026obj_hash[i].lock){++..}, at: [\u003cffffffff8041cfdc\u003e]\n\u003e debug_object_free+0x5c/0x120\n\nWe fix it by moving the actual freeing to outside the lock (the lock\nnow only protects the list).\n\nThe pool lock is also promoted to irq-safe (suggested by Dan). It\u0027s\nnecessary because free_pool is now called outside the irq disabled\nregion. So we need to protect against an interrupt handler which calls\ndebug_object_init().\n\n[tglx@linutronix.de: added hlist_move_list helper to avoid looping\n\t\t     through the list twice]\n\nReported-by: Daniel J Blueman \u003cdaniel.blueman@gmail.com\u003e\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n"
    },
    {
      "commit": "5cd2b459d326a424671dcd95f038649f7bf7cb96",
      "tree": "824514753e173bb69d3fde5fab18f8ddf909751d",
      "parents": [
        "f810a5cf28a818db96333cd23646f0227ec015b4"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@linux.intel.com",
        "time": "Fri Jul 25 19:45:39 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Sat Jul 26 12:00:07 2008 -0700"
      },
      "message": "Use WARN() in lib/\n\nUse WARN() instead of a printk+WARN_ON() pair; this way the message becomes\npart of the warning section for better reporting/collection.  In addition, one\nof the if() clauses collapes into the WARN() entirely now.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8b05c7e6e159d2f33c9275281b8b909a89eb7c5d",
      "tree": "646edb14c42d6404e36f1602d47c639c72a8300a",
      "parents": [
        "68ad8df42e12037c3894c9706ab428bf5cd6426b"
      ],
      "author": {
        "name": "FUJITA Tomonori",
        "email": "fujita.tomonori@lab.ntt.co.jp",
        "time": "Wed Jul 23 21:26:53 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Jul 24 10:47:14 2008 -0700"
      },
      "message": "add a helper function to test if an object is on the stack\n\nlib/debugobjects.c has a function to test if an object is on the stack.\nThe block layer and ide needs it (they need to avoid DMA from/to stack\nbuffers).  This patch moves the function to include/linux/sched.h so that\neveryone can use it.\n\nlib/debugobjects.c uses current-\u003estack but this patch uses a\ntask_stack_page() accessor, which is a preferable way to access the stack.\n\nSigned-off-by: FUJITA Tomonori \u003cfujita.tomonori@lab.ntt.co.jp\u003e\nCc: Christoph Lameter \u003ccl@linux-foundation.org\u003e\nCc: Andy Whitcroft \u003capw@shadowen.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "50db04dd9c74178e68a981a7127c37252ffb3242",
      "tree": "ac961b1ccc6f5073537be2b4b731bc79ec5448c4",
      "parents": [
        "952f4a0a9b27e6dbd5d32e330b3f609ebfa0b061"
      ],
      "author": {
        "name": "Vegard Nossum",
        "email": "vegard.nossum@gmail.com",
        "time": "Sun Jun 15 00:47:36 2008 +0200"
      },
      "committer": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Jun 18 11:09:54 2008 +0200"
      },
      "message": "debugobjects: fix lockdep warning\n\nDaniel J Blueman reported:\n| \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n| [ INFO: possible circular locking dependency detected ]\n| 2.6.26-rc5-201c #1\n| -------------------------------------------------------\n| nscd/3669 is trying to acquire lock:\n|  (\u0026n-\u003elist_lock){.+..}, at: [\u003cffffffff802bab03\u003e] deactivate_slab+0x173/0x1e0\n|\n| but task is already holding lock:\n|  (\u0026obj_hash[i].lock){++..}, at: [\u003cffffffff803fa56f\u003e]\n| __debug_object_init+0x2f/0x350\n|\n| which lock already depends on the new lock.\n\nThere are two locks involved here; the first is a SLUB-local lock, and\nthe second is a debugobjects-local lock. They are basically taken in two\ndifferent orders:\n\n1. SLUB { debugobjects { ... } }\n2. debugobjects { SLUB { ... } }\n\nThis patch changes pattern #2 by trying to fill the memory pool (e.g.\nthe call into SLUB/kmalloc()) outside the debugobjects lock, so now the\ntwo patterns look like this:\n\n1. SLUB { debugobjects { ... } }\n2. SLUB { } debugobjects { ... }\n\n[ daniel.blueman@gmail.com: pool_lock needs to be taken irq safe in fill_pool ]\n\nReported-by: Daniel J Blueman \u003cdaniel.blueman@gmail.com\u003e\nSigned-off-by: Vegard Nossum \u003cvegard.nossum@gmail.com\u003e\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\n\n"
    },
    {
      "commit": "3ac7fe5a4aab409bd5674d0b070bce97f9d20872",
      "tree": "5e12e8864bb8737695e4eb9c63970602d5f69e73",
      "parents": [
        "30327acf7846c5eb97c8e31c78317a2918d3e515"
      ],
      "author": {
        "name": "Thomas Gleixner",
        "email": "tglx@linutronix.de",
        "time": "Wed Apr 30 00:55:01 2008 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Wed Apr 30 08:29:53 2008 -0700"
      },
      "message": "infrastructure to debug (dynamic) objects\n\nWe can see an ever repeating problem pattern with objects of any kind in the\nkernel:\n\n1) freeing of active objects\n2) reinitialization of active objects\n\nBoth problems can be hard to debug because the crash happens at a point where\nwe have no chance to decode the root cause anymore.  One problem spot are\nkernel timers, where the detection of the problem often happens in interrupt\ncontext and usually causes the machine to panic.\n\nWhile working on a timer related bug report I had to hack specialized code\ninto the timer subsystem to get a reasonable hint for the root cause.  This\ndebug hack was fine for temporary use, but far from a mergeable solution due\nto the intrusiveness into the timer code.\n\nThe code further lacked the ability to detect and report the root cause\ninstantly and keep the system operational.\n\nKeeping the system operational is important to get hold of the debug\ninformation without special debugging aids like serial consoles and special\nknowledge of the bug reporter.\n\nThe problems described above are not restricted to timers, but timers tend to\nexpose it usually in a full system crash.  Other objects are less explosive,\nbut the symptoms caused by such mistakes can be even harder to debug.\n\nInstead of creating specialized debugging code for the timer subsystem a\ngeneric infrastructure is created which allows developers to verify their code\nand provides an easy to enable debug facility for users in case of trouble.\n\nThe debugobjects core code keeps track of operations on static and dynamic\nobjects by inserting them into a hashed list and sanity checking them on\nobject operations and provides additional checks whenever kernel memory is\nfreed.\n\nThe tracked object operations are:\n- initializing an object\n- adding an object to a subsystem list\n- deleting an object from a subsystem list\n\nEach operation is sanity checked before the operation is executed and the\nsubsystem specific code can provide a fixup function which allows to prevent\nthe damage of the operation.  When the sanity check triggers a warning message\nand a stack trace is printed.\n\nThe list of operations can be extended if the need arises.  For now it\u0027s\nlimited to the requirements of the first user (timers).\n\nThe core code enqueues the objects into hash buckets.  The hash index is\ngenerated from the address of the object to simplify the lookup for the check\non kfree/vfree.  Each bucket has it\u0027s own spinlock to avoid contention on a\nglobal lock.\n\nThe debug code can be compiled in without being active.  The runtime overhead\nis minimal and could be optimized by asm alternatives.  A kernel command line\noption enables the debugging code.\n\nThanks to Ingo Molnar for review, suggestions and cleanup patches.\n\nSigned-off-by: Thomas Gleixner \u003ctglx@linutronix.de\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Greg KH \u003cgreg@kroah.com\u003e\nCc: Randy Dunlap \u003crandy.dunlap@oracle.com\u003e\nCc: Kay Sievers \u003ckay.sievers@vrfy.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    }
  ]
}
