)]}'
{
  "log": [
    {
      "commit": "b351d164e860d1ffffdc501c32f55dd1446c385b",
      "tree": "6fcef2c4ece9ff2772306a3b65e9c7e2fcc4d39a",
      "parents": [
        "e4564f79d4b6923da7360df4b24a48cc2d4160de"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Oct 11 22:11:12 2007 +0200"
      },
      "committer": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Oct 11 22:11:12 2007 +0200"
      },
      "message": "lockdep: syscall exit check\n\nProvide a check to validate that we do not hold any locks when switching\nback to user-space.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3aa416b07f0adf01c090baab26fb70c35ec17623",
      "tree": "a2c2c2f7bd8445b138b293ba6661833f970954ee",
      "parents": [
        "94c61c0aeffe64452e742087cf803d0347ef8418"
      ],
      "author": {
        "name": "Gregory Haskins",
        "email": "ghaskins@novell.com",
        "time": "Thu Oct 11 22:11:11 2007 +0200"
      },
      "committer": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Oct 11 22:11:11 2007 +0200"
      },
      "message": "lockdep: fix mismatched lockdep_depth/curr_chain_hash\nIt is possible for the current-\u003ecurr_chain_key to become inconsistent with the\ncurrent index if the chain fails to validate.  The end result is that future\nlock_acquire() operations may inadvertently fail to find a hit in the cache\nresulting in a new node being added to the graph for every acquire.\n\nSigned-off-by: Gregory Haskins \u003cghaskins@novell.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c71063c9c9dc232d0d51f936f237f7dc5681e8e3",
      "tree": "3f56b9e12c86b2afe9e613e868001654240aabb7",
      "parents": [
        "d38e1d5aaee384698fcef9455d6e2df1d062a1d0"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Thu Jul 19 01:49:02 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:49 2007 -0700"
      },
      "message": "lockdep debugging: give stacktrace for init_error\n\nWhen I started adding support for lockdep to 64-bit powerpc, I got a\nlockdep_init_error and with this patch was able to pinpoint why and where\nto put lockdep_init().  Let\u0027s support this generally for others adding\nlockdep support to their architecture.\n\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Arjan van de Ven \u003carjan@infradead.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "96645678cd726e87ce42a0664de71e047e32bca4",
      "tree": "116f568a090414777b481e8e5d9db55f420e4335",
      "parents": [
        "443aef0eddfa44c158d1b94ebb431a70638fcab4"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 19 01:49:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:49 2007 -0700"
      },
      "message": "lockstat: measure lock bouncing\n\n    __acquire\n        |\n       lock _____\n        |        \\\n        |    __contended\n        |         |\n        |        wait\n        | _______/\n        |/\n        |\n   __acquired\n        |\n   __release\n        |\n     unlock\n\nWe measure acquisition and contention bouncing.\n\nThis is done by recording a cpu stamp in each lock instance.\n\nContention bouncing requires the cpu stamp to be set on acquisition. Hence we\nmove __acquired into the generic path.\n\n__acquired is then used to measure acquisition bouncing by comparing the\ncurrent cpu with the old stamp before replacing it.\n\n__contended is used to measure contention bouncing (only useful for preemptable\nlocks)\n\n[akpm@linux-foundation.org: cleanups]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\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": "4b32d0a4e9ec07808a5c406a416c6576c986b047",
      "tree": "9157e27e485723b6806fbab8926e9e5fcd5397e6",
      "parents": [
        "4fe87745a6722d42ff27a60768c77958fa1fc498"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 19 01:48:59 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:49 2007 -0700"
      },
      "message": "lockdep: various fixes\n\n - update the copyright notices\n - use the default hash function\n - fix a thinko in a BUILD_BUG_ON\n - add a WARN_ON to spot inconsitent naming\n - fix a termination issue in /proc/lock_stat\n\n[akpm@linux-foundation.org: cleanups]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\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": "c46261de0d98372112d8edf16f74ce418a268d46",
      "tree": "b502a5872f3d4bd11254755defac0720ef072faf",
      "parents": [
        "f20786ff4da51e56b1956acf30be2552be266746"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 19 01:48:57 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:49 2007 -0700"
      },
      "message": "lockstat: human readability tweaks\n\nPresent all this fancy new lock statistics information:\n\n*warning, _wide_ output ahead*\n\n(output edited for purpose of brevity)\n\n # cat /proc/lock_stat\nlock_stat version 0.1\n-----------------------------------------------------------------------------------------------------------------------------------------------------------------\n                              class name    contentions   waittime-min   waittime-max waittime-total   acquisitions   holdtime-min   holdtime-max holdtime-total\n-----------------------------------------------------------------------------------------------------------------------------------------------------------------\n\n                         \u0026inode-\u003ei_mutex:         14458           6.57      398832.75     2469412.23        6768876           0.34    11398383.65   339410830.89\n                         ---------------\n                         \u0026inode-\u003ei_mutex           4486          [\u003cffffffff802a08f9\u003e] pipe_wait+0x86/0x8d\n                         \u0026inode-\u003ei_mutex              0          [\u003cffffffff802a01e8\u003e] pipe_write_fasync+0x29/0x5d\n                         \u0026inode-\u003ei_mutex              0          [\u003cffffffff802a0e18\u003e] pipe_read+0x74/0x3a5\n                         \u0026inode-\u003ei_mutex              0          [\u003cffffffff802a1a6a\u003e] do_lookup+0x81/0x1ae\n\n.................................................................................................................................................................\n\n              \u0026inode-\u003ei_data.tree_lock-W:           491           0.27          62.47         493.89        2477833           0.39         468.89     1146584.25\n              \u0026inode-\u003ei_data.tree_lock-R:            65           0.44           4.27          48.78       26288792           0.36         184.62    10197458.24\n              --------------------------\n                \u0026inode-\u003ei_data.tree_lock             46          [\u003cffffffff80277095\u003e] __do_page_cache_readahead+0x69/0x24f\n                \u0026inode-\u003ei_data.tree_lock             31          [\u003cffffffff8026f9fb\u003e] add_to_page_cache+0x31/0xba\n                \u0026inode-\u003ei_data.tree_lock              0          [\u003cffffffff802770ee\u003e] __do_page_cache_readahead+0xc2/0x24f\n                \u0026inode-\u003ei_data.tree_lock              0          [\u003cffffffff8026f6e4\u003e] find_get_page+0x1a/0x58\n\n.................................................................................................................................................................\n\n                      proc_inum_idr.lock:             0           0.00           0.00           0.00             36           0.00          65.60         148.26\n                        proc_subdir_lock:             0           0.00           0.00           0.00        3049859           0.00         106.81     1563212.42\n                        shrinker_rwsem-W:             0           0.00           0.00           0.00              5           0.00           1.73           3.68\n                        shrinker_rwsem-R:             0           0.00           0.00           0.00            633           2.57         246.57       10909.76\n\n\u0027contentions\u0027 and \u0027acquisitions\u0027 are the number of such events measured (since\nthe last reset). The waittime- and holdtime- (min, max, total) numbers are\npresented in microseconds.\n\nIf there are any contention points, the lock class is presented in the block\nformat (as i_mutex and tree_lock above), otherwise a single line of output is\npresented.\n\nThe output is sorted on absolute number of contentions (read + write), this\nshould get the worst offenders presented first, so that:\n\n # grep : /proc/lock_stat | head\n\nwill quickly show who\u0027s bad.\n\nThe stats can be reset using:\n\n # echo 0 \u003e /proc/lock_stat\n\n[bunk@stusta.de: make 2 functions static]\n[akpm@linux-foundation.org: fix printk warning]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "f20786ff4da51e56b1956acf30be2552be266746",
      "tree": "f6d0a9ed84ca476ca19fe7131d842699881756c4",
      "parents": [
        "8e18257d29238311e82085152741f0c3aa18b74d"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 19 01:48:56 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:49 2007 -0700"
      },
      "message": "lockstat: core infrastructure\n\nIntroduce the core lock statistics code.\n\nLock statistics provides lock wait-time and hold-time (as well as the count\nof corresponding contention and acquisitions events). Also, the first few\ncall-sites that encounter contention are tracked.\n\nLock wait-time is the time spent waiting on the lock. This provides insight\ninto the locking scheme, that is, a heavily contended lock is indicative of\na too coarse locking scheme.\n\nLock hold-time is the duration the lock was held, this provides a reference for\nthe wait-time numbers, so they can be put into perspective.\n\n  1)\n    lock\n  2)\n    ... do stuff ..\n    unlock\n  3)\n\nThe time between 1 and 2 is the wait-time. The time between 2 and 3 is the\nhold-time.\n\nThe lockdep held-lock tracking code is reused, because it already collects locks\ninto meaningful groups (classes), and because it is an existing infrastructure\nfor lock instrumentation.\n\nCurrently lockdep tracks lock acquisition with two hooks:\n\n  lock()\n    lock_acquire()\n    _lock()\n\n ... code protected by lock ...\n\n  unlock()\n    lock_release()\n    _unlock()\n\nWe need to extend this with two more hooks, in order to measure contention.\n\n  lock_contended() - used to measure contention events\n  lock_acquired()  - completion of the contention\n\nThese are then placed the following way:\n\n  lock()\n    lock_acquire()\n    if (!_try_lock())\n      lock_contended()\n      _lock()\n      lock_acquired()\n\n ... do locked stuff ...\n\n  unlock()\n    lock_release()\n    _unlock()\n\n(Note: the try_lock() \u0027trick\u0027 is used to avoid instrumenting all platform\n       dependent lock primitive implementations.)\n\nIt is also possible to toggle the two lockdep features at runtime using:\n\n  /proc/sys/kernel/prove_locking\n  /proc/sys/kernel/lock_stat\n\n(esp. turning off the O(n^2) prove_locking functionaliy can help)\n\n[akpm@linux-foundation.org: build fixes]\n[akpm@linux-foundation.org: nuke unneeded ifdefs]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "8e18257d29238311e82085152741f0c3aa18b74d",
      "tree": "4c3e43b3b001763b4280a4b6d754387a52fb4d73",
      "parents": [
        "ca58abcb4a6d52ee2db1b1130cea3ca2a76677b9"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 19 01:48:54 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:49 2007 -0700"
      },
      "message": "lockdep: reduce the ifdeffery\n\nMove code around to get fewer but larger #ifdef sections.  Break some\nin-function #ifdefs out into their own functions.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\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": "ca58abcb4a6d52ee2db1b1130cea3ca2a76677b9",
      "tree": "ad35a81d318a39cb33f28fe09c4374ec90b118ed",
      "parents": [
        "21f8ca3bf6198bd21e3c4cc820af2ccf753a6ec8"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 19 01:48:53 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Jul 19 10:04:49 2007 -0700"
      },
      "message": "lockdep: sanitise CONFIG_PROVE_LOCKING\n\nEnsure that all of the lock dependency tracking code is under\nCONFIG_PROVE_LOCKING.  This allows us to use the held lock tracking code for\nother purposes.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Jason Baron \u003cjbaron@redhat.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "9281acea6a3687ff0f262e0be31eac34895b95d7",
      "tree": "f060d6e4f6a5da1c82bc789104683d39377a2e9a",
      "parents": [
        "b45d52797432bd6b5d9786dbda940eb8d0b9ed06"
      ],
      "author": {
        "name": "Tejun Heo",
        "email": "htejun@gmail.com",
        "time": "Tue Jul 17 04:03:51 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Jul 17 10:23:03 2007 -0700"
      },
      "message": "kallsyms: make KSYM_NAME_LEN include space for trailing \u0027\\0\u0027\n\nKSYM_NAME_LEN is peculiar in that it does not include the space for the\ntrailing \u0027\\0\u0027, forcing all users to use KSYM_NAME_LEN + 1 when allocating\nbuffer.  This is nonsense and error-prone.  Moreover, when the caller\nforgets that it\u0027s very likely to subtly bite back by corrupting the stack\nbecause the last position of the buffer is always cleared to zero.\n\nThis patch increments KSYM_NAME_LEN by one and updates code accordingly.\n\n* off-by-one bug in asm-powerpc/kprobes.h::kprobe_lookup_name() macro\n  is fixed.\n\n* Where MODULE_NAME_LEN and KSYM_NAME_LEN were used together,\n  MODULE_NAME_LEN was treated as if it didn\u0027t include space for the\n  trailing \u0027\\0\u0027.  Fix it.\n\nSigned-off-by: Tejun Heo \u003chtejun@gmail.com\u003e\nAcked-by: Paulo Marques \u003cpmarques@grupopie.com\u003e\nCc: Benjamin Herrenschmidt \u003cbenh@kernel.crashing.org\u003e\nCc: Paul Mackerras \u003cpaulus@samba.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "4ff773bbde87f7f7dddc0f579ad53e077a6587b9",
      "tree": "701116c151d6a78764034462d9fcfb45ba311a7a",
      "parents": [
        "0bb5e19d63cc1b09aed8aef3a20926ac435bb8e7"
      ],
      "author": {
        "name": "Jarek Poplawski",
        "email": "jarkao2@o2.pl",
        "time": "Tue May 08 00:31:00 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:13 2007 -0700"
      },
      "message": "lockdep: removed unused ip argument in mark_lock \u0026 mark_held_locks\n\nIt looks like a remainder from designing...\n\nSigned-off-by: Jarek Poplawski \u003cjarkao@o2.pl\u003e\nCc: 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": "9e860d000a90cfc9ca270ddb6e99b177e6aa91cd",
      "tree": "9a7ab3e8c007f01cf9603a71a3842d68e4cbf41d",
      "parents": [
        "076fa0fa2d53046d32f5157022d683b8027f05ed"
      ],
      "author": {
        "name": "Jarek Poplawski",
        "email": "jarkao2@o2.pl",
        "time": "Tue May 08 00:30:12 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:11 2007 -0700"
      },
      "message": "lockdep: lookup_chain_cache comment errata\n\nSigned-off-by: Jarek Poplawski \u003cjarkao2@o2.pl\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": "ffb45122766db220d0bf3d01848d575fbbcb6430",
      "tree": "a8fedf0518407ad12578a7c03aa2c3344f11ff3c",
      "parents": [
        "ea07890a680273b25127129fb555aac0d9324bea"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@sw.ru",
        "time": "Tue May 08 00:28:41 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:15:08 2007 -0700"
      },
      "message": "Simplify kallsyms_lookup()\n\nSeveral kallsyms_lookup() pass dummy arguments but only need, say, module\u0027s\nname.  Make kallsyms_lookup() accept NULLs where possible.\n\nAlso, makes picture clearer about what interfaces are needed for all symbol\nresolving business.\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@sw.ru\u003e\nCc: Rusty Russell \u003crusty@rustcorp.com.au\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": "ab1b6f03a10ba1f5638188ab06bf46e33ac3a160",
      "tree": "2dc7ce01df5d51d81e250dd9cee1b7b04627466e",
      "parents": [
        "7e4c3690b07f04b1942c39db358a5c8a72831daa"
      ],
      "author": {
        "name": "Christoph Hellwig",
        "email": "hch@lst.de",
        "time": "Tue May 08 00:23:29 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue May 08 11:14:58 2007 -0700"
      },
      "message": "simplify the stacktrace code\n\nSimplify the stacktrace code:\n\n - remove the unused task argument to save_stack_trace, it\u0027s always\n   current\n - remove the all_contexts flag, it\u0027s alwasy 0\n\nSigned-off-by: Christoph Hellwig \u003chch@lst.de\u003e\nCc: Paul Mundt \u003clethal@linux-sh.org\u003e\nCc: Ralf Baechle \u003cralf@linux-mips.org\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nCc: Andi Kleen \u003cak@suse.de\u003e\nCc: Akinobu Mita \u003cakinobu.mita@gmail.com\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": "9c35dd7f8bda1849dcb430be99325504221048df",
      "tree": "0c1d8eef5af9e21bf9c552f13646710f57b97f23",
      "parents": [
        "b43376927ab0f7b64c4fb304568ecfaea10446e2"
      ],
      "author": {
        "name": "Jarek Poplawski",
        "email": "jarkao2@o2.pl",
        "time": "Thu Mar 22 00:11:28 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Mar 22 19:39:06 2007 -0700"
      },
      "message": "[PATCH] lockdep: debug_show_all_locks \u0026 debug_show_held_locks vs. debug_locks\n\nlockdep\u0027s data shouldn\u0027t be used when debug_locks \u003d\u003d 0 because it\u0027s not\nupdated after this, so it\u0027s more misleading than helpful.\n\nPS: probably lockdep\u0027s current-\u003e fields should be reset after it turns\ndebug_locks off: so, after printing a bug report, but before return from\nexported functions, but there are really a lot of these possibilities (e.g.\n after DEBUG_LOCKS_WARN_ON), so, something could be missed.  (Of course\ndirect use of this fields isn\u0027t recommended either.)\n\nReported-by: Folkert van Heusden \u003cfolkert@vanheusden.com\u003e\nInspired-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nSigned-off-by: Jarek Poplawski \u003cjarkao2@o2.pl\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: 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": "1499993cc7bfd568f471bd697499cff394e46822",
      "tree": "56279ec6ab9962cedc220a86bd42a3eba35bcd0c",
      "parents": [
        "5409bae07a63630ba5a40f3f00b7f3e6d7eceedd"
      ],
      "author": {
        "name": "Sam Ravnborg",
        "email": "sam@ravnborg.org",
        "time": "Wed Feb 28 20:12:31 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Mar 01 14:53:37 2007 -0800"
      },
      "message": "[PATCH] fix section mismatch warning in lockdep\n\nlockdep_init() is marked __init but used in several places\noutside __init code. This causes following warnings:\n$ scripts/mod/modpost kernel/lockdep.o\nWARNING: kernel/built-in.o - Section mismatch: reference to .init.text:lockdep_init from .text.lockdep_init_map after \u0027lockdep_init_map\u0027 (at offset 0x105)\nWARNING: kernel/built-in.o - Section mismatch: reference to .init.text:lockdep_init from .text.lockdep_reset_lock after \u0027lockdep_reset_lock\u0027 (at offset 0x35)\nWARNING: kernel/built-in.o - Section mismatch: reference to .init.text:lockdep_init from .text.__lock_acquire after \u0027__lock_acquire\u0027 (at offset 0xb2)\n\nThe warnings are less obviously due to heavy inlining by gcc - this is not\naltered.\n\nFix the section mismatch warnings by removing the __init marking, which\nseems obviously wrong.\n\nSigned-off-by: Sam Ravnborg \u003csam@ravnborg.org\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: \u003cstable@kernel.org\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "60e114d1134555d1813e20a8cd86304331da05c7",
      "tree": "2cd482be7f82b8c2f6bf1fde7bcf288471e4cd6b",
      "parents": [
        "34173a4aad7a641e72b70f9927ca797746fbce69"
      ],
      "author": {
        "name": "Jarek Poplawski",
        "email": "jarkao2@o2.pl",
        "time": "Tue Feb 20 13:58:00 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Tue Feb 20 17:10:14 2007 -0800"
      },
      "message": "[PATCH] lockdep: debug_locks check after check_chain_key\n\nIn __lock_acquire check_chain_key can turn off debug_locks, so check is\nneeded to assure proper return code.\n\nSigned-off-by: Jarek Poplawski \u003cjarkao2@o2.pl\u003e\nCc: 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": "068135e63518314d4efd711142f674ad0841599e",
      "tree": "dbf8193b0e8f3b6c0e735b48c1f8201a6df207ac",
      "parents": [
        "381a229209aa6f7f72375797b7bcfcfe2ae6fcbb"
      ],
      "author": {
        "name": "Jason Baron",
        "email": "jbaron@redhat.com",
        "time": "Sat Feb 10 01:44:59 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:26 2007 -0800"
      },
      "message": "[PATCH] lockdep: add graph depth information to /proc/lockdep\n\nGenerate locking graph information into /proc/lockdep, for lock hierarchy\ndocumentation and visualization purposes.\n\nsample output:\n\n c089fd5c OPS:     138 FD:   14 BD:    1 --..: \u0026tty-\u003etermios_mutex\n  -\u003e [c07a3430] tty_ldisc_lock\n  -\u003e [c07a37f0] \u0026port_lock_key\n  -\u003e [c07afdc0] \u0026rq-\u003erq_lock_key#2\n\nThe lock classes listed are all the first-hop lock dependencies that\nlockdep has seen so far.\n\nSigned-off-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": "381a229209aa6f7f72375797b7bcfcfe2ae6fcbb",
      "tree": "bbd92afe1437ac77084c6ba3485f7f5a988dd673",
      "parents": [
        "898552c9d807fe59f3ecaf9c300c109358375c12"
      ],
      "author": {
        "name": "Jarek Poplawski",
        "email": "jarkao2@o2.pl",
        "time": "Sat Feb 10 01:44:58 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Sun Feb 11 10:51:26 2007 -0800"
      },
      "message": "[PATCH] lockdep: more unlock-on-error fixes\n\n- returns after DEBUG_LOCKS_WARN_ON added in 3 places\n\n- debug_locks checking after lookup_chain_cache() added in\n  __lock_acquire()\n\n- locking for testing and changing global variable max_lockdep_depth\n  added in __lock_acquire()\n\nFrom: Ingo Molnar \u003cmingo@elte.hu\u003e\n\nMy __acquire_lock() cleanup introduced a locking bug: on SMP systems we\u0027d\nrelease a non-owned graph lock.  Fix this by moving the graph unlock back,\nand by leaving the max_lockdep_depth variable update possibly racy.  (we\ndont care, it\u0027s just statistics)\n\nAlso add some minimal debugging code to graph_unlock()/graph_lock(),\nwhich caught this locking bug.\n\nSigned-off-by: Jarek Poplawski \u003cjarkao2@o2.pl\u003e\nSigned-off-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": "755cd90029b61b96816b8ac0ab6a33a197f842d0",
      "tree": "3f9dcc5727e78422330d64d22444d9ff9ea9bb0b",
      "parents": [
        "e2a5d2f9b3e6011093a7587e0e18d653fb050a36"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Fri Dec 29 16:49:14 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Sat Dec 30 10:56:43 2006 -0800"
      },
      "message": "[PATCH] lockdep: printk warning fix\n\nkernel/lockdep.c: In function `lookup_chain_cache\u0027:\nkernel/lockdep.c:1339: warning: long long unsigned int format, u64 arg (arg 2)\nkernel/lockdep.c:1344: warning: long long unsigned int format, u64 arg (arg 2)\n\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "74c383f1400f559562aa517d6d62f77245bddf52",
      "tree": "031f6524f0fba31c980bd3d00cc1e6b433d3d2c5",
      "parents": [
        "3117df0453828bd045c16244e6f50e5714667a8a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 13 00:34:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:50 2006 -0800"
      },
      "message": "[PATCH] lockdep: fix possible races while disabling lock-debugging\n\nJarek Poplawski noticed that lockdep global state could be accessed in a\nracy way if one CPU did a lockdep assert (shutting lockdep down), while the\nother CPU would try to do something that changes its global state.\n\nThis patch fixes those races and cleans up lockdep\u0027s internal locking by\nadding a graph_lock()/graph_unlock()/debug_locks_off_graph_unlock helpers.\n\n(Also note that as we all know the Linux kernel is, by definition, bug-free\nand perfect, so this code never triggers, so these fixes are highly\ntheoretical.  I wrote this patch for aesthetic reasons alone.)\n\n[akpm@osdl.org: build fix]\n[jarkao2@o2.pl: build fix\u0027s refix]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Jarek Poplawski \u003cjarkao2@o2.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3117df0453828bd045c16244e6f50e5714667a8a",
      "tree": "4f24e5b4024359dd42c91b84cbc25280f21b7314",
      "parents": [
        "27c3b23226fc649de47e4886ccbf994482f388ba"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 13 00:34:43 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:50 2006 -0800"
      },
      "message": "[PATCH] lockdep: print irq-trace info on asserts\n\nWhen we print an assert due to scheduling-in-atomic bugs, and if lockdep\nis enabled, then the IRQ tracing information of lockdep can be printed\nto pinpoint the code location that disabled interrupts. This saved me\nquite a bit of debugging time in cases where the backtrace did not\nidentify the irq-disabling site well enough.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "27c3b23226fc649de47e4886ccbf994482f388ba",
      "tree": "43b0da769b52a709f2f408c8dc791a70fe9fc9fe",
      "parents": [
        "33e94e960b57497fe7fd9493080210b6d87e88e6"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 13 00:34:42 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:50 2006 -0800"
      },
      "message": "[PATCH] lockdep: use chain hash on CONFIG_DEBUG_LOCKDEP too\n\nCONFIG_DEBUG_LOCKDEP is unacceptably slow because it does not utilize\nthe chain-hash. Turn the chain-hash back on in this case too.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "33e94e960b57497fe7fd9493080210b6d87e88e6",
      "tree": "b0fa17aea1b49b195d5e4c93b13896cc796871b3",
      "parents": [
        "23d95a03d63eff25118b50737006ce6e7c1b8def"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 13 00:34:41 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:50 2006 -0800"
      },
      "message": "[PATCH] lockdep: clean up VERY_VERBOSE define\n\nCleanup: the VERY_VERBOSE define was unnecessarily dependent on #ifdef VERBOSE\n- while the VERBOSE switch is 0 or 1 (always defined).\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "23d95a03d63eff25118b50737006ce6e7c1b8def",
      "tree": "faae8f9f9e7d7f93e55ed71fa801239e49dcf9fe",
      "parents": [
        "81fc685a898f84d0787eeebb1c118de0bd3484a0"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 13 00:34:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:50 2006 -0800"
      },
      "message": "[PATCH] lockdep: improve lockdep_reset()\n\nClear all the chains during lockdep_reset().  This fixes some locking-selftest\nfalse positives i saw on -rt.  (never saw those on mainline though, but it\ncould happen.)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "81fc685a898f84d0787eeebb1c118de0bd3484a0",
      "tree": "f604565b228c12b3db6037673870882c8022c4a9",
      "parents": [
        "a664089741aa9010333ecbdadbf5d9de62bafa2d"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 13 00:34:40 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:50 2006 -0800"
      },
      "message": "[PATCH] lockdep: improve verbose messages\n\nMake verbose lockdep messages (off by default) more informative by printing\nout the hash chain key.  (this patch was what helped me catch the earlier\nlockdep hash-collision bug)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "a664089741aa9010333ecbdadbf5d9de62bafa2d",
      "tree": "067e1f096a9af6cf77ef179a6cdf44082768e89d",
      "parents": [
        "5d6f647fc6bb57377c9f417c4752e43189f56bb1"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 13 00:34:39 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Wed Dec 13 09:05:50 2006 -0800"
      },
      "message": "[PATCH] lockdep: filter off by default\n\nFix typo in the class_filter() function.  (filtering is not used by default so\nthis only affects lockdep-internal debugging cases)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4522d58275f124105819723e24e912c8e5bf3cdd",
      "tree": "b92c29014fadffe049c1925676037f0092b8d112",
      "parents": [
        "6cf24f031bc97cb5a7c9df3b6e73c45b628b2b28",
        "64a26a731235b59c9d73bbe82c1f896d57400d37"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:59:11 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:59:11 2006 -0800"
      },
      "message": "Merge branch \u0027for-linus\u0027 of git://one.firstfloor.org/home/andi/git/linux-2.6\n\n* \u0027for-linus\u0027 of git://one.firstfloor.org/home/andi/git/linux-2.6: (156 commits)\n  [PATCH] x86-64: Export smp_call_function_single\n  [PATCH] i386: Clean up smp_tune_scheduling()\n  [PATCH] unwinder: move .eh_frame to RODATA\n  [PATCH] unwinder: fully support linker generated .eh_frame_hdr section\n  [PATCH] x86-64: don\u0027t use set_irq_regs()\n  [PATCH] x86-64: check vector in setup_ioapic_dest to verify if need setup_IO_APIC_irq\n  [PATCH] x86-64: Make ix86 default to HIGHMEM4G instead of NOHIGHMEM\n  [PATCH] i386: replace kmalloc+memset with kzalloc\n  [PATCH] x86-64: remove remaining pc98 code\n  [PATCH] x86-64: remove unused variable\n  [PATCH] x86-64: Fix constraints in atomic_add_return()\n  [PATCH] x86-64: fix asm constraints in i386 atomic_add_return\n  [PATCH] x86-64: Correct documentation for bzImage protocol v2.05\n  [PATCH] x86-64: replace kmalloc+memset with kzalloc in MTRR code\n  [PATCH] x86-64: Fix numaq build error\n  [PATCH] x86-64: include/asm-x86_64/cpufeature.h isn\u0027t a userspace header\n  [PATCH] unwinder: Add debugging output to the Dwarf2 unwinder\n  [PATCH] x86-64: Clarify error message in GART code\n  [PATCH] x86-64: Fix interrupt race in idle callback (3rd try)\n  [PATCH] x86-64: Remove unwind stack pointer alignment forcing again\n  ...\n\nFixed conflict in include/linux/uaccess.h manually\n\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "70e4506765602cca047cfa31933836e354c61a63",
      "tree": "b490e5066404eab1ec7cf5147521c0bd53226b07",
      "parents": [
        "72be2ccfff0e0e332b32f7ef8372890e39b7c4cb"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 06 20:40:50 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:46 2006 -0800"
      },
      "message": "[PATCH] lockdep: register_lock_class() fix\n\nThe hash_lock must only ever be taken with irqs disabled.  This happens in\nall the important places, except one codepath: register_lock_class().  The\nrace should trigger rarely because register_lock_class() is quite rare and\nsingle-threaded (happens during init most of the time).\n\nThe fix is to disable irqs.\n\n( bug found live in -rt: there preemption is alot more agressive and\n  preempting with the hash-lock held caused a lockup.)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ebe7e5fe4b41deeb2731c5b52d8c8e6ac08b1f74",
      "tree": "4fde2d9f7562776ef3b227d81a6dcd0928d9b13d",
      "parents": [
        "1f370a23f2a3101886953add4bd7f529e3bba016"
      ],
      "author": {
        "name": "Adrian Bunk",
        "email": "bunk@stusta.de",
        "time": "Wed Dec 06 20:38:21 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:39 2006 -0800"
      },
      "message": "[PATCH] remove kernel/lockdep.c:lockdep_internal\n\nRemove the no longer used lockdep_internal().\n\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "b23984d0a12a4821b2e9712c71550f321eb88bb5",
      "tree": "c47470186b47e8e53d8c78513d374b38319abea4",
      "parents": [
        "910b1b2e6d7d10e1c3bffdd12a90ec82f535f9a5"
      ],
      "author": {
        "name": "Jarek Poplawski",
        "email": "jarkao2@o2.pl",
        "time": "Wed Dec 06 20:36:23 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:33 2006 -0800"
      },
      "message": "[PATCH] lockdep: misc fixes in lockdep.c\n\n - numeric string size replaced with constant in print_lock_name and\n   print_lockdep_cache,\n\n - return on null pointer in print_lock_dependencies,\n\n - one more lockdep return with 0 with unlocking fix in mark_lock.\n\nSigned-off-by: Jarek Poplawski \u003cjarkao2@o2.pl\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "910b1b2e6d7d10e1c3bffdd12a90ec82f535f9a5",
      "tree": "89526504d80a20f54ab561a50b3d846fdc508fa3",
      "parents": [
        "b4178ab58aa81f4ed3c75c48940682fe3b45d880"
      ],
      "author": {
        "name": "Jarek Poplawski",
        "email": "jarkao2@o2.pl",
        "time": "Thu Dec 07 10:45:25 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:33 2006 -0800"
      },
      "message": "[PATCH] lockdep: internal locking fixes\n\nHere are mainly some lockdep returns with 0 with unlocking fixes.\n\nSigned-off-by: Jarek Poplawski \u003cjarkao2@o2.pl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "ed07536ed6731775219c1df7fa26a7588753e693",
      "tree": "c539d80fe50f28d4e294850bb33be810f46fd515",
      "parents": [
        "b9d85b08c689dbf54b9943a02f73cb54c2b0fccf"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Dec 06 20:35:24 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:30 2006 -0800"
      },
      "message": "[PATCH] lockdep: annotate nfs/nfsd in-kernel sockets\n\nStick NFS sockets in their own class to avoid some lockdep warnings.  NFS\nsockets are never exposed to user-space, and will hence not trigger certain\ncode paths that would otherwise pose deadlock scenarios.\n\n[akpm@osdl.org: cleanups]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Steven Dickson \u003cSteveD@redhat.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Trond Myklebust \u003ctrond.myklebust@fys.uio.no\u003e\nAcked-by: Neil Brown \u003cneilb@suse.de\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\n[ Fixed patch corruption by quilt, pointed out by Peter Zijlstra ]\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "eef5e0d185fc049bda11fa14ba286fbd357da896",
      "tree": "a5e6943a17288dbe1c03d8a2c440d36d7baa1881",
      "parents": [
        "446f713ba1afd68568139ae4691335ba273fa7f4"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Thu Dec 07 02:14:12 2006 +0100"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Thu Dec 07 02:14:12 2006 +0100"
      },
      "message": "[PATCH] unwinder: Remove lockdep disabling of nested locks for unwinder\n\nShouldn\u0027t be needed anymore since __kernel_text_address\nis used unconditionally on x86-64\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "1ff5683043196b9ad628a5de6bf8eeca52ee8bfd",
      "tree": "01e2f0a382ff33623993f77997f38768560e5f2a",
      "parents": [
        "dc1829a4c378d793fb3b95d56135d89a0d7ff72a"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Nov 17 19:57:22 2006 +0100"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Fri Nov 17 11:10:37 2006 -0800"
      },
      "message": "[PATCH] lockdep: fix static keys in module-allocated percpu areas\n\nlockdep got confused by certain locks in modules:\n\n INFO: trying to register non-static key.\n the code is fine but needs lockdep annotation.\n turning off the locking correctness validator.\n\n Call Trace:\n  [\u003cffffffff8026f40d\u003e] dump_trace+0xaa/0x3f2\n  [\u003cffffffff8026f78f\u003e] show_trace+0x3a/0x60\n  [\u003cffffffff8026f9d1\u003e] dump_stack+0x15/0x17\n  [\u003cffffffff802abfe8\u003e] __lock_acquire+0x724/0x9bb\n  [\u003cffffffff802ac52b\u003e] lock_acquire+0x4d/0x67\n  [\u003cffffffff80267139\u003e] rt_spin_lock+0x3d/0x41\n  [\u003cffffffff8839ed3f\u003e] :ip_conntrack:__ip_ct_refresh_acct+0x131/0x174\n  [\u003cffffffff883a1334\u003e] :ip_conntrack:udp_packet+0xbf/0xcf\n  [\u003cffffffff8839f9af\u003e] :ip_conntrack:ip_conntrack_in+0x394/0x4a7\n  [\u003cffffffff8023551f\u003e] nf_iterate+0x41/0x7f\n  [\u003cffffffff8025946a\u003e] nf_hook_slow+0x64/0xd5\n  [\u003cffffffff802369a2\u003e] ip_rcv+0x24e/0x506\n  [...]\n\nSteven Rostedt found the bug: static_obj() check did not take\nPERCPU_ENOUGH_ROOM into account, so in-module DEFINE_PER_CPU-area locks\nwere triggering this message.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Steven Rostedt \u003csrostedt@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "43f82216f0bd114599f4a221ae6924f3658a0c9a",
      "tree": "89dbd85a0a1882ae38e6b61e360b365c018195fd",
      "parents": [
        "20f85957667ccc53183b5ffac22213d75e317408",
        "b435fdcda126db42343b8055d04a0a27c229717b"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 17 08:56:43 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 17 08:56:43 2006 -0700"
      },
      "message": "Merge git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input\n\n* git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input:\n  Input: fm801-gp - handle errors from pci_enable_device()\n  Input: gameport core - handle errors returned by device_bind_driver()\n  Input: serio core - handle errors returned by device_bind_driver()\n  Lockdep: fix compile error in drivers/input/serio/serio.c\n  Input: serio - add lockdep annotations\n  Lockdep: add lockdep_set_class_and_subclass() and lockdep_set_subclass()\n  Input: atkbd - supress \"too many keys\" error message\n  Input: i8042 - supress ACK/NAKs when blinking during panic\n  Input: add missing exports to fix modular build\n"
    },
    {
      "commit": "ca268c691de95612981b93e58899c1d73fdb6b47",
      "tree": "5bffd6512113613ae9c3dfd0e8b19a14d8e64856",
      "parents": [
        "623a43952abfad2d48f287d1fab07b2089d07554"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Oct 17 00:09:28 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Tue Oct 17 08:18:42 2006 -0700"
      },
      "message": "[PATCH] lockdep: increase max allowed recursion depth\n\nIn general, lockdep warnings are intended to be non-fatal, so I have put in\nvarious practical limits on internal data structure failure modes.  We haven\u0027t\nhad a /single/ lockdep-internal crash ever since lockdep went upstream [the\nunwinder crashes are outside of lockdep], and that\u0027s largely due to the good\ninternal checks it does.\n\nRecursion within the dependency graph is currently limited to 20, that\u0027s\nprobably not enough on some many-CPU boxes - this patch doubles it to 40.  I\nhave written the lockdep functions to have as small stackframes as possible,\nso 40 should be OK too.  (The practical recursion limit should be somewhere\nbetween 100 and 200 entries.  If we hit that then I\u0027ll change the algorithm to\nbe iteration-based.  Graph walking logic is so easy to program via recursion,\nso i\u0027d like to keep recursion as long as possible.)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3dc3099a9b2c346b16383597fadaa79a05a52388",
      "tree": "c2c2a49e135f5e565a4fd3e33aa5c2271d535374",
      "parents": [
        "39913b31d0cd11b5b18a303e220c95ffbd9e1a88"
      ],
      "author": {
        "name": "Alexey Dobriyan",
        "email": "adobriyan@gmail.com",
        "time": "Wed Oct 11 01:22:06 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Oct 11 11:14:24 2006 -0700"
      },
      "message": "[PATCH] lockdep: use BUILD_BUG_ON\n\nSigned-off-by: Alexey Dobriyan \u003cadobriyan@gmail.com\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "4dfbb9d8c6cbfc32faa5c71145bd2a43e1f8237c",
      "tree": "a4fefea0d5f5930240f4ecd6f9716a029cc927a9",
      "parents": [
        "86255d9d0bede79140f4912482447963f00818c0"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Oct 11 01:45:14 2006 -0400"
      },
      "committer": {
        "name": "Dmitry Torokhov",
        "email": "dtor@insightbb.com",
        "time": "Wed Oct 11 01:45:14 2006 -0400"
      },
      "message": "Lockdep: add lockdep_set_class_and_subclass() and lockdep_set_subclass()\n\nThis annotation makes it possible to assign a subclass on lock init. This\nannotation is meant to reduce the _nested() annotations by assigning a\ndefault subclass.\n\nOne could do without this annotation and rely on lockdep_set_class()\nexclusively, but that would require a manual stack of struct lock_class_key\nobjects.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Dmitry Torokhov \u003cdtor@mail.ru\u003e\n"
    },
    {
      "commit": "96b644bdec977b97a45133e5b4466ba47a7a5e65",
      "tree": "4c6d1f0d54746aa06132628379b2a0efec5e1701",
      "parents": [
        "e9ff3990f08e9a0c2839cc22808b01732ea5b3e4"
      ],
      "author": {
        "name": "Serge E. Hallyn",
        "email": "serue@us.ibm.com",
        "time": "Mon Oct 02 02:18:13 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Oct 02 07:57:21 2006 -0700"
      },
      "message": "[PATCH] namespaces: utsname: use init_utsname when appropriate\n\nIn some places, particularly drivers and __init code, the init utsns is the\nappropriate one to use.  This patch replaces those with a the init_utsname\nhelper.\n\nChanges: Removed several uses of init_utsname().  Hope I picked all the\n\tright ones in net/ipv4/ipconfig.c.  These are now changed to\n\tutsname() (the per-process namespace utsname) in the previous\n\tpatch (2/7)\n\n[akpm@osdl.org: CIFS fix]\nSigned-off-by: Serge E. Hallyn \u003cserue@us.ibm.com\u003e\nCc: Kirill Korotaev \u003cdev@openvz.org\u003e\nCc: \"Eric W. Biederman\" \u003cebiederm@xmission.com\u003e\nCc: Herbert Poetzl \u003cherbert@13thfloor.at\u003e\nCc: Andrey Savochkin \u003csaw@sw.ru\u003e\nCc: Serge Hallyn \u003cserue@us.ibm.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "03cbc358aab3faf34bfeaa02206fa660127e9b3f",
      "tree": "8d95237532390a1beeef37158174fd045b0f8819",
      "parents": [
        "632dd2053a1146c826ceb6f26ab689389c05e751"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Sep 29 02:01:46 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:25 2006 -0700"
      },
      "message": "[PATCH] lockdep core: improve the lock-chain-hash\n\nWith CONFIG_DEBUG_LOCK_ALLOC turned off i was getting sporadic failures in\nthe locking self-test:\n\n  ------------\u003e\n  | Locking API testsuite:\n  ----------------------------------------------------------------------------\n                                   | spin |wlock |rlock |mutex | wsem | rsem |\n    --------------------------------------------------------------------------\n                       A-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |\n                   A-B-B-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |\n               A-B-B-C-C-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |\n               A-B-C-A-B-C deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |\n           A-B-B-C-C-D-D-A deadlock:  ok  |FAILED|  ok  |  ok  |  ok  |  ok  |\n           A-B-C-D-B-D-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |\n           A-B-C-D-B-C-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |FAILED|\n\nafter much debugging it turned out to be caused by accidental chain-hash\nkey collisions.  The current hash is:\n\n #define iterate_chain_key(key1, key2) \\\n\t(((key1) \u003c\u003c MAX_LOCKDEP_KEYS_BITS/2) ^ \\\n\t((key1) \u003e\u003e (64-MAX_LOCKDEP_KEYS_BITS/2)) ^ \\\n \t(key2))\n\nwhere MAX_LOCKDEP_KEYS_BITS is 11.  This hash is pretty good as it will\nshift by 5 bits in every iteration, where every new ID \u0027mixed\u0027 into the\nhash would have up to 11 bits.  But because there was a 6 bits overlap\nbetween subsequent IDs and their high bits tended to be similar, there was\na chance for accidental chain-hash collision for a low number of locks\nheld.\n\nthe solution is to shift by 11 bits:\n\n #define iterate_chain_key(key1, key2) \\\n\t(((key1) \u003c\u003c MAX_LOCKDEP_KEYS_BITS) ^ \\\n\t((key1) \u003e\u003e (64-MAX_LOCKDEP_KEYS_BITS)) ^ \\\n \t(key2))\n\nThis keeps the hash perfect up to 5 locks held, but even above that the\nhash is still good because 11 bits is a relative prime to the total 64\nbits, so a complete match will only occur after 64 held locks (which doesnt\nhappen in Linux).  Even after 5 locks held, entropy of the 5 IDs mixed into\nthe hash is already good enough so that overlap doesnt generate a colliding\nhash ID.\n\nwith this change the false positives went away.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "99de055ac065e19ed69de961e97c6336a261b34e",
      "tree": "edc25ea5f39c09e4e273b8824f2306655d6f4726",
      "parents": [
        "2b33b4dcbe5e09e683eef281f72aef951e17061c"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Fri Sep 29 02:00:10 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:13 2006 -0700"
      },
      "message": "[PATCH] lockdep: print kernel version\n\nLets do the same thing we do for oopses - print out the version in the\nreport.  It\u0027s an extra line of output though.  We could tack it on the end\nof the INFO: lines, but that screws up Ingo\u0027s pretty output.\n\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "3fa7c794fe4dc127f7fac3fad4d13628e68f89ce",
      "tree": "855a6737a2275317bcd3f3a9934c33dcadba6e6f",
      "parents": [
        "5a1b3999d6cb7ab87f1f3b1700bc91839fd6fa29"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Tue Sep 26 10:52:34 2006 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Tue Sep 26 10:52:34 2006 +0200"
      },
      "message": "[PATCH] Avoid recursion in lockdep when stack tracer takes locks\n\nThe new dwarf2 unwinder needs to take locks to do backtraces\ninside modules. This patch makes sure lockdep which calls\nstacktrace is not reentered.\n\nThanks to Ingo for suggesting this simpler approach.\n\nCc: mingo@elte.hu\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "5a1b3999d6cb7ab87f1f3b1700bc91839fd6fa29",
      "tree": "ec969406fe68d875d7904c364ea9a5b74c084567",
      "parents": [
        "4ea8a5d8b57cd504b4b2de1212523848e7ab50cf"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Tue Sep 26 10:52:34 2006 +0200"
      },
      "committer": {
        "name": "Andi Kleen",
        "email": "andi@basil.nowhere.org",
        "time": "Tue Sep 26 10:52:34 2006 +0200"
      },
      "message": "[PATCH] x86: Some preparationary cleanup for stack trace\n\n- Remove unused all_contexts parameter\nNo caller used it\n- Move skip argument into the structure (needed for\nfollowon patches)\n\nCc: mingo@elte.hu\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\n"
    },
    {
      "commit": "d6d897cec29252b8d0785198cfa6ca16d30c739d",
      "tree": "01b138b10c7afa0e88e9720be3d3616e4f0bccc1",
      "parents": [
        "55794a412fdf9af1744800e5020a4ec6b21e3cdc"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 10 04:44:04 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 10 13:24:14 2006 -0700"
      },
      "message": "[PATCH] lockdep: core, reduce per-lock class-cache size\n\nlockdep_map is embedded into every lock, which blows up data structure\nsizes all around the kernel.  Reduce the class-cache to be for the default\nclass only - that is used in 99.9% of the cases and even if we dont have a\nclass cached, the lookup in the class-hash is lockless.\n\nThis change reduces the per-lock dep_map overhead by 56 bytes on 64-bit\nplatforms and by 28 bytes on 32-bit platforms.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "55794a412fdf9af1744800e5020a4ec6b21e3cdc",
      "tree": "3429cb26c5dfd484487b15827c655b5d080ce0f8",
      "parents": [
        "5fca80e8b4bf5d69b900115b14342133ce81d79e"
      ],
      "author": {
        "name": "Arjan van de Ven",
        "email": "arjan@Linux.intel.com",
        "time": "Mon Jul 10 04:44:03 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 10 13:24:14 2006 -0700"
      },
      "message": "[PATCH] lockdep: improve debug output\n\nMake lockdep print which lock is held, in the \"kfree() of a live lock\"\nscenario.\n\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "f9829cceb686f3719215fe43c8593e5f3efe1710",
      "tree": "eb6f721915c879646f81e423b6606d6b4376bed9",
      "parents": [
        "8f72e4028a1ff968000cec4a034f45619fbd7ec4"
      ],
      "author": {
        "name": "Andi Kleen",
        "email": "ak@suse.de",
        "time": "Mon Jul 10 04:44:01 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 10 13:24:14 2006 -0700"
      },
      "message": "[PATCH] Minor cleanup to lockdep.c\n\n- Use printk formatting for indentation\n- Don\u0027t leave NTFS in the default event filter\n\nSigned-off-by: Andi Kleen \u003cak@suse.de\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "6c9076ec9cd448f43bbda871352a7067f456ee26",
      "tree": "8691366aa511f20146eb9cfe942e0d94c4136e1a",
      "parents": [
        "fbb9ce9530fd9b66096d5187fa6a115d16d9746c"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:24:51 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:04 2006 -0700"
      },
      "message": "[PATCH] lockdep: allow read_lock() recursion of same class\n\nFrom: Ingo Molnar \u003cmingo@elte.hu\u003e\n\nlockdep so far only allowed read-recursion for the same lock instance.\nThis is enough in the overwhelming majority of cases, but a hostap case\ntriggered and reported by Miles Lane relies on same-class\ndifferent-instance recursion.  So we relax the restriction on read-lock\nrecursion.\n\n(This change does not allow rwsem read-recursion, which is still\nforbidden.)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "fbb9ce9530fd9b66096d5187fa6a115d16d9746c",
      "tree": "1151a55e5d56045bac17b9766e6a4696cff0a26f",
      "parents": [
        "cae2ed9aa573415c6e5de9a09b7ff0d74af793bc"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:24:50 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:03 2006 -0700"
      },
      "message": "[PATCH] lockdep: core\n\nDo \u0027make oldconfig\u0027 and accept all the defaults for new config options -\nreboot into the kernel and if everything goes well it should boot up fine and\nyou should have /proc/lockdep and /proc/lockdep_stats files.\n\nTypically if the lock validator finds some problem it will print out\nvoluminous debug output that begins with \"BUG: ...\" and which syslog output\ncan be used by kernel developers to figure out the precise locking scenario.\n\nWhat does the lock validator do?  It \"observes\" and maps all locking rules as\nthey occur dynamically (as triggered by the kernel\u0027s natural use of spinlocks,\nrwlocks, mutexes and rwsems).  Whenever the lock validator subsystem detects a\nnew locking scenario, it validates this new rule against the existing set of\nrules.  If this new rule is consistent with the existing set of rules then the\nnew rule is added transparently and the kernel continues as normal.  If the\nnew rule could create a deadlock scenario then this condition is printed out.\n\nWhen determining validity of locking, all possible \"deadlock scenarios\" are\nconsidered: assuming arbitrary number of CPUs, arbitrary irq context and task\ncontext constellations, running arbitrary combinations of all the existing\nlocking scenarios.  In a typical system this means millions of separate\nscenarios.  This is why we call it a \"locking correctness\" validator - for all\nrules that are observed the lock validator proves it with mathematical\ncertainty that a deadlock could not occur (assuming that the lock validator\nimplementation itself is correct and its internal data structures are not\ncorrupted by some other kernel subsystem).  [see more details and conditionals\nof this statement in include/linux/lockdep.h and\nDocumentation/lockdep-design.txt]\n\nFurthermore, this \"all possible scenarios\" property of the validator also\nenables the finding of complex, highly unlikely multi-CPU multi-context races\nvia single single-context rules, increasing the likelyhood of finding bugs\ndrastically.  In practical terms: the lock validator already found a bug in\nthe upstream kernel that could only occur on systems with 3 or more CPUs, and\nwhich needed 3 very unlikely code sequences to occur at once on the 3 CPUs.\nThat bug was found and reported on a single-CPU system (!).  So in essence a\nrace will be found \"piecemail-wise\", triggering all the necessary components\nfor the race, without having to reproduce the race scenario itself!  In its\nshort existence the lock validator found and reported many bugs before they\nactually caused a real deadlock.\n\nTo further increase the efficiency of the validator, the mapping is not per\n\"lock instance\", but per \"lock-class\".  For example, all struct inode objects\nin the kernel have inode-\u003einotify_mutex.  If there are 10,000 inodes cached,\nthen there are 10,000 lock objects.  But -\u003einotify_mutex is a single \"lock\ntype\", and all locking activities that occur against -\u003einotify_mutex are\n\"unified\" into this single lock-class.  The advantage of the lock-class\napproach is that all historical -\u003einotify_mutex uses are mapped into a single\n(and as narrow as possible) set of locking rules - regardless of how many\ndifferent tasks or inode structures it took to build this set of rules.  The\nset of rules persist during the lifetime of the kernel.\n\nTo see the rough magnitude of checking that the lock validator does, here\u0027s a\nportion of /proc/lockdep_stats, fresh after bootup:\n\n lock-classes:                            694 [max: 2048]\n direct dependencies:                  1598 [max: 8192]\n indirect dependencies:               17896\n all direct dependencies:             16206\n dependency chains:                    1910 [max: 8192]\n in-hardirq chains:                      17\n in-softirq chains:                     105\n in-process chains:                    1065\n stack-trace entries:                 38761 [max: 131072]\n combined max dependencies:         2033928\n hardirq-safe locks:                     24\n hardirq-unsafe locks:                  176\n softirq-safe locks:                     53\n softirq-unsafe locks:                  137\n irq-safe locks:                         59\n irq-unsafe locks:                      176\n\nThe lock validator has observed 1598 actual single-thread locking patterns,\nand has validated all possible 2033928 distinct locking scenarios.\n\nMore details about the design of the lock validator can be found in\nDocumentation/lockdep-design.txt, which can also found at:\n\n   http://redhat.com/~mingo/lockdep-patches/lockdep-design.txt\n\n[bunk@stusta.de: cleanups]\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Arjan van de Ven \u003carjan@linux.intel.com\u003e\nSigned-off-by: Adrian Bunk \u003cbunk@stusta.de\u003e\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    }
  ]
}
