<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/net/meth.c, branch master</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>ioc3-eth/meth: Move the SGI drivers</title>
<updated>2011-08-12T07:21:33+00:00</updated>
<author>
<name>Jeff Kirsher</name>
<email>jeffrey.t.kirsher@intel.com</email>
</author>
<published>2011-05-20T14:50:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=8862bf1ed60de49550109b7023a0a33eb7db8b3c'/>
<id>8862bf1ed60de49550109b7023a0a33eb7db8b3c</id>
<content type='text'>
Move the SGI drivers into drivers/net/ethernet/sgi/ and make the
necessary Kconfig and Makefile changes.

CC: Ralf Baechle &lt;ralf@linux-mips.org&gt;
Signed-off-by: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Move the SGI drivers into drivers/net/ethernet/sgi/ and make the
necessary Kconfig and Makefile changes.

CC: Ralf Baechle &lt;ralf@linux-mips.org&gt;
Signed-off-by: Jeff Kirsher &lt;jeffrey.t.kirsher@intel.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drivers/net: return operator cleanup</title>
<updated>2010-09-27T01:34:29+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>eric.dumazet@gmail.com</email>
</author>
<published>2010-09-23T05:40:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=807540baae406c84dcb9c1c8ef07a56d2d2ae84a'/>
<id>807540baae406c84dcb9c1c8ef07a56d2d2ae84a</id>
<content type='text'>
Change "return (EXPR);" to "return EXPR;"

return is not a function, parentheses are not required.

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Change "return (EXPR);" to "return EXPR;"

return is not a function, parentheses are not required.

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>drivers/net: Remove unnecessary returns from void function()s</title>
<updated>2010-05-14T07:19:28+00:00</updated>
<author>
<name>Joe Perches</name>
<email>joe@perches.com</email>
</author>
<published>2010-05-14T07:19:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=a4b770972b8f819e408d7cc3ae9637e15bff62f6'/>
<id>a4b770972b8f819e408d7cc3ae9637e15bff62f6</id>
<content type='text'>
This patch removes from drivers/net/ all the unnecessary
return; statements that precede the last closing brace of
void functions.

It does not remove the returns that are immediately
preceded by a label as gcc doesn't like that.

It also does not remove null void functions with return.

Done via:
$ grep -rP --include=*.[ch] -l "return;\n}" net/ | \
  xargs perl -i -e 'local $/ ; while (&lt;&gt;) { s/\n[ \t\n]+return;\n}/\n}/g; print; }'

with some cleanups by hand.

Compile tested x86 allmodconfig only.

Signed-off-by: Joe Perches &lt;joe@perches.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch removes from drivers/net/ all the unnecessary
return; statements that precede the last closing brace of
void functions.

It does not remove the returns that are immediately
preceded by a label as gcc doesn't like that.

It also does not remove null void functions with return.

Done via:
$ grep -rP --include=*.[ch] -l "return;\n}" net/ | \
  xargs perl -i -e 'local $/ ; while (&lt;&gt;) { s/\n[ \t\n]+return;\n}/\n}/g; print; }'

with some cleanups by hand.

Compile tested x86 allmodconfig only.

Signed-off-by: Joe Perches &lt;joe@perches.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: trans_start cleanups</title>
<updated>2010-05-10T12:01:31+00:00</updated>
<author>
<name>Eric Dumazet</name>
<email>eric.dumazet@gmail.com</email>
</author>
<published>2010-05-10T12:01:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=1ae5dc342ac78d7a42965fd1f323815f6f5ef2c1'/>
<id>1ae5dc342ac78d7a42965fd1f323815f6f5ef2c1</id>
<content type='text'>
Now that core network takes care of trans_start updates, dont do it
in drivers themselves, if possible. Drivers can avoid one cache miss
(on dev-&gt;trans_start) in their start_xmit() handler.

Exceptions are NETIF_F_LLTX drivers

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now that core network takes care of trans_start updates, dont do it
in drivers themselves, if possible. Drivers can avoid one cache miss
(on dev-&gt;trans_start) in their start_xmit() handler.

Exceptions are NETIF_F_LLTX drivers

Signed-off-by: Eric Dumazet &lt;eric.dumazet@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>netdev: remove HAVE_ leftovers</title>
<updated>2010-01-28T14:01:35+00:00</updated>
<author>
<name>Alexey Dobriyan</name>
<email>adobriyan@gmail.com</email>
</author>
<published>2010-01-27T10:17:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=257ddbdad13cd3c4f7d03b85af632c508aa8abc9'/>
<id>257ddbdad13cd3c4f7d03b85af632c508aa8abc9</id>
<content type='text'>
Signed-off-by: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Signed-off-by: Alexey Dobriyan &lt;adobriyan@gmail.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>don't use __devexit_p to wrap meth_remove</title>
<updated>2009-10-01T21:34:40+00:00</updated>
<author>
<name>Uwe Kleine-König</name>
<email>u.kleine-koenig@pengutronix.de</email>
</author>
<published>2009-09-30T22:28:17+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=1ebb5a1aa9a1ede80a37684215971c6130ac91c8'/>
<id>1ebb5a1aa9a1ede80a37684215971c6130ac91c8</id>
<content type='text'>
The function meth_remove is defined using __exit, so don't use __devexit_p
but __exit_p to wrap it.

Signed-off-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Cc: David S. Miller &lt;davem@davemloft.net&gt;
Cc: Ralf Baechle &lt;ralf@linux-mips.org&gt;
Cc: Patrick McHardy &lt;kaber@trash.net&gt;
Cc: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The function meth_remove is defined using __exit, so don't use __devexit_p
but __exit_p to wrap it.

Signed-off-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Cc: David S. Miller &lt;davem@davemloft.net&gt;
Cc: Ralf Baechle &lt;ralf@linux-mips.org&gt;
Cc: Patrick McHardy &lt;kaber@trash.net&gt;
Cc: Johannes Berg &lt;johannes@sipsolutions.net&gt;
Cc: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: move meth's probe function to .devinit.text</title>
<updated>2009-07-24T01:01:06+00:00</updated>
<author>
<name>Uwe Kleine-König</name>
<email>u.kleine-koenig@pengutronix.de</email>
</author>
<published>2009-07-21T11:25:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=dd93667711761362b393cfbd5959bb11aa1fa80d'/>
<id>dd93667711761362b393cfbd5959bb11aa1fa80d</id>
<content type='text'>
A pointer to meth_probe is passed to the core via
platform_driver_register and so the function must not disappear when the
.init sections are discarded.  Otherwise (if also having HOTPLUG=y)
unbinding and binding a device to the driver via sysfs will result in an
oops as does a device being registered late.

An alternative to this patch is using platform_driver_probe instead of
platform_driver_register plus removing the pointer to the probe function
from the struct platform_driver.

Signed-off-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Cc: David S. Miller &lt;davem@davemloft.net&gt;
Cc: Thomas Bogendoerfer &lt;tsbogend@alpha.franken.de&gt;
Cc: Christoph Lameter &lt;cl@linux-foundation.org&gt;
Cc: Jeff Garzik &lt;jgarzik@redhat.com&gt;
Acked-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Cc: netdev@vger.kernel.org
Cc: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A pointer to meth_probe is passed to the core via
platform_driver_register and so the function must not disappear when the
.init sections are discarded.  Otherwise (if also having HOTPLUG=y)
unbinding and binding a device to the driver via sysfs will result in an
oops as does a device being registered late.

An alternative to this patch is using platform_driver_probe instead of
platform_driver_register plus removing the pointer to the probe function
from the struct platform_driver.

Signed-off-by: Uwe Kleine-König &lt;u.kleine-koenig@pengutronix.de&gt;
Cc: David S. Miller &lt;davem@davemloft.net&gt;
Cc: Thomas Bogendoerfer &lt;tsbogend@alpha.franken.de&gt;
Cc: Christoph Lameter &lt;cl@linux-foundation.org&gt;
Cc: Jeff Garzik &lt;jgarzik@redhat.com&gt;
Acked-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
Cc: Andrew Morton &lt;akpm@linux-foundation.org&gt;
Cc: netdev@vger.kernel.org
Cc: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>net: use NETDEV_TX_OK instead of 0 in ndo_start_xmit() functions</title>
<updated>2009-07-06T02:16:04+00:00</updated>
<author>
<name>Patrick McHardy</name>
<email>kaber@trash.net</email>
</author>
<published>2009-06-23T06:03:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=6ed106549d17474ca17a16057f4c0ed4eba5a7ca'/>
<id>6ed106549d17474ca17a16057f4c0ed4eba5a7ca</id>
<content type='text'>
This patch is the result of an automatic spatch transformation to convert
all ndo_start_xmit() return values of 0 to NETDEV_TX_OK.

Some occurences are missed by the automatic conversion, those will be
handled in a seperate patch.

Signed-off-by: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This patch is the result of an automatic spatch transformation to convert
all ndo_start_xmit() return values of 0 to NETDEV_TX_OK.

Some occurences are missed by the automatic conversion, those will be
handled in a seperate patch.

Signed-off-by: Patrick McHardy &lt;kaber@trash.net&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6</title>
<updated>2009-05-19T04:08:20+00:00</updated>
<author>
<name>David S. Miller</name>
<email>davem@davemloft.net</email>
</author>
<published>2009-05-19T04:08:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=bb803cfbecb03a0cf8dc7e1864f18dda6631af00'/>
<id>bb803cfbecb03a0cf8dc7e1864f18dda6631af00</id>
<content type='text'>
Conflicts:
	drivers/scsi/fcoe/fcoe.c
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Conflicts:
	drivers/scsi/fcoe/fcoe.c
</pre>
</div>
</content>
</entry>
<entry>
<title>NET: Meth: Fix unsafe mix of irq and non-irq spinlocks.</title>
<updated>2009-05-18T04:11:36+00:00</updated>
<author>
<name>Ralf Baechle</name>
<email>ralf@linux-mips.org</email>
</author>
<published>2009-05-16T01:21:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=a8f492c6ac6072d6c5bce4b2f13dc44612991051'/>
<id>a8f492c6ac6072d6c5bce4b2f13dc44612991051</id>
<content type='text'>
Mixing of normal and irq spinlocks results in the following lockdep messages
on bootup on IP32:

[...]
Sending DHCP requests .
======================================================
[ INFO: SOFTIRQ-safe -&gt; SOFTIRQ-unsafe lock order detected ]
2.6.30-rc5-00164-g41baeef #30
------------------------------------------------------
swapper/1 [HC0[0]:SC0[1]:HE0:SE0] is trying to acquire:
 (&amp;priv-&gt;meth_lock){+.+...}, at: [&lt;ffffffff8026388c&gt;] meth_tx+0x48/0x43c

and this task is already holding:
 (_xmit_ETHER#2){+.-...}, at: [&lt;ffffffff802d3a00&gt;] __qdisc_run+0x118/0x30c
which would create a new lock dependency:
 (_xmit_ETHER#2){+.-...} -&gt; (&amp;priv-&gt;meth_lock){+.+...}

but this new dependency connects a SOFTIRQ-irq-safe lock:
 (_xmit_ETHER#2){+.-...}
... which became SOFTIRQ-irq-safe at:
  [&lt;ffffffff80061458&gt;] __lock_acquire+0x784/0x1a14
  [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
  [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
  [&lt;ffffffff802d2b88&gt;] dev_watchdog+0x70/0x398
  [&lt;ffffffff800433b8&gt;] run_timer_softirq+0x1a8/0x248
  [&lt;ffffffff8003da5c&gt;] __do_softirq+0xec/0x208
  [&lt;ffffffff8003dbd8&gt;] do_softirq+0x60/0xe4
  [&lt;ffffffff8003dda0&gt;] irq_exit+0x54/0x9c
  [&lt;ffffffff80004420&gt;] ret_from_irq+0x0/0x4
  [&lt;ffffffff80004720&gt;] r4k_wait+0x20/0x40
  [&lt;ffffffff80015418&gt;] cpu_idle+0x30/0x60
  [&lt;ffffffff804cd934&gt;] start_kernel+0x3ec/0x404

to a SOFTIRQ-irq-unsafe lock:
 (&amp;priv-&gt;meth_lock){+.+...}
... which became SOFTIRQ-irq-unsafe at:
...  [&lt;ffffffff800614f8&gt;] __lock_acquire+0x824/0x1a14
  [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
  [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
  [&lt;ffffffff80263f20&gt;] meth_reset+0x118/0x2d8
  [&lt;ffffffff8026424c&gt;] meth_open+0x28/0x140
  [&lt;ffffffff802c1ae8&gt;] dev_open+0xe0/0x18c
  [&lt;ffffffff802c1268&gt;] dev_change_flags+0xd8/0x1d4
  [&lt;ffffffff804e7770&gt;] ip_auto_config+0x1d4/0xf28
  [&lt;ffffffff80012e68&gt;] do_one_initcall+0x58/0x170
  [&lt;ffffffff804cd190&gt;] kernel_init+0x98/0x104
  [&lt;ffffffff8001520c&gt;] kernel_thread_helper+0x10/0x18

other info that might help us debug this:

2 locks held by swapper/1:
 #0:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff802c0954&gt;] dev_queue_xmit+0x1e0/0x4b0
 #1:  (_xmit_ETHER#2){+.-...}, at: [&lt;ffffffff802d3a00&gt;] __qdisc_run+0x118/0x30c

the SOFTIRQ-irq-safe lock's dependencies:
-&gt; (_xmit_ETHER#2){+.-...} ops: 0 {
   HARDIRQ-ON-W at:
                        [&lt;ffffffff800614d0&gt;] __lock_acquire+0x7fc/0x1a14
                        [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
                        [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
                        [&lt;ffffffff802d2b88&gt;] dev_watchdog+0x70/0x398
                        [&lt;ffffffff800433b8&gt;] run_timer_softirq+0x1a8/0x248
                        [&lt;ffffffff8003da5c&gt;] __do_softirq+0xec/0x208
                        [&lt;ffffffff8003dbd8&gt;] do_softirq+0x60/0xe4
                        [&lt;ffffffff8003dda0&gt;] irq_exit+0x54/0x9c
                        [&lt;ffffffff80004420&gt;] ret_from_irq+0x0/0x4
                        [&lt;ffffffff80004720&gt;] r4k_wait+0x20/0x40
                        [&lt;ffffffff80015418&gt;] cpu_idle+0x30/0x60
                        [&lt;ffffffff804cd934&gt;] start_kernel+0x3ec/0x404
   IN-SOFTIRQ-W at:
                        [&lt;ffffffff80061458&gt;] __lock_acquire+0x784/0x1a14
                        [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
                        [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
                        [&lt;ffffffff802d2b88&gt;] dev_watchdog+0x70/0x398
                        [&lt;ffffffff800433b8&gt;] run_timer_softirq+0x1a8/0x248
                        [&lt;ffffffff8003da5c&gt;] __do_softirq+0xec/0x208
                        [&lt;ffffffff8003dbd8&gt;] do_softirq+0x60/0xe4
                        [&lt;ffffffff8003dda0&gt;] irq_exit+0x54/0x9c
                        [&lt;ffffffff80004420&gt;] ret_from_irq+0x0/0x4
                        [&lt;ffffffff80004720&gt;] r4k_wait+0x20/0x40
                        [&lt;ffffffff80015418&gt;] cpu_idle+0x30/0x60
                        [&lt;ffffffff804cd934&gt;] start_kernel+0x3ec/0x404
   INITIAL USE at:
                       [&lt;ffffffff80061570&gt;] __lock_acquire+0x89c/0x1a14
                       [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
                       [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
                       [&lt;ffffffff802d2b88&gt;] dev_watchdog+0x70/0x398
                       [&lt;ffffffff800433b8&gt;] run_timer_softirq+0x1a8/0x248
                       [&lt;ffffffff8003da5c&gt;] __do_softirq+0xec/0x208
                       [&lt;ffffffff8003dbd8&gt;] do_softirq+0x60/0xe4
                       [&lt;ffffffff8003dda0&gt;] irq_exit+0x54/0x9c
                       [&lt;ffffffff80004420&gt;] ret_from_irq+0x0/0x4
                       [&lt;ffffffff80004720&gt;] r4k_wait+0x20/0x40
                       [&lt;ffffffff80015418&gt;] cpu_idle+0x30/0x60
                       [&lt;ffffffff804cd934&gt;] start_kernel+0x3ec/0x404
 }
 ... key      at: [&lt;ffffffff80cf93f0&gt;] netdev_xmit_lock_key+0x8/0x1c8

the SOFTIRQ-irq-unsafe lock's dependencies:
-&gt; (&amp;priv-&gt;meth_lock){+.+...} ops: 0 {
   HARDIRQ-ON-W at:
                        [&lt;ffffffff800614d0&gt;] __lock_acquire+0x7fc/0x1a14
                        [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
                        [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
                        [&lt;ffffffff80263f20&gt;] meth_reset+0x118/0x2d8
                        [&lt;ffffffff8026424c&gt;] meth_open+0x28/0x140
                        [&lt;ffffffff802c1ae8&gt;] dev_open+0xe0/0x18c
                        [&lt;ffffffff802c1268&gt;] dev_change_flags+0xd8/0x1d4
                        [&lt;ffffffff804e7770&gt;] ip_auto_config+0x1d4/0xf28
                        [&lt;ffffffff80012e68&gt;] do_one_initcall+0x58/0x170
                        [&lt;ffffffff804cd190&gt;] kernel_init+0x98/0x104
                        [&lt;ffffffff8001520c&gt;] kernel_thread_helper+0x10/0x18
   SOFTIRQ-ON-W at:
                        [&lt;ffffffff800614f8&gt;] __lock_acquire+0x824/0x1a14
                        [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
                        [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
                        [&lt;ffffffff80263f20&gt;] meth_reset+0x118/0x2d8
                        [&lt;ffffffff8026424c&gt;] meth_open+0x28/0x140
                        [&lt;ffffffff802c1ae8&gt;] dev_open+0xe0/0x18c
                        [&lt;ffffffff802c1268&gt;] dev_change_flags+0xd8/0x1d4
                        [&lt;ffffffff804e7770&gt;] ip_auto_config+0x1d4/0xf28
                        [&lt;ffffffff80012e68&gt;] do_one_initcall+0x58/0x170
                        [&lt;ffffffff804cd190&gt;] kernel_init+0x98/0x104
                        [&lt;ffffffff8001520c&gt;] kernel_thread_helper+0x10/0x18
   INITIAL USE at:
                       [&lt;ffffffff80061570&gt;] __lock_acquire+0x89c/0x1a14
                       [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
                       [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
                       [&lt;ffffffff80263f20&gt;] meth_reset+0x118/0x2d8
                       [&lt;ffffffff8026424c&gt;] meth_open+0x28/0x140
                       [&lt;ffffffff802c1ae8&gt;] dev_open+0xe0/0x18c
                       [&lt;ffffffff802c1268&gt;] dev_change_flags+0xd8/0x1d4
                       [&lt;ffffffff804e7770&gt;] ip_auto_config+0x1d4/0xf28
                       [&lt;ffffffff80012e68&gt;] do_one_initcall+0x58/0x170
                       [&lt;ffffffff804cd190&gt;] kernel_init+0x98/0x104
                       [&lt;ffffffff8001520c&gt;] kernel_thread_helper+0x10/0x18
 }
 ... key      at: [&lt;ffffffff80cf6ce8&gt;] __key.32424+0x0/0x8

stack backtrace:
Call Trace:
[&lt;ffffffff8000ed0c&gt;] dump_stack+0x8/0x34
[&lt;ffffffff80060b74&gt;] check_usage+0x470/0x4a0
[&lt;ffffffff80060c34&gt;] check_irq_usage+0x90/0x130
[&lt;ffffffff80061f78&gt;] __lock_acquire+0x12a4/0x1a14
[&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
[&lt;ffffffff80012a0c&gt;] _spin_lock_irqsave+0x60/0x84
[&lt;ffffffff8026388c&gt;] meth_tx+0x48/0x43c
[&lt;ffffffff802d3a38&gt;] __qdisc_run+0x150/0x30c
[&lt;ffffffff802c0aa8&gt;] dev_queue_xmit+0x334/0x4b0
[&lt;ffffffff804e7e6c&gt;] ip_auto_config+0x8d0/0xf28
[&lt;ffffffff80012e68&gt;] do_one_initcall+0x58/0x170
[&lt;ffffffff804cd190&gt;] kernel_init+0x98/0x104
[&lt;ffffffff8001520c&gt;] kernel_thread_helper+0x10/0x18

..... timed out!
IP-Config: Retrying forever (NFS root)...
Sending DHCP requests ., OK
[...]

Fixed by converting all locks to irq locks.

Signed-off-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
Tested-by: Andrew Randrianasulu &lt;randrik_a@yahoo.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Mixing of normal and irq spinlocks results in the following lockdep messages
on bootup on IP32:

[...]
Sending DHCP requests .
======================================================
[ INFO: SOFTIRQ-safe -&gt; SOFTIRQ-unsafe lock order detected ]
2.6.30-rc5-00164-g41baeef #30
------------------------------------------------------
swapper/1 [HC0[0]:SC0[1]:HE0:SE0] is trying to acquire:
 (&amp;priv-&gt;meth_lock){+.+...}, at: [&lt;ffffffff8026388c&gt;] meth_tx+0x48/0x43c

and this task is already holding:
 (_xmit_ETHER#2){+.-...}, at: [&lt;ffffffff802d3a00&gt;] __qdisc_run+0x118/0x30c
which would create a new lock dependency:
 (_xmit_ETHER#2){+.-...} -&gt; (&amp;priv-&gt;meth_lock){+.+...}

but this new dependency connects a SOFTIRQ-irq-safe lock:
 (_xmit_ETHER#2){+.-...}
... which became SOFTIRQ-irq-safe at:
  [&lt;ffffffff80061458&gt;] __lock_acquire+0x784/0x1a14
  [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
  [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
  [&lt;ffffffff802d2b88&gt;] dev_watchdog+0x70/0x398
  [&lt;ffffffff800433b8&gt;] run_timer_softirq+0x1a8/0x248
  [&lt;ffffffff8003da5c&gt;] __do_softirq+0xec/0x208
  [&lt;ffffffff8003dbd8&gt;] do_softirq+0x60/0xe4
  [&lt;ffffffff8003dda0&gt;] irq_exit+0x54/0x9c
  [&lt;ffffffff80004420&gt;] ret_from_irq+0x0/0x4
  [&lt;ffffffff80004720&gt;] r4k_wait+0x20/0x40
  [&lt;ffffffff80015418&gt;] cpu_idle+0x30/0x60
  [&lt;ffffffff804cd934&gt;] start_kernel+0x3ec/0x404

to a SOFTIRQ-irq-unsafe lock:
 (&amp;priv-&gt;meth_lock){+.+...}
... which became SOFTIRQ-irq-unsafe at:
...  [&lt;ffffffff800614f8&gt;] __lock_acquire+0x824/0x1a14
  [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
  [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
  [&lt;ffffffff80263f20&gt;] meth_reset+0x118/0x2d8
  [&lt;ffffffff8026424c&gt;] meth_open+0x28/0x140
  [&lt;ffffffff802c1ae8&gt;] dev_open+0xe0/0x18c
  [&lt;ffffffff802c1268&gt;] dev_change_flags+0xd8/0x1d4
  [&lt;ffffffff804e7770&gt;] ip_auto_config+0x1d4/0xf28
  [&lt;ffffffff80012e68&gt;] do_one_initcall+0x58/0x170
  [&lt;ffffffff804cd190&gt;] kernel_init+0x98/0x104
  [&lt;ffffffff8001520c&gt;] kernel_thread_helper+0x10/0x18

other info that might help us debug this:

2 locks held by swapper/1:
 #0:  (rcu_read_lock){.+.+..}, at: [&lt;ffffffff802c0954&gt;] dev_queue_xmit+0x1e0/0x4b0
 #1:  (_xmit_ETHER#2){+.-...}, at: [&lt;ffffffff802d3a00&gt;] __qdisc_run+0x118/0x30c

the SOFTIRQ-irq-safe lock's dependencies:
-&gt; (_xmit_ETHER#2){+.-...} ops: 0 {
   HARDIRQ-ON-W at:
                        [&lt;ffffffff800614d0&gt;] __lock_acquire+0x7fc/0x1a14
                        [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
                        [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
                        [&lt;ffffffff802d2b88&gt;] dev_watchdog+0x70/0x398
                        [&lt;ffffffff800433b8&gt;] run_timer_softirq+0x1a8/0x248
                        [&lt;ffffffff8003da5c&gt;] __do_softirq+0xec/0x208
                        [&lt;ffffffff8003dbd8&gt;] do_softirq+0x60/0xe4
                        [&lt;ffffffff8003dda0&gt;] irq_exit+0x54/0x9c
                        [&lt;ffffffff80004420&gt;] ret_from_irq+0x0/0x4
                        [&lt;ffffffff80004720&gt;] r4k_wait+0x20/0x40
                        [&lt;ffffffff80015418&gt;] cpu_idle+0x30/0x60
                        [&lt;ffffffff804cd934&gt;] start_kernel+0x3ec/0x404
   IN-SOFTIRQ-W at:
                        [&lt;ffffffff80061458&gt;] __lock_acquire+0x784/0x1a14
                        [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
                        [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
                        [&lt;ffffffff802d2b88&gt;] dev_watchdog+0x70/0x398
                        [&lt;ffffffff800433b8&gt;] run_timer_softirq+0x1a8/0x248
                        [&lt;ffffffff8003da5c&gt;] __do_softirq+0xec/0x208
                        [&lt;ffffffff8003dbd8&gt;] do_softirq+0x60/0xe4
                        [&lt;ffffffff8003dda0&gt;] irq_exit+0x54/0x9c
                        [&lt;ffffffff80004420&gt;] ret_from_irq+0x0/0x4
                        [&lt;ffffffff80004720&gt;] r4k_wait+0x20/0x40
                        [&lt;ffffffff80015418&gt;] cpu_idle+0x30/0x60
                        [&lt;ffffffff804cd934&gt;] start_kernel+0x3ec/0x404
   INITIAL USE at:
                       [&lt;ffffffff80061570&gt;] __lock_acquire+0x89c/0x1a14
                       [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
                       [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
                       [&lt;ffffffff802d2b88&gt;] dev_watchdog+0x70/0x398
                       [&lt;ffffffff800433b8&gt;] run_timer_softirq+0x1a8/0x248
                       [&lt;ffffffff8003da5c&gt;] __do_softirq+0xec/0x208
                       [&lt;ffffffff8003dbd8&gt;] do_softirq+0x60/0xe4
                       [&lt;ffffffff8003dda0&gt;] irq_exit+0x54/0x9c
                       [&lt;ffffffff80004420&gt;] ret_from_irq+0x0/0x4
                       [&lt;ffffffff80004720&gt;] r4k_wait+0x20/0x40
                       [&lt;ffffffff80015418&gt;] cpu_idle+0x30/0x60
                       [&lt;ffffffff804cd934&gt;] start_kernel+0x3ec/0x404
 }
 ... key      at: [&lt;ffffffff80cf93f0&gt;] netdev_xmit_lock_key+0x8/0x1c8

the SOFTIRQ-irq-unsafe lock's dependencies:
-&gt; (&amp;priv-&gt;meth_lock){+.+...} ops: 0 {
   HARDIRQ-ON-W at:
                        [&lt;ffffffff800614d0&gt;] __lock_acquire+0x7fc/0x1a14
                        [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
                        [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
                        [&lt;ffffffff80263f20&gt;] meth_reset+0x118/0x2d8
                        [&lt;ffffffff8026424c&gt;] meth_open+0x28/0x140
                        [&lt;ffffffff802c1ae8&gt;] dev_open+0xe0/0x18c
                        [&lt;ffffffff802c1268&gt;] dev_change_flags+0xd8/0x1d4
                        [&lt;ffffffff804e7770&gt;] ip_auto_config+0x1d4/0xf28
                        [&lt;ffffffff80012e68&gt;] do_one_initcall+0x58/0x170
                        [&lt;ffffffff804cd190&gt;] kernel_init+0x98/0x104
                        [&lt;ffffffff8001520c&gt;] kernel_thread_helper+0x10/0x18
   SOFTIRQ-ON-W at:
                        [&lt;ffffffff800614f8&gt;] __lock_acquire+0x824/0x1a14
                        [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
                        [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
                        [&lt;ffffffff80263f20&gt;] meth_reset+0x118/0x2d8
                        [&lt;ffffffff8026424c&gt;] meth_open+0x28/0x140
                        [&lt;ffffffff802c1ae8&gt;] dev_open+0xe0/0x18c
                        [&lt;ffffffff802c1268&gt;] dev_change_flags+0xd8/0x1d4
                        [&lt;ffffffff804e7770&gt;] ip_auto_config+0x1d4/0xf28
                        [&lt;ffffffff80012e68&gt;] do_one_initcall+0x58/0x170
                        [&lt;ffffffff804cd190&gt;] kernel_init+0x98/0x104
                        [&lt;ffffffff8001520c&gt;] kernel_thread_helper+0x10/0x18
   INITIAL USE at:
                       [&lt;ffffffff80061570&gt;] __lock_acquire+0x89c/0x1a14
                       [&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
                       [&lt;ffffffff800128d0&gt;] _spin_lock+0x30/0x44
                       [&lt;ffffffff80263f20&gt;] meth_reset+0x118/0x2d8
                       [&lt;ffffffff8026424c&gt;] meth_open+0x28/0x140
                       [&lt;ffffffff802c1ae8&gt;] dev_open+0xe0/0x18c
                       [&lt;ffffffff802c1268&gt;] dev_change_flags+0xd8/0x1d4
                       [&lt;ffffffff804e7770&gt;] ip_auto_config+0x1d4/0xf28
                       [&lt;ffffffff80012e68&gt;] do_one_initcall+0x58/0x170
                       [&lt;ffffffff804cd190&gt;] kernel_init+0x98/0x104
                       [&lt;ffffffff8001520c&gt;] kernel_thread_helper+0x10/0x18
 }
 ... key      at: [&lt;ffffffff80cf6ce8&gt;] __key.32424+0x0/0x8

stack backtrace:
Call Trace:
[&lt;ffffffff8000ed0c&gt;] dump_stack+0x8/0x34
[&lt;ffffffff80060b74&gt;] check_usage+0x470/0x4a0
[&lt;ffffffff80060c34&gt;] check_irq_usage+0x90/0x130
[&lt;ffffffff80061f78&gt;] __lock_acquire+0x12a4/0x1a14
[&lt;ffffffff800627e0&gt;] lock_acquire+0xf8/0x150
[&lt;ffffffff80012a0c&gt;] _spin_lock_irqsave+0x60/0x84
[&lt;ffffffff8026388c&gt;] meth_tx+0x48/0x43c
[&lt;ffffffff802d3a38&gt;] __qdisc_run+0x150/0x30c
[&lt;ffffffff802c0aa8&gt;] dev_queue_xmit+0x334/0x4b0
[&lt;ffffffff804e7e6c&gt;] ip_auto_config+0x8d0/0xf28
[&lt;ffffffff80012e68&gt;] do_one_initcall+0x58/0x170
[&lt;ffffffff804cd190&gt;] kernel_init+0x98/0x104
[&lt;ffffffff8001520c&gt;] kernel_thread_helper+0x10/0x18

..... timed out!
IP-Config: Retrying forever (NFS root)...
Sending DHCP requests ., OK
[...]

Fixed by converting all locks to irq locks.

Signed-off-by: Ralf Baechle &lt;ralf@linux-mips.org&gt;
Tested-by: Andrew Randrianasulu &lt;randrik_a@yahoo.com&gt;
Signed-off-by: David S. Miller &lt;davem@davemloft.net&gt;
</pre>
</div>
</content>
</entry>
</feed>
