)]}'
{
  "log": [
    {
      "commit": "e351b660fddd4df76cc4635f896d311ed0ff3752",
      "tree": "380a67c875a4454bd47a8ce6ddd159432863646e",
      "parents": [
        "bb97a91e2549a7f2df9c21d32542582f549ab3ec"
      ],
      "author": {
        "name": "Ming Lei",
        "email": "tom.leiming@gmail.com",
        "time": "Wed Jul 22 22:48:09 2009 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 02 15:41:37 2009 +0200"
      },
      "message": "lockdep: Reintroduce generation count to make BFS faster\n\nWe still can apply DaveM\u0027s generation count optimization to\nBFS, based on the following idea:\n\n - before doing each BFS, increase the global generation id\n   by 1\n\n - if one node in the graph has been visited, mark it as\n   visited by storing the current global generation id into\n   the node\u0027s dep_gen_id field\n\n - so we can decide if one node has been visited already, by\n   comparing the node\u0027s dep_gen_id with the global generation id.\n\nBy applying DaveM\u0027s generation count optimization to current\nimplementation of BFS, we gain the following advantages:\n\n - we save MAX_LOCKDEP_ENTRIES/8 bytes memory;\n\n - we remove the bitmap_zero(bfs_accessed, MAX_LOCKDEP_ENTRIES);\n   in each BFS, which is very time-consuming since\n   MAX_LOCKDEP_ENTRIES may be very large.(16384UL)\n\nSigned-off-by: Ming Lei \u003ctom.leiming@gmail.com\u003e\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"David S. Miller\" \u003cdavem@davemloft.net\u003e\nLKML-Reference: \u003c1248274089-6358-1-git-send-email-tom.leiming@gmail.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "bb97a91e2549a7f2df9c21d32542582f549ab3ec",
      "tree": "fdddcb458b74a39e97089e5bcc93234cb50704c6",
      "parents": [
        "f607c6685774811b8112e124f10a053d77015485"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Jul 20 19:15:35 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 02 15:41:35 2009 +0200"
      },
      "message": "lockdep: Deal with many similar locks\n\nspin_lock_nest_lock() allows to take many instances of the same\nclass, this can easily lead to overflow of MAX_LOCK_DEPTH.\n\nTo avoid this overflow, we\u0027ll stop accounting instances but\nstart reference counting the class in the held_lock structure.\n\n[ We could maintain a list of instances, if we\u0027d move the hlock\n  stuff into __lock_acquired(), but that would require\n  significant modifications to the current code. ]\n\nWe restrict this mode to spin_lock_nest_lock() only, because it\ndegrades the lockdep quality due to lost of instance.\n\nFor lockstat this means we don\u0027t track lock statistics for any\nbut the first lock in the series.\n\nCurrently nesting is limited to 11 bits because that was the\nspare space available in held_lock. This yields a 2048\ninstances maximium.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: Marcelo Tosatti \u003cmtosatti@redhat.com\u003e\nCc: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "f607c6685774811b8112e124f10a053d77015485",
      "tree": "4d32d967c8f8fb37ae09319735062a131a91725b",
      "parents": [
        "98c33eddaf41d225d99b40f9eedbd0fac4c08c05"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Jul 20 19:16:29 2009 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sun Aug 02 15:41:34 2009 +0200"
      },
      "message": "lockdep: Introduce lockdep_assert_held()\n\nAdd a lockdep helper to validate that we indeed are the owner\nof a lock.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\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": "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": "9a7aa12f3911853a3574d47d567b81a2a5df7208",
      "tree": "ec3c8efe46b59ed78515ec75302a86054f60d6e5",
      "parents": [
        "df152c241df9e9d2b9a65d37bd02961abe7f591a"
      ],
      "author": {
        "name": "Jan Kara",
        "email": "jack@suse.cz",
        "time": "Thu Jun 04 15:26:49 2009 +0200"
      },
      "committer": {
        "name": "Joel Becker",
        "email": "joel.becker@oracle.com",
        "time": "Mon Jun 22 14:34:22 2009 -0700"
      },
      "message": "vfs: Set special lockdep map for dirs only if not set by fs\n\nSome filesystems need to set lockdep map for i_mutex differently for\ndifferent directories. For example OCFS2 has system directories (for\norphan inode tracking and for gathering all system files like journal\nor quota files into a single place) which have different locking\nlocking rules than standard directories. For a filesystem setting\nlockdep map is naturaly done when the inode is read but we have to\nmodify unlock_new_inode() not to overwrite the lockdep map the filesystem\nhas set.\n\nAcked-by: peterz@infradead.org\nCC: mingo@redhat.com\nSigned-off-by: Jan Kara \u003cjack@suse.cz\u003e\nSigned-off-by: Joel Becker \u003cjoel.becker@oracle.com\u003e\n"
    },
    {
      "commit": "e8c158bb313c1df421eab7dc4299cd39cbbf5895",
      "tree": "8a5f1d01e58d0e358b2b0c9407fc494912e83c27",
      "parents": [
        "41d577aa35aa0504fe28b76a948908bdb7fbec81"
      ],
      "author": {
        "name": "Robin Holt",
        "email": "holt@sgi.com",
        "time": "Thu Apr 02 16:59:45 2009 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Thu Apr 02 19:05:10 2009 -0700"
      },
      "message": "Factor out #ifdefs from kernel/spinlock.c to LOCK_CONTENDED_FLAGS\n\nSGI has observed that on large systems, interrupts are not serviced for a\nlong period of time when waiting for a rwlock.  The following patch series\nre-enables irqs while waiting for the lock, resembling the code which is\nalready there for spinlocks.\n\nI only made the ia64 version, because the patch adds some overhead to the\nfast path.  I assume there is currently no demand to have this for other\narchitectures, because the systems are not so large.  Of course, the\npossibility to implement raw_{read|write}_lock_flags for any architecture\nis still there.\n\nThis patch:\n\nThe new macro LOCK_CONTENDED_FLAGS expands to the correct implementation\ndepending on the config options, so that IRQ\u0027s are re-enabled when\npossible, but they remain disabled if CONFIG_LOCKDEP is set.\n\nSigned-off-by: Petr Tesarik \u003cptesarik@suse.cz\u003e\nSigned-off-by: Robin Holt \u003cholt@sgi.com\u003e\nCc: \u003clinux-arch@vger.kernel.org\u003e\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nCc: \"Luck, Tony\" \u003ctony.luck@intel.com\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "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": "a652d7081bc96b3094e85ca30e47f50185d2f717",
      "tree": "859a784cf389f2835cd0f91cf625f16ed36198c8",
      "parents": [
        "4fc95e867f1e75351b89db3c68212dfcce7ea563"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jan 22 13:13:11 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Feb 14 23:27:52 2009 +0100"
      },
      "message": "lockdep: sanitize reclaim bit names\n\ns/HELD_OVER/ENABLED/g\n\nso that its similar to the hard and soft-irq names.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4fc95e867f1e75351b89db3c68212dfcce7ea563",
      "tree": "618b2ed01d87a871f8423dd230bdb3609aa7c7f0",
      "parents": [
        "cf40bd16fdad42c053040bcd3988f5fdedbb6c57"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Jan 22 13:10:52 2009 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Sat Feb 14 23:27:51 2009 +0100"
      },
      "message": "lockdep: sanitize bit names\n\ns/\\(LOCKF\\?_ENABLED_[^ ]*\\)S\\(_READ\\)\\?\\\u003e/\\1\\2/g\n\nSo that the USED_IN and ENABLED have the same names.\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": "179475a3b46f86e2d06f83e2312218ac3f0cf3a7",
      "tree": "d4755f722ae606e21ac87baa262041e2580b2568",
      "parents": [
        "bb758e9637e5ddcff84a97177415499ae1fed498",
        "860cf8894b326e4b89720f520540604834337b72"
      ],
      "author": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 30 16:20:19 2008 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@linux-foundation.org",
        "time": "Tue Dec 30 16:20:19 2008 -0800"
      },
      "message": "Merge branch \u0027irq-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip\n\n* \u0027irq-core-for-linus\u0027 of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:\n  x86, sparseirq: clean up Kconfig entry\n  x86: turn CONFIG_SPARSE_IRQ off by default\n  sparseirq: fix numa_migrate_irq_desc dependency and comments\n  sparseirq: add kernel-doc notation for new member in irq_desc, -v2\n  locking, irq: enclose irq_desc_lock_class in CONFIG_LOCKDEP\n  sparseirq, xen: make sure irq_desc is allocated for interrupts\n  sparseirq: fix !SMP building, #2\n  x86, sparseirq: move irq_desc according to smp_affinity, v7\n  proc: enclose desc variable of show_stat() in CONFIG_SPARSE_IRQ\n  sparse irqs: add irqnr.h to the user headers list\n  sparse irqs: handle !GENIRQ platforms\n  sparseirq: fix !SMP \u0026\u0026 !PCI_MSI \u0026\u0026 !HT_IRQ build\n  sparseirq: fix Alpha build failure\n  sparseirq: fix typo in !CONFIG_IO_APIC case\n  x86, MSI: pass irq_cfg and irq_desc\n  x86: MSI start irq numbering from nr_irqs_gsi\n  x86: use NR_IRQS_LEGACY\n  sparse irq_desc[] array: core kernel and x86 changes\n  genirq: record IRQ_LEVEL in irq_desc[]\n  irq.h: remove padding from irq_desc on 64bits\n"
    },
    {
      "commit": "74c8a6130486bed224e960790f4aa72dd09c061e",
      "tree": "0d6da9737c66ca2f4b2a20b7eb34e6c2d04ba4cc",
      "parents": [
        "6f8a0ed4e5d86c01db5e7e3f95d9003b7cf9cb87"
      ],
      "author": {
        "name": "KOSAKI Motohiro",
        "email": "kosaki.motohiro@jp.fujitsu.com",
        "time": "Wed Dec 17 19:40:33 2008 +0900"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 18 14:35:53 2008 +0100"
      },
      "message": "locking, irq: enclose irq_desc_lock_class in CONFIG_LOCKDEP\n\nImpact: simplify code\n\ncommit \"08678b0: generic: sparse irqs: use irq_desc() [...]\" introduced\nthe irq_desc_lock_class variable.\n\nBut it is used only if CONFIG_SPARSE_IRQ\u003dY or CONFIG_TRACE_IRQFLAGS\u003dY.\nOtherwise, following warnings happen:\n\n\tCC      kernel/irq/handle.o\n\tkernel/irq/handle.c:26: warning: \u0027irq_desc_lock_class\u0027 defined but not used\n\nActually, current early_init_irq_lock_class has a bit strange and messy ifdef.\nIn addition, it is not valueable.\n\n1. this function is protected by !CONFIG_SPARSE_IRQ, but that is not necessary.\n   if CONFIG_SPARSE_IRQ\u003dY, desc of all irq number are initialized by NULL\n   at first - then this function calling is safe.\n\n2. this function protected by CONFIG_TRACE_IRQFLAGS too. but it is not\n   necessary either, because lockdep_set_class() doesn\u0027t have bad side\n   effect even if CONFIG_TRACE_IRQFLAGS\u003dn.\n\nThis patch bloat kernel size a bit on CONFIG_TRACE_IRQFLAGS\u003dn and\nCONFIG_SPARSE_IRQ\u003dY - but that\u0027s ok. early_init_irq_lock_class() is not\na fastpatch at all.\n\nTo avoid messy ifdefs is more important than a few bytes diet.\n\nSigned-off-by: KOSAKI Motohiro \u003ckosaki.motohiro@jp.fujitsu.com\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "00ef9f7348dfd2fc223ec42aceb30836e86b367f",
      "tree": "14c33d878bec717179a6916232e118dbfbf7d65f",
      "parents": [
        "cb9c34e6d090d376b77becaa5d29a65dec7f4272"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Dec 04 09:00:17 2008 +0100"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Thu Dec 04 10:08:18 2008 +0100"
      },
      "message": "lockdep: change a held lock\u0027s class\n\nImpact: introduce new lockdep API\n\nAllow to change a held lock\u0027s class. Basically the same as the existing\ncode to change a subclass therefore reuse all that.\n\nThe XFS code will be able to use this to annotate their inode locking.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e8f6fbf62de37cbc2e179176ac7010d5f4396b67",
      "tree": "ac22d719c3c93d24b7eeda395b3271be60bfc661",
      "parents": [
        "1fa989e80a9a104bf3b81842a5f4c1867d7aa9c4"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 01:38:36 2008 +0000"
      },
      "committer": {
        "name": "David S. Miller",
        "email": "davem@davemloft.net",
        "time": "Thu Nov 13 23:19:10 2008 -0800"
      },
      "message": "lockdep: include/linux/lockdep.h - fix warning in net/bluetooth/af_bluetooth.c\n\nfix this warning:\n\n  net/bluetooth/af_bluetooth.c:60: warning: ‘bt_key_strings’ defined but not used\n  net/bluetooth/af_bluetooth.c:71: warning: ‘bt_slock_key_strings’ defined but not used\n\nthis is a lockdep macro problem in the !LOCKDEP case.\n\nWe cannot convert it to an inline because the macro works on multiple types,\nbut we can mark the parameter used.\n\n[ also clean up a misaligned tab in sock_lock_init_class_and_name() ]\n\n[ also remove #ifdefs from around af_family_clock_key strings - which\n  were certainly added to get rid of the ugly build warnings. ]\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: David S. Miller \u003cdavem@davemloft.net\u003e\n"
    },
    {
      "commit": "e25cf3db560e803292946ef23a30c69e341ce56f",
      "tree": "7e089b5e87dc657e934d96e87ae8708bbe53e793",
      "parents": [
        "708b8eae0fd532af73ea8350e6dcc10255ff7376"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Fri Oct 17 15:55:07 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Nov 12 12:39:40 2008 +0100"
      },
      "message": "lockdep: include/linux/lockdep.h - fix warning in net/bluetooth/af_bluetooth.c\n\nfix this warning:\n\n  net/bluetooth/af_bluetooth.c:60: warning: ‘bt_key_strings’ defined but not used\n  net/bluetooth/af_bluetooth.c:71: warning: ‘bt_slock_key_strings’ defined but not used\n\nthis is a lockdep macro problem in the !LOCKDEP case.\n\nWe cannot convert it to an inline because the macro works on multiple types,\nbut we can mark the parameter used.\n\n[ also clean up a misaligned tab in sock_lock_init_class_and_name() ]\n\n[ also remove #ifdefs from around af_family_clock_key strings - which\n  were certainly added to get rid of the ugly build warnings. ]\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "c7e78cff6b7518212247fb20b1dc6411540dc9af",
      "tree": "4152afb3e00df125303c4c603e01addc19059ac7",
      "parents": [
        "7317d7b87edb41a9135e30be1ec3f7ef817c53dd"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Thu Oct 16 23:17:09 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Oct 20 15:43:10 2008 +0200"
      },
      "message": "lockstat: contend with points\n\nWe currently only provide points that have to wait on contention, also\nlists the points we have to wait for.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "76b189e91845eab3a9d52bb97f971d312d25652d",
      "tree": "4ce5a577fc58e055febc942987eea8853f54c7a7",
      "parents": [
        "f648972e017659c741bdd3be6b4aeb2d73672031"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Sep 10 09:57:35 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Wed Sep 10 13:48:49 2008 +0200"
      },
      "message": "lockdep: add might_lock() / might_lock_read()\n\nuseful to establish a lock dependency in case the actual dependency is\nrare or hard to trigger.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nAcked-by: Nick Piggin \u003cnickpiggin@yahoo.com.au\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "e5f363e358cf16e4ad13a6826e15088c5495efe9",
      "tree": "dbcca9edd9d2001cace9f770e57f065f13c9cbd1",
      "parents": [
        "b42e737e576339c795d9ac77a1fce6057f6bc0cf"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 12:37:27 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 15:25:07 2008 +0200"
      },
      "message": "lockdep: increase MAX_LOCKDEP_KEYS\n\ncertain configs produce:\n\n [   70.076229] BUG: MAX_LOCKDEP_KEYS too low!\n [   70.080230] turning off the locking correctness validator.\n\ntune them up.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b42e737e576339c795d9ac77a1fce6057f6bc0cf",
      "tree": "05aa0ba4f7dfd8d8a5ac3dc85893c18a20f159d3",
      "parents": [
        "3295f0ef9ff048a4619ede597ad9ec9cab725654"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Aug 11 12:34:42 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 12:34:42 2008 +0200"
      },
      "message": "lockdep: fix overflow in the hlock shrinkage code\n\nThere is a overflow by 1 case in the new shrunken hlock code.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "3295f0ef9ff048a4619ede597ad9ec9cab725654",
      "tree": "f39a8ecf1958130a0b86c554399d23a65b1c3991",
      "parents": [
        "8bfe0298f7a04952d19f4a2cf510d7a6311eeed0"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 10:30:30 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 10:30:30 2008 +0200"
      },
      "message": "lockdep: rename map_[acquire|release]() \u003d\u003e lock_map_[acquire|release]()\n\nthe names were too generic:\n\n drivers/uio/uio.c:87: error: expected identifier or \u0027(\u0027 before \u0027do\u0027\n drivers/uio/uio.c:87: error: expected identifier or \u0027(\u0027 before \u0027while\u0027\n drivers/uio/uio.c:113: error: \u0027map_release\u0027 undeclared here (not in a function)\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "b7d39aff91454f2534db2275f55908656ec0470c",
      "tree": "24481f2fe7206ef69800a33df6ac3e1716085326",
      "parents": [
        "7531e2f34d1d551b096143f19111139f0dd84c8b"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Aug 11 09:30:24 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 09:30:24 2008 +0200"
      },
      "message": "lockdep: spin_lock_nest_lock()\n\nExpose the new lock protection lock.\n\nThis can be used to annotate places where we take multiple locks of the\nsame class and avoid deadlocks by always taking another (top-level) lock\nfirst.\n\nNOTE: we\u0027re still bound to the MAX_LOCK_DEPTH (48) limit.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "7531e2f34d1d551b096143f19111139f0dd84c8b",
      "tree": "0a29d6703e28dc6752b9b4085594cca238595aac",
      "parents": [
        "4f3e7524b2e703d9f8b02ac338153a53dd7ede66"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Aug 11 09:30:24 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 09:30:24 2008 +0200"
      },
      "message": "lockdep: lock protection locks\n\nOn Fri, 2008-08-01 at 16:26 -0700, Linus Torvalds wrote:\n\n\u003e On Fri, 1 Aug 2008, David Miller wrote:\n\u003e \u003e\n\u003e \u003e Taking more than a few locks of the same class at once is bad\n\u003e \u003e news and it\u0027s better to find an alternative method.\n\u003e\n\u003e It\u0027s not always wrong.\n\u003e\n\u003e If you can guarantee that anybody that takes more than one lock of a\n\u003e particular class will always take a single top-level lock _first_, then\n\u003e that\u0027s all good. You can obviously screw up and take the same lock _twice_\n\u003e (which will deadlock), but at least you cannot get into ABBA situations.\n\u003e\n\u003e So maybe the right thing to do is to just teach lockdep about \"lock\n\u003e protection locks\". That would have solved the multi-queue issues for\n\u003e networking too - all the actual network drivers would still have taken\n\u003e just their single queue lock, but the one case that needs to take all of\n\u003e them would have taken a separate top-level lock first.\n\u003e\n\u003e Never mind that the multi-queue locks were always taken in the same order:\n\u003e it\u0027s never wrong to just have some top-level serialization, and anybody\n\u003e who needs to take \u003cn\u003e locks might as well do \u003cn+1\u003e, because they sure as\n\u003e hell aren\u0027t going to be on _any_ fastpaths.\n\u003e\n\u003e So the simplest solution really sounds like just teaching lockdep about\n\u003e that one special case. It\u0027s not \"nesting\" exactly, although it\u0027s obviously\n\u003e related to it.\n\nDo as Linus suggested. The lock protection lock is called nest_lock.\n\nNote that we still have the MAX_LOCK_DEPTH (48) limit to consider, so anything\nthat spills that it still up shit creek.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\n"
    },
    {
      "commit": "4f3e7524b2e703d9f8b02ac338153a53dd7ede66",
      "tree": "0033ade94f230d6044ad318e3791c55ad611069e",
      "parents": [
        "f82b217e3513fe3af342c0f3ee1494e86250c21c"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "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: map_acquire\n\nMost the free-standing lock_acquire() usages look remarkably similar, sweep\nthem into a new helper.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\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": "64aa348edc617dea17bbd01ddee4e47886d5ec8c",
      "tree": "002b5fa796aff225d0cb9d0c32bb3ba96da6eaaf",
      "parents": [
        "5e710e37bde120bb069f691bee68e69ef4393173"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Mon Aug 11 09:30:21 2008 +0200"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Aug 11 09:30:21 2008 +0200"
      },
      "message": "lockdep: lock_set_subclass - reset a held lock\u0027s subclass\n\nthis can be used to reset a held lock\u0027s subclass, for arbitrary-depth\niterated data structures such as trees or lists which have per-node\nlocks.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\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": "a033c332e047397904ed74816946b2edd9b0d5cd",
      "tree": "fbc516c0e88da90bb4398c3c056fdc12988dbd04",
      "parents": [
        "cd1a28e8457e6ebf72c48d84d4e736307e86436e"
      ],
      "author": {
        "name": "Li Zefan",
        "email": "lizf@cn.fujitsu.com",
        "time": "Mon Jun 23 10:52:42 2008 +0800"
      },
      "committer": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Tue Jun 24 13:43:07 2008 +0200"
      },
      "message": "lockdep: remove duplicate definition of STATIC_LOCKDEP_MAP_INIT\n\nSTATIC_LOCKDEP_MAP_INIT is defined twice in lockdep.h. I guess\nit\u0027s a copy \u0026 paste.\n\nSigned-off-by: Li Zefan \u003clizf@cn.fujitsu.com\u003e\nCc: Peter Zijlstra \u003cpeterz@infradead.org\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": "4e6045f134784f4b158b3c0f7a282b04bd816887",
      "tree": "3304628f666c8524accd10f40da48cfba8b08608",
      "parents": [
        "cf7b708c8d1d7a27736771bcf4c457b332b0f818"
      ],
      "author": {
        "name": "Johannes Berg",
        "email": "johannes@sipsolutions.net",
        "time": "Thu Oct 18 23:39:55 2007 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Fri Oct 19 11:53:38 2007 -0700"
      },
      "message": "workqueue: debug flushing deadlocks with lockdep\n\nIn the following scenario:\n\ncode path 1:\n  my_function() -\u003e lock(L1); ...; flush_workqueue(); ...\n\ncode path 2:\n  run_workqueue() -\u003e my_work() -\u003e ...; lock(L1); ...\n\nyou can get a deadlock when my_work() is queued or running\nbut my_function() has acquired L1 already.\n\nThis patch adds a pseudo-lock to each workqueue to make lockdep\nwarn about this scenario.\n\n[akpm@linux-foundation.org: coding-style fixes]\nSigned-off-by: Johannes Berg \u003cjohannes@sipsolutions.net\u003e\nAcked-by: Oleg Nesterov \u003coleg@tv-sign.ru\u003e\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "851a67b825540a8e00c0be3ee25e4627ba8b133b",
      "tree": "07afd72ad74a392cb30cefcd01acdfd9b01282d3",
      "parents": [
        "34a3d1e83708702ac6cb872215e68cd07dae298b"
      ],
      "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: annotate rcu_read_{,un}lock{,_bh}\n\nlockdep annotate rcu_read_{,un}lock{,_bh} in order to catch imbalanced\nusage.\n\nSigned-off-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Paul E. McKenney \u003cpaulmck@linux.vnet.ibm.com\u003e\n"
    },
    {
      "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": "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": "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": "e3a55fd18deab758a2970e0dfcd60a677a920426",
      "tree": "87a0b7e3ae565c10077b1444fda0a462e2e88a1e",
      "parents": [
        "058560fbd70190ea6b50b5df4d814bc30911d06b"
      ],
      "author": {
        "name": "Jarek Poplawski",
        "email": "jarkao2@o2.pl",
        "time": "Thu Mar 22 00:11:26 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Thu Mar 22 19:39:06 2007 -0700"
      },
      "message": "[PATCH] lockdep: lockdep_depth vs. debug_locks\n\nlockdep found a bug during a run of workqueue function - this could be also\ncaused by a bug from other code running simultaneously.\n\nlockdep really shouldn\u0027t be used when debug_locks \u003d\u003d 0!\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\nCc: Ingo Molnar \u003cmingo@elte.hu\u003e\nAcked-by: Peter Zijlstra \u003ca.p.zijlstra@chello.nl\u003e\nSigned-off-by: Andrew Morton \u003cakpm@linux-foundation.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n"
    },
    {
      "commit": "a1e96b0310d70b72012b5ecde5e97b8262785aae",
      "tree": "45c507f1f55b991d2c6696c7585e0935adf0ef06",
      "parents": [
        "473e66fd24a230e03f6f164913bedb81c0ba052a"
      ],
      "author": {
        "name": "Heiko Carstens",
        "email": "heiko.carstens@de.ibm.com",
        "time": "Mon Feb 12 00:52:20 2007 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.linux-foundation.org",
        "time": "Mon Feb 12 09:48:29 2007 -0800"
      },
      "message": "[PATCH] lockdep: forward declare struct task_struct\n\n3117df0453828bd045c16244e6f50e5714667a8a causes this:\n\nIn file included from arch/s390/kernel/early.c:13:\ninclude/linux/lockdep.h:300: warning:\n\t\t\"struct task_struct\" declared inside parameter list\ninclude/linux/lockdep.h:300:\n\t\twarning: its scope is only this definition or\n\t\tdeclaration, which is probably not what you want\n\nAcked-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nCc: Martin Schwidefsky \u003cschwidefsky@de.ibm.com\u003e\nSigned-off-by: Heiko Carstens \u003cheiko.carstens@de.ibm.com\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": "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": "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": "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": "d5abe669172f20a4129a711de0f250a4e07db298",
      "tree": "8a1ae8ab51525bfa9e29707f27cc656e2275b247",
      "parents": [
        "6fb50ea79cb869667adaa71ed32cc15dd73986de"
      ],
      "author": {
        "name": "Peter Zijlstra",
        "email": "a.p.zijlstra@chello.nl",
        "time": "Wed Dec 06 20:37:26 2006 -0800"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@woody.osdl.org",
        "time": "Thu Dec 07 08:39:36 2006 -0800"
      },
      "message": "[PATCH] debug: workqueue locking sanity\n\nWorkqueue functions should not leak locks, assert so, printing the\nlast function ran.\n\nUse macros in lockdep.h to avoid include dependency pains.\n\n[akpm@osdl.org: build fix]\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@osdl.org\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n"
    },
    {
      "commit": "07646e217f473a3e6213f8228336a9046833d6aa",
      "tree": "78169bacc7604be9db6e63aeee92afe370c053cb",
      "parents": [
        "88aa0103e408616e433c209e80169ab8d6eda99e"
      ],
      "author": {
        "name": "Andrew Morton",
        "email": "akpm@osdl.org",
        "time": "Wed Oct 11 23:45:23 2006 -0400"
      },
      "committer": {
        "name": "Dmitry Torokhov",
        "email": "dtor@insightbb.com",
        "time": "Wed Oct 11 23:45:23 2006 -0400"
      },
      "message": "Lockdep: fix compile error in drivers/input/serio/serio.c\n\nlockdep_set_subclass() was missing in !LOCKDEP case\n\nSigned-off-by: Andrew Morton \u003cakpm@osdl.org\u003e\nSigned-off-by: Dmitry Torokhov \u003cdtor@mail.ru\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": "db0b0ead60815155c791e8f479ee4777e7946369",
      "tree": "013317fde85b57af3e9240858c952858a63d1773",
      "parents": [
        "ddc0a51d2e351985aa542ff650635e2fd62d3f8b"
      ],
      "author": {
        "name": "Michael S. Tsirkin",
        "email": "mst@mellanox.co.il",
        "time": "Fri Sep 29 01:59:28 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Fri Sep 29 09:18:08 2006 -0700"
      },
      "message": "[PATCH] lockdep: don\u0027t pull in includes when lockdep disabled\n\nDo not pull in various includes through lockdep.h if lockdep is disabled.\n\nSigned-off-by: Michael S. Tsirkin \u003cmst@mellanox.co.il\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": "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": "243c7621aac4ed1aa79524c9a1cecf7c05a28124",
      "tree": "d8f7a1fce57c9349183bfd9ab6738a763078db85",
      "parents": [
        "8b8f319fc7f4ab59f567d6a401a62659b3d37007"
      ],
      "author": {
        "name": "Ingo Molnar",
        "email": "mingo@elte.hu",
        "time": "Mon Jul 03 00:25:06 2006 -0700"
      },
      "committer": {
        "name": "Linus Torvalds",
        "email": "torvalds@g5.osdl.org",
        "time": "Mon Jul 03 15:27:06 2006 -0700"
      },
      "message": "[PATCH] lockdep: annotate genirq\n\nTeach special (recursive) locking code to the lock validator.  Has no effect\non non-lockdep kernels.\n\nSigned-off-by: Ingo Molnar \u003cmingo@elte.hu\u003e\nSigned-off-by: 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": "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"
    }
  ]
}
