)]}'
{
  "log": [
    {
      "commit": "54d47a2be5e7f928fb77b2f5a0761f6bd3c9dbff",
      "tree": "f31a627eea303b08da532645fce94cbb4452ec30",
      "parents": [
        "fa9a97dec611c5356301645d576b523ce3919eba"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue May 04 04:54:47 2010 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue May 04 05:38:16 2010 +0200"
      },
      "message": "lockdep: No need to disable preemption in debug atomic ops\n\nNo need to disable preemption in the debug_atomic_* ops, as\nwe ensure interrupts are disabled already.\n\nSo let\u0027s use the __this_cpu_ops() rather than this_cpu_ops() that\nenclose the ops in a preempt disabled section.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "fa9a97dec611c5356301645d576b523ce3919eba",
      "tree": "4ce76bb7be82f1909258b601f1b4050dcc784e35",
      "parents": [
        "ba697f40dbb704956a4cf67a7845b538015a01ea"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue May 04 04:52:48 2010 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue May 04 05:38:12 2010 +0200"
      },
      "message": "lockdep: Actually _dec_ in debug_atomic_dec\n\nFix a silly copy-paste mistake that was making debug_atomic_dec use\nthis_cpu_inc instead of this_cpu_dec.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "ba697f40dbb704956a4cf67a7845b538015a01ea",
      "tree": "9ab6f1391bd45c52145d04b588e31c2f1abe0c53",
      "parents": [
        "0e417fe1f247bb3ac056ee04604332005c334fac"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue May 04 04:47:25 2010 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue May 04 05:37:28 2010 +0200"
      },
      "message": "lockdep: Provide off case for redundant_hardirqs_on increment\n\nWe forgot to provide a !CONFIG_DEBUG_LOCKDEP case for the\nredundant_hardirqs_on stat handling.\n\nManage that in the headers with a new __debug_atomic_inc() helper.\n\nFixes:\n\n\tkernel/lockdep.c:2306: error: \u0027lockdep_stats\u0027 undeclared (first use in this function)\n\tkernel/lockdep.c:2306: error: (Each undeclared identifier is reported only once\n\tkernel/lockdep.c:2306: error: for each function it appears in.)\n\nReported-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "913769f24eadcd38a936ffae41d9b4895ec02e43",
      "tree": "b1786f5789aa015f488a834a675c20120791bce3",
      "parents": [
        "8795d7717c467bea7b0a0649d44a258e09f34db2"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Thu Apr 15 23:10:43 2010 +0200"
      },
      "committer": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Fri Apr 30 19:15:56 2010 +0200"
      },
      "message": "lockdep: Simplify debug atomic ops\n\nSimplify debug_atomic_inc/dec by using this_cpu_inc/dec() instead\nof doing it through an indirect get_cpu_var() and a manual\nincrementation.\n\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\u003e\n"
    },
    {
      "commit": "bd6d29c25bb1a24a4c160ec5de43e0004e01f72b",
      "tree": "0aa96c7e9fdfbe7dc9c7e40151aed928903240f0",
      "parents": [
        "ced918eb748ce30b3aace549fd17540e40ffdca0"
      ],
      "author": {
        "name": "Frederic Weisbecker",
        "email": "fweisbec@gmail.com",
        "time": "Tue Apr 06 00:10:17 2010 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Apr 06 00:15:37 2010 +0200"
      },
      "message": "lockstat: Make lockstat counting per cpu\n\nLocking statistics are implemented using global atomic\nvariables. This is usually fine unless some path write them very\noften.\n\nThis is the case for the function and function graph tracers\nthat disable irqs for each entry saved (except if the function\ntracer is in preempt disabled only mode).\nAnd calls to local_irq_save/restore() increment\nhardirqs_on_events and hardirqs_off_events stats (or similar\nstats for redundant versions).\n\nIncrementing these global vars for each function ends up in too\nmuch cache bouncing if lockstats are enabled.\n\nTo solve this, implement the debug_atomic_*() operations using\nper cpu vars.\n\n -v2: Use per_cpu() instead of get_cpu_var() to fetch the desired\n      cpu vars on debug_atomic_read()\n\n -v3: Store the stats in a structure. No need for local_t as we\n      are NMI/irq safe.\n\n -v4: Fix tons of build errors. I thought I had tested it but I\n      probably forgot to select the relevant config.\n\nSuggested-by: Steven Rostedt \u003crostedt@goodmis.org\u003e\nSigned-off-by: Frederic Weisbecker \u003cfweisbec@gmail.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\nLKML-Reference: \u003c1270505417-8144-1-git-send-regression-fweisbec@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Steven Rostedt \u003crostedt@goodmis.org\u003e\n"
    },
    {
      "commit": "af012961450949ea297b209e091bd1a3805b8a0a",
      "tree": "d092a182ad014b4508079bacf416deb1e0650c01",
      "parents": [
        "12f3dfd022d7e616757a94f0538d3d525d806a16"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jul 16 15:44:29 2009 +0200"
      },
      "committer": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jul 24 10:53:29 2009 +0200"
      },
      "message": "lockdep: BFS cleanup\n\nSome cleanups of the lockdep code after the BFS series:\n\n - Remove the last traces of the generation id\n - Fixup comment style\n - Move the bfs routines into lockdep.c\n - Cleanup the bfs routines\n\n[ tom.leiming@gmail.com: Fix crash ]\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1246201486-7308-11-git-send-email-tom.leiming@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "12f3dfd022d7e616757a94f0538d3d525d806a16",
      "tree": "22221bcfa6edcc47094bd87862eb9cc5402a5799",
      "parents": [
        "4dd861d6467007681991d8ec079d928db2018cbb"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "tom.leiming@gmail.com",
        "time": "Thu Jul 16 15:44:29 2009 +0200"
      },
      "committer": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jul 24 10:52:03 2009 +0200"
      },
      "message": "lockdep: Add statistics info for max bfs queue depth\n\nAdd BFS statistics to the existing lockdep stats.\n\nSigned-off-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1246201486-7308-10-git-send-email-tom.leiming@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "24208ca76707581a097c01a73fd63781e73d3404",
      "tree": "46d2e44f11dd0b3dda782d6e4467c700f6d03149",
      "parents": [
        "d7aaba140a09b7a2295aec061629c880f088de3d"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "tom.leiming@gmail.com",
        "time": "Thu Jul 16 15:44:29 2009 +0200"
      },
      "committer": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jul 24 10:49:54 2009 +0200"
      },
      "message": "lockdep: Introduce print_shortest_lock_dependencies\n\nSince the shortest lock dependencies\u0027 path may be obtained by BFS,\nwe print the shortest one by print_shortest_lock_dependencies().\n\nSigned-off-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1246201486-7308-7-git-send-email-tom.leiming@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d588e46155e9c51217b9840db1e94a0f594c1af2",
      "tree": "0ede7d7d8338f8db15d8c690c46a0173196d7bac",
      "parents": [
        "c94aa5ca3088018d2a7a9bd3258aefffe29df265"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "tom.leiming@gmail.com",
        "time": "Thu Jul 16 15:44:29 2009 +0200"
      },
      "committer": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jul 24 10:49:46 2009 +0200"
      },
      "message": "lockdep: Improve implementation of BFS\n\n1,replace %MAX_CIRCULAR_QUE_SIZE with \u0026(MAX_CIRCULAR_QUE_SIZE-1)\nsince we define MAX_CIRCULAR_QUE_SIZE as power of 2;\n\n2,use bitmap to mark if a lock is accessed in BFS in order to\nclear it quickly, because we may search a graph many times.\n\nSigned-off-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1246201486-7308-3-git-send-email-tom.leiming@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c94aa5ca3088018d2a7a9bd3258aefffe29df265",
      "tree": "29c81673e37315087ee3087180fae043085e6343",
      "parents": [
        "4be3bd7849165e7efa6b0b35a23d6a3598d97465"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "tom.leiming@gmail.com",
        "time": "Thu Jul 16 15:44:29 2009 +0200"
      },
      "committer": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Fri Jul 24 10:49:44 2009 +0200"
      },
      "message": "lockdep: Print the shortest dependency chain if finding a circle\n\nCurrently lockdep will print the 1st circle detected if it\nexists when acquiring a new (next) lock.\n\nThis patch prints the shortest path from the next lock to be\nacquired to the previous held lock if a circle is found.\n\nThe patch still uses the current method to check circle, and\nonce the circle is found, breadth-first search algorithem is\nused to compute the shortest path from the next lock to the\nprevious lock in the forward lock dependency graph.\n\nPrinting the shortest path will shorten the dependency chain,\nand make troubleshooting for possible circular locking easier.\n\nSigned-off-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003c1246201486-7308-2-git-send-email-tom.leiming@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d80c19df5fcceb8c741e96f09f275c2da719efef",
      "tree": "42062e06bd531ad89c9019a341c6b6c26062edfd",
      "parents": [
        "1d80cac0fe44fb87b2a3d35fddd7f534ea81cd90"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue May 12 16:29:13 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue May 12 19:59:52 2009 +0200"
      },
      "message": "lockdep: increase MAX_LOCKDEP_ENTRIES and MAX_LOCKDEP_CHAINS\n\nNow that lockdep coverage has increased it has become easier to\nrun out of entries:\n\n[   21.401387] BUG: MAX_LOCKDEP_ENTRIES too low!\n[   21.402007] turning off the locking correctness validator.\n[   21.402007] Pid: 1555, comm: S99local Not tainted 2.6.30-rc5-tip #2\n[   21.402007] Call Trace:\n[   21.402007]  [\u003cffffffff81069789\u003e] add_lock_to_list+0x53/0xba\n[   21.402007]  [\u003cffffffff810eb615\u003e] ? lookup_mnt+0x19/0x53\n[   21.402007]  [\u003cffffffff8106be14\u003e] check_prev_add+0x14b/0x1c7\n[   21.402007]  [\u003cffffffff8106c304\u003e] validate_chain+0x474/0x52a\n[   21.402007]  [\u003cffffffff8106c6fc\u003e] __lock_acquire+0x342/0x3c7\n[   21.402007]  [\u003cffffffff8106c842\u003e] lock_acquire+0xc1/0xe5\n[   21.402007]  [\u003cffffffff810eb615\u003e] ? lookup_mnt+0x19/0x53\n[   21.402007]  [\u003cffffffff8153aedc\u003e] _spin_lock+0x31/0x66\n\nDouble the size - as we\u0027ve done in the past.\n\n[ Impact: allow lockdep to cover more locks ]\n\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nLKML-Reference: \u003cnew-submission\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f510b233cfc7bfd57b6007071c52aa42e3d16b06",
      "tree": "d7e91f4d82ee3bed078f5813377b73a1eb7e382f",
      "parents": [
        "3ff176ca47911630d1555f150d36daa2d0819ea9"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jan 22 17:53:47 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Feb 14 23:28:22 2009 +0100"
      },
      "message": "lockdep: get_user_chars() redo\n\nGeneric, states independent, get_user_chars().\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d7b1b02134272840f4b655136e00c461e1cf1d53",
      "tree": "9bb71dbfbc5155cfab9829716c2b9b01cf2a76ed",
      "parents": [
        "9851673bc32bc9fcafbbaeffc858ead434bd6d58"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jan 22 14:38:38 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Feb 14 23:28:01 2009 +0100"
      },
      "message": "lockdep: generate the state bit definitions\n\nGenerate the state bit definitions from the lockdep_states.h file.\n\nAlso, move LOCK_USED to last, so that the\n\n USED_IN\n USED_IN_READ\n ENABLED\n ENABLED_READ\n\nstates are nicely bit aligned -- we\u0027re going to use that property\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "9851673bc32bc9fcafbbaeffc858ead434bd6d58",
      "tree": "96272ea6db6c2e38b35c86668abd2290bd18df9f",
      "parents": [
        "5346417e17daf5a7712e4cf030b45414e46607cf"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jan 22 14:18:40 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Feb 14 23:27:59 2009 +0100"
      },
      "message": "lockdep: move state bit definitions around\n\nFor convenience later.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cf40bd16fdad42c053040bcd3988f5fdedbb6c57",
      "tree": "d97ab25726981712be806d77650b7f65167cfc88",
      "parents": [
        "6f2b9b9a9d750a9175dc79c74bfed5add840983c"
      ],
      "author": {
        "name": "Nick Piggin",
        "email": "npiggin@suse.de",
        "time": "Wed Jan 21 08:12:39 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Feb 14 23:27:49 2009 +0100"
      },
      "message": "lockdep: annotate reclaim context (__GFP_NOFS)\n\nHere is another version, with the incremental patch rolled up, and\nadded reclaim context annotation to kswapd, and allocation tracing\nto slab allocators (which may only ever reach the page allocator\nin rare cases, so it is good to put annotations here too).\n\nHaven\u0027t tested this version as such, but it should be getting closer\nto merge worthy ;)\n\n--\nAfter noticing some code in mm/filemap.c accidentally perform a __GFP_FS\nallocation when it should not have been, I thought it might be a good idea to\ntry to catch this kind of thing with lockdep.\n\nI coded up a little idea that seems to work. Unfortunately the system has to\nactually be in __GFP_FS page reclaim, then take the lock, before it will mark\nit. But at least that might still be some orders of magnitude more common\n(and more debuggable) than an actual deadlock condition, so we have some\nimprovement I hope (the concept is no less complete than discovery of a lock\u0027s\ninterrupt contexts).\n\nI guess we could even do the same thing with __GFP_IO (normal reclaim), and\neven GFP_NOIO locks too... but filesystems will have the most locks and fiddly\ncode paths, so let\u0027s start there and see how it goes.\n\nIt *seems* to work. I did a quick test.\n\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\n[ INFO: inconsistent lock state ]\n2.6.28-rc6-00007-ged31348-dirty #26\n---------------------------------\ninconsistent {in-reclaim-W} -\u003e {ov-reclaim-W} usage.\nmodprobe/8526 [HC0[0]:SC0[0]:HE1:SE1] takes:\n (testlock){--..}, at: [\u003cffffffffa0020055\u003e] brd_init+0x55/0x216 [brd]\n{in-reclaim-W} state was registered at:\n  [\u003cffffffff80267bdb\u003e] __lock_acquire+0x75b/0x1a60\n  [\u003cffffffff80268f71\u003e] lock_acquire+0x91/0xc0\n  [\u003cffffffff8070f0e1\u003e] mutex_lock_nested+0xb1/0x310\n  [\u003cffffffffa002002b\u003e] brd_init+0x2b/0x216 [brd]\n  [\u003cffffffff8020903b\u003e] _stext+0x3b/0x170\n  [\u003cffffffff80272ebf\u003e] sys_init_module+0xaf/0x1e0\n  [\u003cffffffff8020c3fb\u003e] system_call_fastpath+0x16/0x1b\n  [\u003cffffffffffffffff\u003e] 0xffffffffffffffff\nirq event stamp: 3929\nhardirqs last  enabled at (3929): [\u003cffffffff8070f2b5\u003e] mutex_lock_nested+0x285/0x310\nhardirqs last disabled at (3928): [\u003cffffffff8070f089\u003e] mutex_lock_nested+0x59/0x310\nsoftirqs last  enabled at (3732): [\u003cffffffff8061f623\u003e] sk_filter+0x83/0xe0\nsoftirqs last disabled at (3730): [\u003cffffffff8061f5b6\u003e] sk_filter+0x16/0xe0\n\nother info that might help us debug this:\n1 lock held by modprobe/8526:\n #0:  (testlock){--..}, at: [\u003cffffffffa0020055\u003e] brd_init+0x55/0x216 [brd]\n\nstack backtrace:\nPid: 8526, comm: modprobe Not tainted 2.6.28-rc6-00007-ged31348-dirty #26\nCall Trace:\n [\u003cffffffff80265483\u003e] print_usage_bug+0x193/0x1d0\n [\u003cffffffff80266530\u003e] mark_lock+0xaf0/0xca0\n [\u003cffffffff80266735\u003e] mark_held_locks+0x55/0xc0\n [\u003cffffffffa0020000\u003e] ? brd_init+0x0/0x216 [brd]\n [\u003cffffffff802667ca\u003e] trace_reclaim_fs+0x2a/0x60\n [\u003cffffffff80285005\u003e] __alloc_pages_internal+0x475/0x580\n [\u003cffffffff8070f29e\u003e] ? mutex_lock_nested+0x26e/0x310\n [\u003cffffffffa0020000\u003e] ? brd_init+0x0/0x216 [brd]\n [\u003cffffffffa002006a\u003e] brd_init+0x6a/0x216 [brd]\n [\u003cffffffffa0020000\u003e] ? brd_init+0x0/0x216 [brd]\n [\u003cffffffff8020903b\u003e] _stext+0x3b/0x170\n [\u003cffffffff8070f8b9\u003e] ? mutex_unlock+0x9/0x10\n [\u003cffffffff8070f83d\u003e] ? __mutex_unlock_slowpath+0x10d/0x180\n [\u003cffffffff802669ec\u003e] ? trace_hardirqs_on_caller+0x12c/0x190\n [\u003cffffffff80272ebf\u003e] sys_init_module+0xaf/0x1e0\n [\u003cffffffff8020c3fb\u003e] system_call_fastpath+0x16/0x1b\n\nSigned-off-by: Nick Piggin \u003cnpiggin@suse.de\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "d6672c501852d577097f6757c311d937aca0b04b",
      "tree": "32ec68d6aeba95b8226db5be21bbd706ea2c616e",
      "parents": [
        "c2fc11985db304572322f1dcdcb0f71337315006"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Aug 01 11:23:50 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Aug 13 12:55:10 2008 +0200"
      },
      "message": "lockdep: build fix\n\nfix:\n\n kernel/built-in.o: In function `lockdep_stats_show\u0027:\n lockdep_proc.c:(.text+0x3cb2f): undefined reference to `lockdep_count_forward_deps\u0027\n kernel/built-in.o: In function `l_show\u0027:\n lockdep_proc.c:(.text+0x3d02b): undefined reference to `lockdep_count_forward_deps\u0027\n lockdep_proc.c:(.text+0x3d047): undefined reference to `lockdep_count_backward_deps\u0027\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f82b217e3513fe3af342c0f3ee1494e86250c21c",
      "tree": "144b724c9e0c491c0983087627000080b25b9852",
      "parents": [
        "1b12bbc747560ea68bcc132c3d05699e52271da0"
      ],
      "author": {
        "name": "Dave Jones",
        "email": "davej@redhat.com",
        "time": "Mon Aug 11 09:30:23 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 09:30:23 2008 +0200"
      },
      "message": "lockdep: shrink held_lock structure\n\nstruct held_lock {\n        u64                        prev_chain_key;       /*     0     8 */\n        struct lock_class *        class;                /*     8     8 */\n        long unsigned int          acquire_ip;           /*    16     8 */\n        struct lockdep_map *       instance;             /*    24     8 */\n        int                        irq_context;          /*    32     4 */\n        int                        trylock;              /*    36     4 */\n        int                        read;                 /*    40     4 */\n        int                        check;                /*    44     4 */\n        int                        hardirqs_off;         /*    48     4 */\n\n        /* size: 56, cachelines: 1 */\n        /* padding: 4 */\n        /* last cacheline: 56 bytes */\n};\n\nstruct held_lock {\n        u64                        prev_chain_key;       /*     0     8 */\n        long unsigned int          acquire_ip;           /*     8     8 */\n        struct lockdep_map *       instance;             /*    16     8 */\n        unsigned int               class_idx:11;         /*    24:21  4 */\n        unsigned int               irq_context:2;        /*    24:19  4 */\n        unsigned int               trylock:1;            /*    24:18  4 */\n        unsigned int               read:2;               /*    24:16  4 */\n        unsigned int               check:2;              /*    24:14  4 */\n        unsigned int               hardirqs_off:1;       /*    24:13  4 */\n\n        /* size: 32, cachelines: 1 */\n        /* padding: 4 */\n        /* bit_padding: 13 bits */\n        /* last cacheline: 32 bytes */\n};\n\n[mingo@elte.hu: shrunk hlock-\u003eclass too]\n[peterz@infradead.org: fixup bit sizes]\nSigned-off-by: Dave Jones \u003cdavej@redhat.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\n"
    },
    {
      "commit": "419ca3f13532793b81aff09f80c60af3eacbb43d",
      "tree": "eb2d82e52917ebccff269a51e90868ce229336b2",
      "parents": [
        "6e86841d05f371b5b9b86ce76c02aaee83352298"
      ],
      "author": {
        "name": "David Miller",
        "email": "davem@davemloft.net",
        "time": "Tue Jul 29 21:45:03 2008 -0700"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Jul 31 18:38:28 2008 +0200"
      },
      "message": "lockdep: fix combinatorial explosion in lock subgraph traversal\n\nWhen we traverse the graph, either forwards or backwards, we\nare interested in whether a certain property exists somewhere\nin a node reachable in the graph.\n\nTherefore it is never necessary to traverse through a node more\nthan once to get a correct answer to the given query.\n\nTake advantage of this property using a global ID counter so that we\nneed not clear all the markers in all the lock_class entries before\ndoing a traversal.  A new ID is choosen when we start to traverse, and\nwe continue through a lock_class only if it\u0027s ID hasn\u0027t been marked\nwith the new value yet.\n\nThis short-circuiting is essential especially for high CPU count\nsystems.  The scheduler has a runqueue per cpu, and needs to take\ntwo runqueue locks at a time, which leads to long chains of\nbackwards and forwards subgraphs from these runqueue lock nodes.\nWithout the short-circuit implemented here, a graph traversal on\na runqueue lock can take up to (1 \u003c\u003c (N - 1)) checks on a system\nwith N cpus.\n\nFor anything more than 16 cpus or so, lockdep will eventually bring\nthe machine to a complete standstill.\n\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "cd1a28e8457e6ebf72c48d84d4e736307e86436e",
      "tree": "09371914495f7e3803016516ba887b593ea64a9b",
      "parents": [
        "443cd507ce7f78c6f8742b72736585c031d5a921"
      ],
      "author": {
        "name": "Huang, Ying",
        "email": "ying.huang@intel.com",
        "time": "Mon Jun 23 11:20:54 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 24 01:28:20 2008 +0200"
      },
      "message": "lockdep: add lock_class information to lock_chain and output it\n\nIt is based on x86/master branch of git-x86 tree, and has been tested\non x86_64 platform.\n\nChangeLog:\n\nv2:\n\n- Enclosing proc file system related code into CONFIG_PROVE_LOCKING.\n\n- Fix nr_chain_hlocks update code.\n\nSigned-off-by: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "443cd507ce7f78c6f8742b72736585c031d5a921",
      "tree": "256182911b08287661beca1f90455b14cd0b9151",
      "parents": [
        "2429e4ee78e2fa40f82a4572dd21d4f3b4de9325"
      ],
      "author": {
        "name": "Huang, Ying",
        "email": "ying.huang@intel.com",
        "time": "Fri Jun 20 16:39:21 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Jun 20 12:21:33 2008 +0200"
      },
      "message": "lockdep: add lock_class information to lock_chain and output it\n\nThis patch records array of lock_class into lock_chain, and export\nlock_chain information via /proc/lockdep_chains.\n\nIt is based on x86/master branch of git-x86 tree, and has been tested\non x86_64 platform.\n\nSigned-off-by: Huang Ying \u003cying.huang@intel.com\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "50cc670aebf4fc64afaf533fb9fa1c8570f09d74",
      "tree": "ad31034c5f78135979cdb5b4878b764696880a57",
      "parents": [
        "e9d55f9dbcf048a882478b437fa3f87becf8a770"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Dec 06 20:39:30 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:43 2006 -0800"
      },
      "message": "[PATCH] lockdep: more chains\n\nSome have reported a chain-table overflow - double its size.\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": "9bb25bf36f0d7b06368432e2324dbbc2e98b5e60",
      "tree": "c788a094599f6d1d82bd1263290757d7a6a1d7c7",
      "parents": [
        "a4f5749ba6e3f23ae4a137cee10324830db4d081"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Sep 12 20:35:50 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Wed Sep 13 07:32:14 2006 -0700"
      },
      "message": "[PATCH] lockdep: double the number of stack-trace entries\n\nMiles Lane reported the \"BUG: MAX_STACK_TRACE_ENTRIES too low!\" message,\nwhich means that during normal use his system produced enough lockdep\nevents so that the 128-thousand entries stack-trace array got exhausted.\nDouble the size of the array.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Miles Lane \u003cmiles.lane@gmail.com\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"
    }
  ]
}
