<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/kernel/lockdep.c, branch v2.6.27-rc4</title>
<subtitle>Clone of https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git</subtitle>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/'/>
<entry>
<title>lockdep: fix spurious 'inconsistent lock state' warning</title>
<updated>2008-08-18T07:42:31+00:00</updated>
<author>
<name>Dmitry Baryshkov</name>
<email>dbaryshkov@gmail.com</email>
</author>
<published>2008-08-18T00:26:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=6951b12a0fe7fc64789f2c4d62d2a304e93836a8'/>
<id>6951b12a0fe7fc64789f2c4d62d2a304e93836a8</id>
<content type='text'>
Since f82b217e3513fe3af342c0f3ee1494e86250c21c lockdep can output spurious
warnings related to hwirqs due to hardirq_off shrinkage from int to bit-sized
flag. Guard it with double negation to fix the warning.

Signed-off-by: Dmitry Baryshkov &lt;dbaryshkov@gmail.com&gt;
Acked-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Since f82b217e3513fe3af342c0f3ee1494e86250c21c lockdep can output spurious
warnings related to hwirqs due to hardirq_off shrinkage from int to bit-sized
flag. Guard it with double negation to fix the warning.

Signed-off-by: Dmitry Baryshkov &lt;dbaryshkov@gmail.com&gt;
Acked-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lockdep: use WARN() in kernel/lockdep.c</title>
<updated>2008-08-13T17:06:46+00:00</updated>
<author>
<name>Arjan van de Ven</name>
<email>arjan@linux.intel.com</email>
</author>
<published>2008-07-30T19:43:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=2df8b1d656021e180ab93c8a4b2c9c2923d30b82'/>
<id>2df8b1d656021e180ab93c8a4b2c9c2923d30b82</id>
<content type='text'>
Use WARN() instead of a printk+WARN_ON() pair; this way the message
becomes part of the warning section for better reporting/collection.

Signed-off-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Use WARN() instead of a printk+WARN_ON() pair; this way the message
becomes part of the warning section for better reporting/collection.

Signed-off-by: Arjan van de Ven &lt;arjan@linux.intel.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Andrew Morton &lt;akpm@linux-foundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lockdep: fix debug_lock_alloc</title>
<updated>2008-08-11T20:45:51+00:00</updated>
<author>
<name>Peter Zijlstra</name>
<email>a.p.zijlstra@chello.nl</email>
</author>
<published>2008-08-11T20:45:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=0f2bc27be27ca1dcc66b96131e44bf7648b959c6'/>
<id>0f2bc27be27ca1dcc66b96131e44bf7648b959c6</id>
<content type='text'>
When we enable DEBUG_LOCK_ALLOC but do not enable PROVE_LOCKING and or
LOCK_STAT, lock_alloc() and lock_release() turn into nops, even though
we should be doing hlock checking (check=1).

This causes a false warning and a lockdep self-disable.

Rectify this.

Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When we enable DEBUG_LOCK_ALLOC but do not enable PROVE_LOCKING and or
LOCK_STAT, lock_alloc() and lock_release() turn into nops, even though
we should be doing hlock checking (check=1).

This causes a false warning and a lockdep self-disable.

Rectify this.

Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lockdep: handle chains involving classes defined in modules</title>
<updated>2008-08-11T07:30:26+00:00</updated>
<author>
<name>Rabin Vincent</name>
<email>rabin@rab.in</email>
</author>
<published>2008-08-11T07:30:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=8bfe0298f7a04952d19f4a2cf510d7a6311eeed0'/>
<id>8bfe0298f7a04952d19f4a2cf510d7a6311eeed0</id>
<content type='text'>
Solve this by marking the classes as unused and not printing information
about the unused classes.

Reported-by: Eric Sesterhenn &lt;snakebyte@gmx.de&gt;
Signed-off-by: Rabin Vincent &lt;rabin@rab.in&gt;
Acked-by: Huang Ying &lt;ying.huang@intel.com&gt;
Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Solve this by marking the classes as unused and not printing information
about the unused classes.

Reported-by: Eric Sesterhenn &lt;snakebyte@gmx.de&gt;
Signed-off-by: Rabin Vincent &lt;rabin@rab.in&gt;
Acked-by: Huang Ying &lt;ying.huang@intel.com&gt;
Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lockdep: lock protection locks</title>
<updated>2008-08-11T07:30:24+00:00</updated>
<author>
<name>Peter Zijlstra</name>
<email>a.p.zijlstra@chello.nl</email>
</author>
<published>2008-08-11T07:30:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=7531e2f34d1d551b096143f19111139f0dd84c8b'/>
<id>7531e2f34d1d551b096143f19111139f0dd84c8b</id>
<content type='text'>
On Fri, 2008-08-01 at 16:26 -0700, Linus Torvalds wrote:

&gt; On Fri, 1 Aug 2008, David Miller wrote:
&gt; &gt;
&gt; &gt; Taking more than a few locks of the same class at once is bad
&gt; &gt; news and it's better to find an alternative method.
&gt;
&gt; It's not always wrong.
&gt;
&gt; If you can guarantee that anybody that takes more than one lock of a
&gt; particular class will always take a single top-level lock _first_, then
&gt; that's all good. You can obviously screw up and take the same lock _twice_
&gt; (which will deadlock), but at least you cannot get into ABBA situations.
&gt;
&gt; So maybe the right thing to do is to just teach lockdep about "lock
&gt; protection locks". That would have solved the multi-queue issues for
&gt; networking too - all the actual network drivers would still have taken
&gt; just their single queue lock, but the one case that needs to take all of
&gt; them would have taken a separate top-level lock first.
&gt;
&gt; Never mind that the multi-queue locks were always taken in the same order:
&gt; it's never wrong to just have some top-level serialization, and anybody
&gt; who needs to take &lt;n&gt; locks might as well do &lt;n+1&gt;, because they sure as
&gt; hell aren't going to be on _any_ fastpaths.
&gt;
&gt; So the simplest solution really sounds like just teaching lockdep about
&gt; that one special case. It's not "nesting" exactly, although it's obviously
&gt; related to it.

Do as Linus suggested. The lock protection lock is called nest_lock.

Note that we still have the MAX_LOCK_DEPTH (48) limit to consider, so anything
that spills that it still up shit creek.

Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
On Fri, 2008-08-01 at 16:26 -0700, Linus Torvalds wrote:

&gt; On Fri, 1 Aug 2008, David Miller wrote:
&gt; &gt;
&gt; &gt; Taking more than a few locks of the same class at once is bad
&gt; &gt; news and it's better to find an alternative method.
&gt;
&gt; It's not always wrong.
&gt;
&gt; If you can guarantee that anybody that takes more than one lock of a
&gt; particular class will always take a single top-level lock _first_, then
&gt; that's all good. You can obviously screw up and take the same lock _twice_
&gt; (which will deadlock), but at least you cannot get into ABBA situations.
&gt;
&gt; So maybe the right thing to do is to just teach lockdep about "lock
&gt; protection locks". That would have solved the multi-queue issues for
&gt; networking too - all the actual network drivers would still have taken
&gt; just their single queue lock, but the one case that needs to take all of
&gt; them would have taken a separate top-level lock first.
&gt;
&gt; Never mind that the multi-queue locks were always taken in the same order:
&gt; it's never wrong to just have some top-level serialization, and anybody
&gt; who needs to take &lt;n&gt; locks might as well do &lt;n+1&gt;, because they sure as
&gt; hell aren't going to be on _any_ fastpaths.
&gt;
&gt; So the simplest solution really sounds like just teaching lockdep about
&gt; that one special case. It's not "nesting" exactly, although it's obviously
&gt; related to it.

Do as Linus suggested. The lock protection lock is called nest_lock.

Note that we still have the MAX_LOCK_DEPTH (48) limit to consider, so anything
that spills that it still up shit creek.

Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lockdep: shrink held_lock structure</title>
<updated>2008-08-11T07:30:23+00:00</updated>
<author>
<name>Dave Jones</name>
<email>davej@redhat.com</email>
</author>
<published>2008-08-11T07:30:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=f82b217e3513fe3af342c0f3ee1494e86250c21c'/>
<id>f82b217e3513fe3af342c0f3ee1494e86250c21c</id>
<content type='text'>
struct held_lock {
        u64                        prev_chain_key;       /*     0     8 */
        struct lock_class *        class;                /*     8     8 */
        long unsigned int          acquire_ip;           /*    16     8 */
        struct lockdep_map *       instance;             /*    24     8 */
        int                        irq_context;          /*    32     4 */
        int                        trylock;              /*    36     4 */
        int                        read;                 /*    40     4 */
        int                        check;                /*    44     4 */
        int                        hardirqs_off;         /*    48     4 */

        /* size: 56, cachelines: 1 */
        /* padding: 4 */
        /* last cacheline: 56 bytes */
};

struct held_lock {
        u64                        prev_chain_key;       /*     0     8 */
        long unsigned int          acquire_ip;           /*     8     8 */
        struct lockdep_map *       instance;             /*    16     8 */
        unsigned int               class_idx:11;         /*    24:21  4 */
        unsigned int               irq_context:2;        /*    24:19  4 */
        unsigned int               trylock:1;            /*    24:18  4 */
        unsigned int               read:2;               /*    24:16  4 */
        unsigned int               check:2;              /*    24:14  4 */
        unsigned int               hardirqs_off:1;       /*    24:13  4 */

        /* size: 32, cachelines: 1 */
        /* padding: 4 */
        /* bit_padding: 13 bits */
        /* last cacheline: 32 bytes */
};

[mingo@elte.hu: shrunk hlock-&gt;class too]
[peterz@infradead.org: fixup bit sizes]
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
struct held_lock {
        u64                        prev_chain_key;       /*     0     8 */
        struct lock_class *        class;                /*     8     8 */
        long unsigned int          acquire_ip;           /*    16     8 */
        struct lockdep_map *       instance;             /*    24     8 */
        int                        irq_context;          /*    32     4 */
        int                        trylock;              /*    36     4 */
        int                        read;                 /*    40     4 */
        int                        check;                /*    44     4 */
        int                        hardirqs_off;         /*    48     4 */

        /* size: 56, cachelines: 1 */
        /* padding: 4 */
        /* last cacheline: 56 bytes */
};

struct held_lock {
        u64                        prev_chain_key;       /*     0     8 */
        long unsigned int          acquire_ip;           /*     8     8 */
        struct lockdep_map *       instance;             /*    16     8 */
        unsigned int               class_idx:11;         /*    24:21  4 */
        unsigned int               irq_context:2;        /*    24:19  4 */
        unsigned int               trylock:1;            /*    24:18  4 */
        unsigned int               read:2;               /*    24:16  4 */
        unsigned int               check:2;              /*    24:14  4 */
        unsigned int               hardirqs_off:1;       /*    24:13  4 */

        /* size: 32, cachelines: 1 */
        /* padding: 4 */
        /* bit_padding: 13 bits */
        /* last cacheline: 32 bytes */
};

[mingo@elte.hu: shrunk hlock-&gt;class too]
[peterz@infradead.org: fixup bit sizes]
Signed-off-by: Dave Jones &lt;davej@redhat.com&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lockdep: lock_set_subclass - reset a held lock's subclass</title>
<updated>2008-08-11T07:30:21+00:00</updated>
<author>
<name>Peter Zijlstra</name>
<email>a.p.zijlstra@chello.nl</email>
</author>
<published>2008-08-11T07:30:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=64aa348edc617dea17bbd01ddee4e47886d5ec8c'/>
<id>64aa348edc617dea17bbd01ddee4e47886d5ec8c</id>
<content type='text'>
this can be used to reset a held lock's subclass, for arbitrary-depth
iterated data structures such as trees or lists which have per-node
locks.

Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
this can be used to reset a held lock's subclass, for arbitrary-depth
iterated data structures such as trees or lists which have per-node
locks.

Signed-off-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>lockdep: fix combinatorial explosion in lock subgraph traversal</title>
<updated>2008-07-31T16:38:28+00:00</updated>
<author>
<name>David Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2008-07-30T04:45:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=419ca3f13532793b81aff09f80c60af3eacbb43d'/>
<id>419ca3f13532793b81aff09f80c60af3eacbb43d</id>
<content type='text'>
When we traverse the graph, either forwards or backwards, we
are interested in whether a certain property exists somewhere
in a node reachable in the graph.

Therefore it is never necessary to traverse through a node more
than once to get a correct answer to the given query.

Take advantage of this property using a global ID counter so that we
need not clear all the markers in all the lock_class entries before
doing a traversal.  A new ID is choosen when we start to traverse, and
we continue through a lock_class only if it's ID hasn't been marked
with the new value yet.

This short-circuiting is essential especially for high CPU count
systems.  The scheduler has a runqueue per cpu, and needs to take
two runqueue locks at a time, which leads to long chains of
backwards and forwards subgraphs from these runqueue lock nodes.
Without the short-circuit implemented here, a graph traversal on
a runqueue lock can take up to (1 &lt;&lt; (N - 1)) checks on a system
with N cpus.

For anything more than 16 cpus or so, lockdep will eventually bring
the machine to a complete standstill.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Acked-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
When we traverse the graph, either forwards or backwards, we
are interested in whether a certain property exists somewhere
in a node reachable in the graph.

Therefore it is never necessary to traverse through a node more
than once to get a correct answer to the given query.

Take advantage of this property using a global ID counter so that we
need not clear all the markers in all the lock_class entries before
doing a traversal.  A new ID is choosen when we start to traverse, and
we continue through a lock_class only if it's ID hasn't been marked
with the new value yet.

This short-circuiting is essential especially for high CPU count
systems.  The scheduler has a runqueue per cpu, and needs to take
two runqueue locks at a time, which leads to long chains of
backwards and forwards subgraphs from these runqueue lock nodes.
Without the short-circuit implemented here, a graph traversal on
a runqueue lock can take up to (1 &lt;&lt; (N - 1)) checks on a system
with N cpus.

For anything more than 16 cpus or so, lockdep will eventually bring
the machine to a complete standstill.

Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
Acked-by: Peter Zijlstra &lt;a.p.zijlstra@chello.nl&gt;
Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'core/locking' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip</title>
<updated>2008-07-14T21:55:13+00:00</updated>
<author>
<name>Linus Torvalds</name>
<email>torvalds@linux-foundation.org</email>
</author>
<published>2008-07-14T21:55:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=40e7babbb52b4b57721b9175aed7a14d93bf242f'/>
<id>40e7babbb52b4b57721b9175aed7a14d93bf242f</id>
<content type='text'>
* 'core/locking' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  lockdep: fix kernel/fork.c warning
  lockdep: fix ftrace irq tracing false positive
  lockdep: remove duplicate definition of STATIC_LOCKDEP_MAP_INIT
  lockdep: add lock_class information to lock_chain and output it
  lockdep: add lock_class information to lock_chain and output it
  lockdep: output lock_class key instead of address for forward dependency output
  __mutex_lock_common: use signal_pending_state()
  mutex-debug: check mutex magic before owner

Fixed up conflict in kernel/fork.c manually
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 'core/locking' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  lockdep: fix kernel/fork.c warning
  lockdep: fix ftrace irq tracing false positive
  lockdep: remove duplicate definition of STATIC_LOCKDEP_MAP_INIT
  lockdep: add lock_class information to lock_chain and output it
  lockdep: add lock_class information to lock_chain and output it
  lockdep: output lock_class key instead of address for forward dependency output
  __mutex_lock_common: use signal_pending_state()
  mutex-debug: check mutex magic before owner

Fixed up conflict in kernel/fork.c manually
</pre>
</div>
</content>
</entry>
<entry>
<title>lockdep: fix ftrace irq tracing false positive</title>
<updated>2008-07-14T08:32:14+00:00</updated>
<author>
<name>Ingo Molnar</name>
<email>mingo@elte.hu</email>
</author>
<published>2008-07-14T08:28:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.exis.tech/linux.git/commit/?id=992860e991f2015fb8c8df65aa32afa0dcbb4430'/>
<id>992860e991f2015fb8c8df65aa32afa0dcbb4430</id>
<content type='text'>
fix this false positive:

[    0.020000] ------------[ cut here ]------------
[    0.020000] WARNING: at kernel/lockdep.c:2718 check_flags+0x14a/0x170()
[    0.020000] Modules linked in:
[    0.020000] Pid: 0, comm: swapper Not tainted 2.6.26-tip-00343-gd7e5521-dirty #14486
[    0.020000]  [&lt;c01312e4&gt;] warn_on_slowpath+0x54/0x80
[    0.020000]  [&lt;c067e451&gt;] ? _spin_unlock_irqrestore+0x61/0x70
[    0.020000]  [&lt;c0131bb1&gt;] ? release_console_sem+0x201/0x210
[    0.020000]  [&lt;c0143d65&gt;] ? __kernel_text_address+0x35/0x40
[    0.020000]  [&lt;c010562e&gt;] ? dump_trace+0x5e/0x140
[    0.020000]  [&lt;c01518b5&gt;] ? __lock_acquire+0x245/0x820
[    0.020000]  [&lt;c015063a&gt;] check_flags+0x14a/0x170
[    0.020000]  [&lt;c0151ed8&gt;] ? lock_acquire+0x48/0xc0
[    0.020000]  [&lt;c0151ee1&gt;] lock_acquire+0x51/0xc0
[    0.020000]  [&lt;c014a16c&gt;] ? down+0x2c/0x40
[    0.020000]  [&lt;c010a609&gt;] ? sched_clock+0x9/0x10
[    0.020000]  [&lt;c067e7b2&gt;] _write_lock+0x32/0x60
[    0.020000]  [&lt;c013797f&gt;] ? request_resource+0x1f/0xb0
[    0.020000]  [&lt;c013797f&gt;] request_resource+0x1f/0xb0
[    0.020000]  [&lt;c02f89ad&gt;] vgacon_startup+0x2bd/0x3e0
[    0.020000]  [&lt;c094d62a&gt;] con_init+0x19/0x22f
[    0.020000]  [&lt;c0330c7c&gt;] ? tty_register_ldisc+0x5c/0x70
[    0.020000]  [&lt;c094cf49&gt;] console_init+0x20/0x2e
[    0.020000]  [&lt;c092a969&gt;] start_kernel+0x20c/0x379
[    0.020000]  [&lt;c092a516&gt;] ? unknown_bootoption+0x0/0x1f6
[    0.020000]  [&lt;c092a099&gt;] __init_begin+0x99/0xa1
[    0.020000]  =======================
[    0.020000] ---[ end trace 4eaa2a86a8e2da22 ]---
[    0.020000] possible reason: unannotated irqs-on.
[    0.020000] irq event stamp: 0

which occurs if CONFIG_TRACE_IRQFLAGS=y, CONFIG_DEBUG_LOCKDEP=y,
but CONFIG_PROVE_LOCKING is disabled.

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
fix this false positive:

[    0.020000] ------------[ cut here ]------------
[    0.020000] WARNING: at kernel/lockdep.c:2718 check_flags+0x14a/0x170()
[    0.020000] Modules linked in:
[    0.020000] Pid: 0, comm: swapper Not tainted 2.6.26-tip-00343-gd7e5521-dirty #14486
[    0.020000]  [&lt;c01312e4&gt;] warn_on_slowpath+0x54/0x80
[    0.020000]  [&lt;c067e451&gt;] ? _spin_unlock_irqrestore+0x61/0x70
[    0.020000]  [&lt;c0131bb1&gt;] ? release_console_sem+0x201/0x210
[    0.020000]  [&lt;c0143d65&gt;] ? __kernel_text_address+0x35/0x40
[    0.020000]  [&lt;c010562e&gt;] ? dump_trace+0x5e/0x140
[    0.020000]  [&lt;c01518b5&gt;] ? __lock_acquire+0x245/0x820
[    0.020000]  [&lt;c015063a&gt;] check_flags+0x14a/0x170
[    0.020000]  [&lt;c0151ed8&gt;] ? lock_acquire+0x48/0xc0
[    0.020000]  [&lt;c0151ee1&gt;] lock_acquire+0x51/0xc0
[    0.020000]  [&lt;c014a16c&gt;] ? down+0x2c/0x40
[    0.020000]  [&lt;c010a609&gt;] ? sched_clock+0x9/0x10
[    0.020000]  [&lt;c067e7b2&gt;] _write_lock+0x32/0x60
[    0.020000]  [&lt;c013797f&gt;] ? request_resource+0x1f/0xb0
[    0.020000]  [&lt;c013797f&gt;] request_resource+0x1f/0xb0
[    0.020000]  [&lt;c02f89ad&gt;] vgacon_startup+0x2bd/0x3e0
[    0.020000]  [&lt;c094d62a&gt;] con_init+0x19/0x22f
[    0.020000]  [&lt;c0330c7c&gt;] ? tty_register_ldisc+0x5c/0x70
[    0.020000]  [&lt;c094cf49&gt;] console_init+0x20/0x2e
[    0.020000]  [&lt;c092a969&gt;] start_kernel+0x20c/0x379
[    0.020000]  [&lt;c092a516&gt;] ? unknown_bootoption+0x0/0x1f6
[    0.020000]  [&lt;c092a099&gt;] __init_begin+0x99/0xa1
[    0.020000]  =======================
[    0.020000] ---[ end trace 4eaa2a86a8e2da22 ]---
[    0.020000] possible reason: unannotated irqs-on.
[    0.020000] irq event stamp: 0

which occurs if CONFIG_TRACE_IRQFLAGS=y, CONFIG_DEBUG_LOCKDEP=y,
but CONFIG_PROVE_LOCKING is disabled.

Signed-off-by: Ingo Molnar &lt;mingo@elte.hu&gt;
</pre>
</div>
</content>
</entry>
</feed>
