<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux.git/drivers/usb/gadget/function/u_ether.c, branch v3.19</title>
<subtitle>Linux kernel source tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/'/>
<entry>
<title>Revert "usb: gadget: u_ether: synchronize with transmit when stopping queue"</title>
<updated>2014-08-19T14:51:19+00:00</updated>
<author>
<name>Li RongQing</name>
<email>roy.qing.li@gmail.com</email>
</author>
<published>2014-07-25T06:22:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=7166c32d9a6b8655ce13b0844482526734ac41b3'/>
<id>7166c32d9a6b8655ce13b0844482526734ac41b3</id>
<content type='text'>
This reverts commit a9232076374334ca2bc2a448dfde96d38a54349a.

It introduced a dead lock, and did not fix anything.

it made netif_tx_lock() be called in IRQ context, but in softirq context,
the same lock is locked without disabling IRQ. In fact, the commit a923207637
did not fix anything, since netif_stop_queue did not free the any resource

[   10.154920] =================================
[   10.156026] [ INFO: inconsistent lock state ]
[   10.156026] 3.16.0-rc5+ #13 Not tainted
[   10.156026] ---------------------------------
[   10.156026] inconsistent {IN-HARDIRQ-W} -&gt; {HARDIRQ-ON-W} usage.
[   10.156026] swapper/1/0 [HC0[0]:SC1[5]:HE1:SE0] takes:
[   10.156026]  (_xmit_ETHER){?.-...}, at: [&lt;80948b6a&gt;] sch_direct_xmit+0x7a/0x250
[   10.156026] {IN-HARDIRQ-W} state was registered at:
[   10.156026]   [&lt;804811f0&gt;] __lock_acquire+0x800/0x17a0
[   10.156026]   [&lt;804828ba&gt;] lock_acquire+0x6a/0xf0
[   10.156026]   [&lt;809ed477&gt;] _raw_spin_lock+0x27/0x40
[   10.156026]   [&lt;8088d508&gt;] gether_disconnect+0x68/0x280
[   10.156026]   [&lt;8088e777&gt;] eem_set_alt+0x37/0xc0
[   10.156026]   [&lt;808847ce&gt;] composite_setup+0x30e/0x1240
[   10.156026]   [&lt;8088b8ae&gt;] pch_udc_isr+0xa6e/0xf50
[   10.156026]   [&lt;8048abe8&gt;] handle_irq_event_percpu+0x38/0x1e0
[   10.156026]   [&lt;8048adc1&gt;] handle_irq_event+0x31/0x50
[   10.156026]   [&lt;8048d94b&gt;] handle_fasteoi_irq+0x6b/0x140
[   10.156026]   [&lt;804040a5&gt;] handle_irq+0x65/0x80
[   10.156026]   [&lt;80403cfc&gt;] do_IRQ+0x3c/0xc0
[   10.156026]   [&lt;809ee6ae&gt;] common_interrupt+0x2e/0x34
[   10.156026]   [&lt;804668c5&gt;] finish_task_switch+0x65/0xd0
[   10.156026]   [&lt;809e89df&gt;] __schedule+0x20f/0x7d0
[   10.156026]   [&lt;809e94aa&gt;] schedule_preempt_disabled+0x2a/0x70
[   10.156026]   [&lt;8047bf03&gt;] cpu_startup_entry+0x143/0x410
[   10.156026]   [&lt;809e2e61&gt;] rest_init+0xa1/0xb0
[   10.156026]   [&lt;80ce2a3b&gt;] start_kernel+0x336/0x33b
[   10.156026]   [&lt;80ce22ab&gt;] i386_start_kernel+0x79/0x7d
[   10.156026] irq event stamp: 52070
[   10.156026] hardirqs last  enabled at (52070): [&lt;809375de&gt;] neigh_resolve_output+0xee/0x2a0
[   10.156026] hardirqs last disabled at (52069): [&lt;809375a8&gt;] neigh_resolve_output+0xb8/0x2a0
[   10.156026] softirqs last  enabled at (52020): [&lt;8044401f&gt;] _local_bh_enable+0x1f/0x50
[   10.156026] softirqs last disabled at (52021): [&lt;80404036&gt;] do_softirq_own_stack+0x26/0x30
[   10.156026]
[   10.156026] other info that might help us debug this:
[   10.156026]  Possible unsafe locking scenario:
[   10.156026]
[   10.156026]        CPU0
[   10.156026]        ----
[   10.156026]   lock(_xmit_ETHER);
[   10.156026]   &lt;Interrupt&gt;
[   10.156026]     lock(_xmit_ETHER);
[   10.156026]
[   10.156026]  *** DEADLOCK ***
[   10.156026]
[   10.156026] 4 locks held by swapper/1/0:
[   10.156026]  #0:  (((&amp;idev-&gt;mc_ifc_timer))){+.-...}, at: [&lt;8044b100&gt;] call_timer_fn+0x0/0x190
[   10.156026]  #1:  (rcu_read_lock){......}, at: [&lt;a0577c40&gt;] mld_sendpack+0x0/0x590 [ipv6]
[   10.156026]  #2:  (rcu_read_lock_bh){......}, at: [&lt;a055680c&gt;] ip6_finish_output2+0x4c/0x7f0 [ipv6]
[   10.156026]  #3:  (rcu_read_lock_bh){......}, at: [&lt;8092e510&gt;] __dev_queue_xmit+0x0/0x5f0
[   10.156026]
[   10.156026] stack backtrace:
[   10.156026] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.16.0-rc5+ #13
[   10.156026]  811dbb10 00000000 9e919d10 809e6785 9e8b8000 9e919d3c 809e561e 80b95511
[   10.156026]  80b9545a 80b9543d 80b95450 80b95441 80b957e4 9e8b84e0 00000002 8047f7b0
[   10.156026]  9e919d5c 8048043b 00000002 00000000 9e8b8000 00000001 00000004 9e8b8000
[   10.156026] Call Trace:
[   10.156026]  [&lt;809e6785&gt;] dump_stack+0x48/0x69
[   10.156026]  [&lt;809e561e&gt;] print_usage_bug+0x18f/0x19c
[   10.156026]  [&lt;8047f7b0&gt;] ? print_shortest_lock_dependencies+0x170/0x170
[   10.156026]  [&lt;8048043b&gt;] mark_lock+0x53b/0x5f0
[   10.156026]  [&lt;804810cf&gt;] __lock_acquire+0x6df/0x17a0
[   10.156026]  [&lt;804828ba&gt;] lock_acquire+0x6a/0xf0
[   10.156026]  [&lt;80948b6a&gt;] ? sch_direct_xmit+0x7a/0x250
[   10.156026]  [&lt;809ed477&gt;] _raw_spin_lock+0x27/0x40
[   10.156026]  [&lt;80948b6a&gt;] ? sch_direct_xmit+0x7a/0x250
[   10.156026]  [&lt;80948b6a&gt;] sch_direct_xmit+0x7a/0x250
[   10.156026]  [&lt;8092e6bf&gt;] __dev_queue_xmit+0x1af/0x5f0
[   10.156026]  [&lt;80947fc0&gt;] ? ether_setup+0x80/0x80
[   10.156026]  [&lt;8092eb0f&gt;] dev_queue_xmit+0xf/0x20
[   10.156026]  [&lt;8093764c&gt;] neigh_resolve_output+0x15c/0x2a0
[   10.156026]  [&lt;a0556927&gt;] ip6_finish_output2+0x167/0x7f0 [ipv6]
[   10.156026]  [&lt;a0559b05&gt;] ip6_finish_output+0x85/0x1c0 [ipv6]
[   10.156026]  [&lt;a0559cb7&gt;] ip6_output+0x77/0x240 [ipv6]
[   10.156026]  [&lt;a0578163&gt;] mld_sendpack+0x523/0x590 [ipv6]
[   10.156026]  [&lt;80480501&gt;] ? mark_held_locks+0x11/0x90
[   10.156026]  [&lt;a057947d&gt;] mld_ifc_timer_expire+0x15d/0x280 [ipv6]
[   10.156026]  [&lt;8044b168&gt;] call_timer_fn+0x68/0x190
[   10.156026]  [&lt;a0579320&gt;] ? igmp6_group_added+0x150/0x150 [ipv6]
[   10.156026]  [&lt;8044b3fa&gt;] run_timer_softirq+0x16a/0x240
[   10.156026]  [&lt;a0579320&gt;] ? igmp6_group_added+0x150/0x150 [ipv6]
[   10.156026]  [&lt;80444984&gt;] __do_softirq+0xd4/0x2f0
[   10.156026]  [&lt;804448b0&gt;] ? tasklet_action+0x100/0x100
[   10.156026]  [&lt;80404036&gt;] do_softirq_own_stack+0x26/0x30
[   10.156026]  &lt;IRQ&gt;  [&lt;80444d05&gt;] irq_exit+0x65/0x70
[   10.156026]  [&lt;8042d758&gt;] smp_apic_timer_interrupt+0x38/0x50
[   10.156026]  [&lt;809ee91f&gt;] apic_timer_interrupt+0x2f/0x34
[   10.156026]  [&lt;8048007b&gt;] ? mark_lock+0x17b/0x5f0
[   10.156026]  [&lt;8040a912&gt;] ? default_idle+0x22/0xf0
[   10.156026]  [&lt;8040b13e&gt;] arch_cpu_idle+0xe/0x10
[   10.156026]  [&lt;8047bfc6&gt;] cpu_startup_entry+0x206/0x410
[   10.156026]  [&lt;8042bfbd&gt;] start_secondary+0x19d/0x1e0

Acked-by: Tony Lindgren &lt;tony@atomide.com&gt;
Reported-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Jeff Westfahl &lt;jeff.westfahl@ni.com&gt;
Cc: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Cc: &lt;linux-usb@vger.kernel.org&gt;
Signed-off-by: Li RongQing &lt;roy.qing.li@gmail.com&gt;
Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit a9232076374334ca2bc2a448dfde96d38a54349a.

It introduced a dead lock, and did not fix anything.

it made netif_tx_lock() be called in IRQ context, but in softirq context,
the same lock is locked without disabling IRQ. In fact, the commit a923207637
did not fix anything, since netif_stop_queue did not free the any resource

[   10.154920] =================================
[   10.156026] [ INFO: inconsistent lock state ]
[   10.156026] 3.16.0-rc5+ #13 Not tainted
[   10.156026] ---------------------------------
[   10.156026] inconsistent {IN-HARDIRQ-W} -&gt; {HARDIRQ-ON-W} usage.
[   10.156026] swapper/1/0 [HC0[0]:SC1[5]:HE1:SE0] takes:
[   10.156026]  (_xmit_ETHER){?.-...}, at: [&lt;80948b6a&gt;] sch_direct_xmit+0x7a/0x250
[   10.156026] {IN-HARDIRQ-W} state was registered at:
[   10.156026]   [&lt;804811f0&gt;] __lock_acquire+0x800/0x17a0
[   10.156026]   [&lt;804828ba&gt;] lock_acquire+0x6a/0xf0
[   10.156026]   [&lt;809ed477&gt;] _raw_spin_lock+0x27/0x40
[   10.156026]   [&lt;8088d508&gt;] gether_disconnect+0x68/0x280
[   10.156026]   [&lt;8088e777&gt;] eem_set_alt+0x37/0xc0
[   10.156026]   [&lt;808847ce&gt;] composite_setup+0x30e/0x1240
[   10.156026]   [&lt;8088b8ae&gt;] pch_udc_isr+0xa6e/0xf50
[   10.156026]   [&lt;8048abe8&gt;] handle_irq_event_percpu+0x38/0x1e0
[   10.156026]   [&lt;8048adc1&gt;] handle_irq_event+0x31/0x50
[   10.156026]   [&lt;8048d94b&gt;] handle_fasteoi_irq+0x6b/0x140
[   10.156026]   [&lt;804040a5&gt;] handle_irq+0x65/0x80
[   10.156026]   [&lt;80403cfc&gt;] do_IRQ+0x3c/0xc0
[   10.156026]   [&lt;809ee6ae&gt;] common_interrupt+0x2e/0x34
[   10.156026]   [&lt;804668c5&gt;] finish_task_switch+0x65/0xd0
[   10.156026]   [&lt;809e89df&gt;] __schedule+0x20f/0x7d0
[   10.156026]   [&lt;809e94aa&gt;] schedule_preempt_disabled+0x2a/0x70
[   10.156026]   [&lt;8047bf03&gt;] cpu_startup_entry+0x143/0x410
[   10.156026]   [&lt;809e2e61&gt;] rest_init+0xa1/0xb0
[   10.156026]   [&lt;80ce2a3b&gt;] start_kernel+0x336/0x33b
[   10.156026]   [&lt;80ce22ab&gt;] i386_start_kernel+0x79/0x7d
[   10.156026] irq event stamp: 52070
[   10.156026] hardirqs last  enabled at (52070): [&lt;809375de&gt;] neigh_resolve_output+0xee/0x2a0
[   10.156026] hardirqs last disabled at (52069): [&lt;809375a8&gt;] neigh_resolve_output+0xb8/0x2a0
[   10.156026] softirqs last  enabled at (52020): [&lt;8044401f&gt;] _local_bh_enable+0x1f/0x50
[   10.156026] softirqs last disabled at (52021): [&lt;80404036&gt;] do_softirq_own_stack+0x26/0x30
[   10.156026]
[   10.156026] other info that might help us debug this:
[   10.156026]  Possible unsafe locking scenario:
[   10.156026]
[   10.156026]        CPU0
[   10.156026]        ----
[   10.156026]   lock(_xmit_ETHER);
[   10.156026]   &lt;Interrupt&gt;
[   10.156026]     lock(_xmit_ETHER);
[   10.156026]
[   10.156026]  *** DEADLOCK ***
[   10.156026]
[   10.156026] 4 locks held by swapper/1/0:
[   10.156026]  #0:  (((&amp;idev-&gt;mc_ifc_timer))){+.-...}, at: [&lt;8044b100&gt;] call_timer_fn+0x0/0x190
[   10.156026]  #1:  (rcu_read_lock){......}, at: [&lt;a0577c40&gt;] mld_sendpack+0x0/0x590 [ipv6]
[   10.156026]  #2:  (rcu_read_lock_bh){......}, at: [&lt;a055680c&gt;] ip6_finish_output2+0x4c/0x7f0 [ipv6]
[   10.156026]  #3:  (rcu_read_lock_bh){......}, at: [&lt;8092e510&gt;] __dev_queue_xmit+0x0/0x5f0
[   10.156026]
[   10.156026] stack backtrace:
[   10.156026] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 3.16.0-rc5+ #13
[   10.156026]  811dbb10 00000000 9e919d10 809e6785 9e8b8000 9e919d3c 809e561e 80b95511
[   10.156026]  80b9545a 80b9543d 80b95450 80b95441 80b957e4 9e8b84e0 00000002 8047f7b0
[   10.156026]  9e919d5c 8048043b 00000002 00000000 9e8b8000 00000001 00000004 9e8b8000
[   10.156026] Call Trace:
[   10.156026]  [&lt;809e6785&gt;] dump_stack+0x48/0x69
[   10.156026]  [&lt;809e561e&gt;] print_usage_bug+0x18f/0x19c
[   10.156026]  [&lt;8047f7b0&gt;] ? print_shortest_lock_dependencies+0x170/0x170
[   10.156026]  [&lt;8048043b&gt;] mark_lock+0x53b/0x5f0
[   10.156026]  [&lt;804810cf&gt;] __lock_acquire+0x6df/0x17a0
[   10.156026]  [&lt;804828ba&gt;] lock_acquire+0x6a/0xf0
[   10.156026]  [&lt;80948b6a&gt;] ? sch_direct_xmit+0x7a/0x250
[   10.156026]  [&lt;809ed477&gt;] _raw_spin_lock+0x27/0x40
[   10.156026]  [&lt;80948b6a&gt;] ? sch_direct_xmit+0x7a/0x250
[   10.156026]  [&lt;80948b6a&gt;] sch_direct_xmit+0x7a/0x250
[   10.156026]  [&lt;8092e6bf&gt;] __dev_queue_xmit+0x1af/0x5f0
[   10.156026]  [&lt;80947fc0&gt;] ? ether_setup+0x80/0x80
[   10.156026]  [&lt;8092eb0f&gt;] dev_queue_xmit+0xf/0x20
[   10.156026]  [&lt;8093764c&gt;] neigh_resolve_output+0x15c/0x2a0
[   10.156026]  [&lt;a0556927&gt;] ip6_finish_output2+0x167/0x7f0 [ipv6]
[   10.156026]  [&lt;a0559b05&gt;] ip6_finish_output+0x85/0x1c0 [ipv6]
[   10.156026]  [&lt;a0559cb7&gt;] ip6_output+0x77/0x240 [ipv6]
[   10.156026]  [&lt;a0578163&gt;] mld_sendpack+0x523/0x590 [ipv6]
[   10.156026]  [&lt;80480501&gt;] ? mark_held_locks+0x11/0x90
[   10.156026]  [&lt;a057947d&gt;] mld_ifc_timer_expire+0x15d/0x280 [ipv6]
[   10.156026]  [&lt;8044b168&gt;] call_timer_fn+0x68/0x190
[   10.156026]  [&lt;a0579320&gt;] ? igmp6_group_added+0x150/0x150 [ipv6]
[   10.156026]  [&lt;8044b3fa&gt;] run_timer_softirq+0x16a/0x240
[   10.156026]  [&lt;a0579320&gt;] ? igmp6_group_added+0x150/0x150 [ipv6]
[   10.156026]  [&lt;80444984&gt;] __do_softirq+0xd4/0x2f0
[   10.156026]  [&lt;804448b0&gt;] ? tasklet_action+0x100/0x100
[   10.156026]  [&lt;80404036&gt;] do_softirq_own_stack+0x26/0x30
[   10.156026]  &lt;IRQ&gt;  [&lt;80444d05&gt;] irq_exit+0x65/0x70
[   10.156026]  [&lt;8042d758&gt;] smp_apic_timer_interrupt+0x38/0x50
[   10.156026]  [&lt;809ee91f&gt;] apic_timer_interrupt+0x2f/0x34
[   10.156026]  [&lt;8048007b&gt;] ? mark_lock+0x17b/0x5f0
[   10.156026]  [&lt;8040a912&gt;] ? default_idle+0x22/0xf0
[   10.156026]  [&lt;8040b13e&gt;] arch_cpu_idle+0xe/0x10
[   10.156026]  [&lt;8047bfc6&gt;] cpu_startup_entry+0x206/0x410
[   10.156026]  [&lt;8042bfbd&gt;] start_secondary+0x19d/0x1e0

Acked-by: Tony Lindgren &lt;tony@atomide.com&gt;
Reported-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Jeff Westfahl &lt;jeff.westfahl@ni.com&gt;
Cc: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Cc: &lt;linux-usb@vger.kernel.org&gt;
Signed-off-by: Li RongQing &lt;roy.qing.li@gmail.com&gt;
Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge tag 'usb-for-v3.17' of git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb into usb-next</title>
<updated>2014-07-21T18:33:41+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2014-07-21T18:33:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=61fe2d75f138992f116ee70e83f10ff2d7e79143'/>
<id>61fe2d75f138992f116ee70e83f10ff2d7e79143</id>
<content type='text'>
Felipe writes:

usb: patches for v3.17 merge window

Surprisingly enough, while a big set of patches, the majority is
composed of cleanups (using devm_*, fixing sparse errors, moving
code around, adding const, etc).

The highlights are addition of new support for PLX USB338x devices,
and support for USB 2.0-only configurations of the DWC3 IP core.

Signed-of-by: Felipe Balbi &lt;balbi@ti.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Felipe writes:

usb: patches for v3.17 merge window

Surprisingly enough, while a big set of patches, the majority is
composed of cleanups (using devm_*, fixing sparse errors, moving
code around, adding const, etc).

The highlights are addition of new support for PLX USB338x devices,
and support for USB 2.0-only configurations of the DWC3 IP core.

Signed-of-by: Felipe Balbi &lt;balbi@ti.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: gadget: Gadget directory cleanup - group usb functions</title>
<updated>2014-07-16T17:50:36+00:00</updated>
<author>
<name>Andrzej Pietrasiewicz</name>
<email>andrzej.p@samsung.com</email>
</author>
<published>2014-07-15T11:09:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux.git/commit/?id=00a2430ff07d4e0e0e7e24e02fd8adede333b797'/>
<id>00a2430ff07d4e0e0e7e24e02fd8adede333b797</id>
<content type='text'>
The drivers/usb/gadget directory contains many files.
Files which are related can be distributed into separate directories.
This patch moves the USB functions implementations into a separate directory.

Signed-off-by: Andrzej Pietrasiewicz &lt;andrzej.p@samsung.com&gt;
Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The drivers/usb/gadget directory contains many files.
Files which are related can be distributed into separate directories.
This patch moves the USB functions implementations into a separate directory.

Signed-off-by: Andrzej Pietrasiewicz &lt;andrzej.p@samsung.com&gt;
Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
