<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/usb/host, branch linux-2.6.36.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>xhci: Use GFP_NOIO during device reset.</title>
<updated>2011-02-17T22:47:32+00:00</updated>
<author>
<name>Sarah Sharp</name>
<email>sarah.a.sharp@linux.intel.com</email>
</author>
<published>2010-12-28T21:08:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=062d29c90bda892a67eecb5e972715e1bd5df9cd'/>
<id>062d29c90bda892a67eecb5e972715e1bd5df9cd</id>
<content type='text'>
commit a6d940dd759bf240d28624198660ed34582a327b upstream.

When xhci_discover_or_reset_device() is called after a host controller
power loss, the virtual device may need to be reallocated.  Make sure
xhci_alloc_dev() uses GFP_NOIO.  This avoid causing a deadlock by allowing
the kernel to flush pending I/O while reallocating memory for a virtual
device for a USB mass storage device that's holding the backing store for
dirty memory buffers.

This patch should be queued for the 2.6.37 stable tree.

Signed-off-by: Sarah Sharp &lt;sarah.a.sharp@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit a6d940dd759bf240d28624198660ed34582a327b upstream.

When xhci_discover_or_reset_device() is called after a host controller
power loss, the virtual device may need to be reallocated.  Make sure
xhci_alloc_dev() uses GFP_NOIO.  This avoid causing a deadlock by allowing
the kernel to flush pending I/O while reallocating memory for a virtual
device for a USB mass storage device that's holding the backing store for
dirty memory buffers.

This patch should be queued for the 2.6.37 stable tree.

Signed-off-by: Sarah Sharp &lt;sarah.a.sharp@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>xhci: Do not run xhci_cleanup_msix with irq disabled</title>
<updated>2011-02-17T22:47:32+00:00</updated>
<author>
<name>Zhang Rui</name>
<email>rui.zhang@intel.com</email>
</author>
<published>2010-12-17T21:17:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=91e0d66a31148ff5108a1d877ddf54319903148b'/>
<id>91e0d66a31148ff5108a1d877ddf54319903148b</id>
<content type='text'>
commit 40a9fb17f32dbe54de3d636142a59288544deed7 upstream.

when unloading xhci_hcd, I got:
[  134.856813] xhci_hcd 0000:02:00.0: remove, state 4
[  134.858140] usb usb3: USB disconnect, address 1
[  134.874956] xhci_hcd 0000:02:00.0: Host controller not halted, aborting reset.
[  134.876351] BUG: sleeping function called from invalid context at kernel/mutex.c:85
[  134.877657] in_atomic(): 0, irqs_disabled(): 1, pid: 1451, name: modprobe
[  134.878975] Pid: 1451, comm: modprobe Not tainted 2.6.37-rc5+ #162
[  134.880298] Call Trace:
[  134.881602]  [&lt;ffffffff8104156a&gt;] __might_sleep+0xeb/0xf0
[  134.882921]  [&lt;ffffffff814763dc&gt;] mutex_lock+0x24/0x50
[  134.884229]  [&lt;ffffffff810a745c&gt;] free_desc+0x2e/0x5f
[  134.885538]  [&lt;ffffffff810a74c8&gt;] irq_free_descs+0x3b/0x71
[  134.886853]  [&lt;ffffffff8102584d&gt;] free_irq_at+0x31/0x36
[  134.888167]  [&lt;ffffffff8102723f&gt;] destroy_irq+0x69/0x71
[  134.889486]  [&lt;ffffffff8102747a&gt;] native_teardown_msi_irq+0xe/0x10
[  134.890820]  [&lt;ffffffff8124c382&gt;] default_teardown_msi_irqs+0x57/0x80
[  134.892158]  [&lt;ffffffff8124be46&gt;] free_msi_irqs+0x8b/0xe9
[  134.893504]  [&lt;ffffffff8124cd46&gt;] pci_disable_msix+0x35/0x39
[  134.894844]  [&lt;ffffffffa01b444a&gt;] xhci_cleanup_msix+0x31/0x51 [xhci_hcd]
[  134.896186]  [&lt;ffffffffa01b4b3a&gt;] xhci_stop+0x3a/0x80 [xhci_hcd]
[  134.897521]  [&lt;ffffffff81341dd4&gt;] usb_remove_hcd+0xfd/0x14a
[  134.898859]  [&lt;ffffffff813500ae&gt;] usb_hcd_pci_remove+0x5c/0xc6
[  134.900193]  [&lt;ffffffff8123c606&gt;] pci_device_remove+0x3f/0x91
[  134.901535]  [&lt;ffffffff812e7ea4&gt;] __device_release_driver+0x83/0xd9
[  134.902899]  [&lt;ffffffff812e8571&gt;] driver_detach+0x86/0xad
[  134.904222]  [&lt;ffffffff812e7d56&gt;] bus_remove_driver+0xb2/0xd8
[  134.905540]  [&lt;ffffffff812e8633&gt;] driver_unregister+0x6c/0x74
[  134.906839]  [&lt;ffffffff8123c8e4&gt;] pci_unregister_driver+0x44/0x89
[  134.908121]  [&lt;ffffffffa01b940e&gt;] xhci_unregister_pci+0x15/0x17 [xhci_hcd]
[  134.909396]  [&lt;ffffffffa01bd7d2&gt;] xhci_hcd_cleanup+0xe/0x10 [xhci_hcd]
[  134.910652]  [&lt;ffffffff8107fcd1&gt;] sys_delete_module+0x1ca/0x23b
[  134.911882]  [&lt;ffffffff81123932&gt;] ? path_put+0x22/0x26
[  134.913104]  [&lt;ffffffff8109a800&gt;] ? audit_syscall_entry+0x2c/0x148
[  134.914333]  [&lt;ffffffff8100ac82&gt;] system_call_fastpath+0x16/0x1b
[  134.915658] xhci_hcd 0000:02:00.0: USB bus 3 deregistered
[  134.916465] xhci_hcd 0000:02:00.0: PCI INT A disabled

and the same issue when xhci_suspend is invoked.  (Note from Sarah: That's
fixed by Andiry's patch before this, by synchronizing the irqs rather than
freeing them on suspend.)

Do not run xhci_cleanup_msix with irq disabled.

This patch should be queued for the 2.6.37 stable tree.

Signed-off-by: Zhang Rui &lt;rui.zhang@intel.com&gt;
Signed-off-by: Sarah Sharp &lt;sarah.a.sharp@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 40a9fb17f32dbe54de3d636142a59288544deed7 upstream.

when unloading xhci_hcd, I got:
[  134.856813] xhci_hcd 0000:02:00.0: remove, state 4
[  134.858140] usb usb3: USB disconnect, address 1
[  134.874956] xhci_hcd 0000:02:00.0: Host controller not halted, aborting reset.
[  134.876351] BUG: sleeping function called from invalid context at kernel/mutex.c:85
[  134.877657] in_atomic(): 0, irqs_disabled(): 1, pid: 1451, name: modprobe
[  134.878975] Pid: 1451, comm: modprobe Not tainted 2.6.37-rc5+ #162
[  134.880298] Call Trace:
[  134.881602]  [&lt;ffffffff8104156a&gt;] __might_sleep+0xeb/0xf0
[  134.882921]  [&lt;ffffffff814763dc&gt;] mutex_lock+0x24/0x50
[  134.884229]  [&lt;ffffffff810a745c&gt;] free_desc+0x2e/0x5f
[  134.885538]  [&lt;ffffffff810a74c8&gt;] irq_free_descs+0x3b/0x71
[  134.886853]  [&lt;ffffffff8102584d&gt;] free_irq_at+0x31/0x36
[  134.888167]  [&lt;ffffffff8102723f&gt;] destroy_irq+0x69/0x71
[  134.889486]  [&lt;ffffffff8102747a&gt;] native_teardown_msi_irq+0xe/0x10
[  134.890820]  [&lt;ffffffff8124c382&gt;] default_teardown_msi_irqs+0x57/0x80
[  134.892158]  [&lt;ffffffff8124be46&gt;] free_msi_irqs+0x8b/0xe9
[  134.893504]  [&lt;ffffffff8124cd46&gt;] pci_disable_msix+0x35/0x39
[  134.894844]  [&lt;ffffffffa01b444a&gt;] xhci_cleanup_msix+0x31/0x51 [xhci_hcd]
[  134.896186]  [&lt;ffffffffa01b4b3a&gt;] xhci_stop+0x3a/0x80 [xhci_hcd]
[  134.897521]  [&lt;ffffffff81341dd4&gt;] usb_remove_hcd+0xfd/0x14a
[  134.898859]  [&lt;ffffffff813500ae&gt;] usb_hcd_pci_remove+0x5c/0xc6
[  134.900193]  [&lt;ffffffff8123c606&gt;] pci_device_remove+0x3f/0x91
[  134.901535]  [&lt;ffffffff812e7ea4&gt;] __device_release_driver+0x83/0xd9
[  134.902899]  [&lt;ffffffff812e8571&gt;] driver_detach+0x86/0xad
[  134.904222]  [&lt;ffffffff812e7d56&gt;] bus_remove_driver+0xb2/0xd8
[  134.905540]  [&lt;ffffffff812e8633&gt;] driver_unregister+0x6c/0x74
[  134.906839]  [&lt;ffffffff8123c8e4&gt;] pci_unregister_driver+0x44/0x89
[  134.908121]  [&lt;ffffffffa01b940e&gt;] xhci_unregister_pci+0x15/0x17 [xhci_hcd]
[  134.909396]  [&lt;ffffffffa01bd7d2&gt;] xhci_hcd_cleanup+0xe/0x10 [xhci_hcd]
[  134.910652]  [&lt;ffffffff8107fcd1&gt;] sys_delete_module+0x1ca/0x23b
[  134.911882]  [&lt;ffffffff81123932&gt;] ? path_put+0x22/0x26
[  134.913104]  [&lt;ffffffff8109a800&gt;] ? audit_syscall_entry+0x2c/0x148
[  134.914333]  [&lt;ffffffff8100ac82&gt;] system_call_fastpath+0x16/0x1b
[  134.915658] xhci_hcd 0000:02:00.0: USB bus 3 deregistered
[  134.916465] xhci_hcd 0000:02:00.0: PCI INT A disabled

and the same issue when xhci_suspend is invoked.  (Note from Sarah: That's
fixed by Andiry's patch before this, by synchronizing the irqs rather than
freeing them on suspend.)

Do not run xhci_cleanup_msix with irq disabled.

This patch should be queued for the 2.6.37 stable tree.

Signed-off-by: Zhang Rui &lt;rui.zhang@intel.com&gt;
Signed-off-by: Sarah Sharp &lt;sarah.a.sharp@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: EHCI: fix scheduling while atomic during suspend</title>
<updated>2011-02-17T22:46:43+00:00</updated>
<author>
<name>Yin Kangkai</name>
<email>kangkai.yin@intel.com</email>
</author>
<published>2011-01-28T04:04:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8a7dfbe3f7930c25c16f54b5d638350d03594f2f'/>
<id>8a7dfbe3f7930c25c16f54b5d638350d03594f2f</id>
<content type='text'>
commit 148fc55fd0449683a1d15bf219ad8d8b6fa17545 upstream.

There is a msleep with spin lock held during ehci pci suspend, which will
cause kernel BUG: scheduling while atomic. Fix that.

[  184.139620] BUG: scheduling while atomic: kworker/u:11/416/0x00000002
[  184.139632] 4 locks held by kworker/u:11/416:
[  184.139640]  #0:  (events_unbound){+.+.+.}, at: [&lt;c104ddd4&gt;] process_one_work+0x1b3/0x4cb
[  184.139669]  #1:  ((&amp;entry-&gt;work)){+.+.+.}, at: [&lt;c104ddd4&gt;] process_one_work+0x1b3/0x4cb
[  184.139686]  #2:  (&amp;__lockdep_no_validate__){+.+.+.}, at: [&lt;c127cde3&gt;] __device_suspend+0x2c/0x154
[  184.139706]  #3:  (&amp;(&amp;ehci-&gt;lock)-&gt;rlock){-.-...}, at: [&lt;c132f3d8&gt;] ehci_pci_suspend+0x35/0x7b
[  184.139725] Modules linked in: serio_raw pegasus joydev mrst_gfx(C) battery
[  184.139748] irq event stamp: 52
[  184.139753] hardirqs last  enabled at (51): [&lt;c14fdaac&gt;] mutex_lock_nested+0x258/0x293
[  184.139766] hardirqs last disabled at (52): [&lt;c14fe7b4&gt;] _raw_spin_lock_irqsave+0xf/0x3e
[  184.139777] softirqs last  enabled at (0): [&lt;c10371c1&gt;] copy_process+0x3d2/0x109d
[  184.139789] softirqs last disabled at (0): [&lt;  (null)&gt;]   (null)
[  184.139802] Pid: 416, comm: kworker/u:11 Tainted: G         C  2.6.37-6.3-adaptation-oaktrail #37
[  184.139809] Call Trace:
[  184.139820]  [&lt;c102eeff&gt;] __schedule_bug+0x5e/0x65
[  184.139829]  [&lt;c14fbca5&gt;] schedule+0xac/0xc4c
[  184.139840]  [&lt;c11d4845&gt;] ? string+0x37/0x8b
[  184.139853]  [&lt;c1044f21&gt;] ? lock_timer_base+0x1f/0x3e
[  184.139863]  [&lt;c14fe7da&gt;] ? _raw_spin_lock_irqsave+0x35/0x3e
[  184.139876]  [&lt;c1061590&gt;] ? trace_hardirqs_off+0xb/0xd
[  184.139885]  [&lt;c14fccdc&gt;] schedule_timeout+0x283/0x2d9
[  184.139896]  [&lt;c104516f&gt;] ? process_timeout+0x0/0xa
[  184.139906]  [&lt;c14fcd47&gt;] schedule_timeout_uninterruptible+0x15/0x17
[  184.139916]  [&lt;c104566a&gt;] msleep+0x10/0x16
[  184.139926]  [&lt;c132f316&gt;] ehci_adjust_port_wakeup_flags+0x69/0xf6
[  184.139937]  [&lt;c132f3eb&gt;] ehci_pci_suspend+0x48/0x7b
[  184.139946]  [&lt;c1326587&gt;] suspend_common+0x52/0xbb
[  184.139956]  [&lt;c1326625&gt;] hcd_pci_suspend+0x26/0x28
[  184.139967]  [&lt;c11e7182&gt;] pci_pm_suspend+0x5f/0xd0
[  184.139976]  [&lt;c127ca3a&gt;] pm_op+0x5d/0xf0
[  184.139986]  [&lt;c127ceac&gt;] __device_suspend+0xf5/0x154
[  184.139996]  [&lt;c127d2c8&gt;] async_suspend+0x16/0x3a
[  184.140006]  [&lt;c1058f54&gt;] async_run_entry_fn+0x89/0x111
[  184.140016]  [&lt;c104deb6&gt;] process_one_work+0x295/0x4cb
[  184.140026]  [&lt;c1058ecb&gt;] ? async_run_entry_fn+0x0/0x111
[  184.140036]  [&lt;c104e3d0&gt;] worker_thread+0x17f/0x298
[  184.140045]  [&lt;c104e251&gt;] ? worker_thread+0x0/0x298
[  184.140055]  [&lt;c105277f&gt;] kthread+0x64/0x69
[  184.140064]  [&lt;c105271b&gt;] ? kthread+0x0/0x69
[  184.140075]  [&lt;c1002efa&gt;] kernel_thread_helper+0x6/0x1a

Signed-off-by: Yin Kangkai &lt;kangkai.yin@intel.com&gt;
Acked-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
CC: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 148fc55fd0449683a1d15bf219ad8d8b6fa17545 upstream.

There is a msleep with spin lock held during ehci pci suspend, which will
cause kernel BUG: scheduling while atomic. Fix that.

[  184.139620] BUG: scheduling while atomic: kworker/u:11/416/0x00000002
[  184.139632] 4 locks held by kworker/u:11/416:
[  184.139640]  #0:  (events_unbound){+.+.+.}, at: [&lt;c104ddd4&gt;] process_one_work+0x1b3/0x4cb
[  184.139669]  #1:  ((&amp;entry-&gt;work)){+.+.+.}, at: [&lt;c104ddd4&gt;] process_one_work+0x1b3/0x4cb
[  184.139686]  #2:  (&amp;__lockdep_no_validate__){+.+.+.}, at: [&lt;c127cde3&gt;] __device_suspend+0x2c/0x154
[  184.139706]  #3:  (&amp;(&amp;ehci-&gt;lock)-&gt;rlock){-.-...}, at: [&lt;c132f3d8&gt;] ehci_pci_suspend+0x35/0x7b
[  184.139725] Modules linked in: serio_raw pegasus joydev mrst_gfx(C) battery
[  184.139748] irq event stamp: 52
[  184.139753] hardirqs last  enabled at (51): [&lt;c14fdaac&gt;] mutex_lock_nested+0x258/0x293
[  184.139766] hardirqs last disabled at (52): [&lt;c14fe7b4&gt;] _raw_spin_lock_irqsave+0xf/0x3e
[  184.139777] softirqs last  enabled at (0): [&lt;c10371c1&gt;] copy_process+0x3d2/0x109d
[  184.139789] softirqs last disabled at (0): [&lt;  (null)&gt;]   (null)
[  184.139802] Pid: 416, comm: kworker/u:11 Tainted: G         C  2.6.37-6.3-adaptation-oaktrail #37
[  184.139809] Call Trace:
[  184.139820]  [&lt;c102eeff&gt;] __schedule_bug+0x5e/0x65
[  184.139829]  [&lt;c14fbca5&gt;] schedule+0xac/0xc4c
[  184.139840]  [&lt;c11d4845&gt;] ? string+0x37/0x8b
[  184.139853]  [&lt;c1044f21&gt;] ? lock_timer_base+0x1f/0x3e
[  184.139863]  [&lt;c14fe7da&gt;] ? _raw_spin_lock_irqsave+0x35/0x3e
[  184.139876]  [&lt;c1061590&gt;] ? trace_hardirqs_off+0xb/0xd
[  184.139885]  [&lt;c14fccdc&gt;] schedule_timeout+0x283/0x2d9
[  184.139896]  [&lt;c104516f&gt;] ? process_timeout+0x0/0xa
[  184.139906]  [&lt;c14fcd47&gt;] schedule_timeout_uninterruptible+0x15/0x17
[  184.139916]  [&lt;c104566a&gt;] msleep+0x10/0x16
[  184.139926]  [&lt;c132f316&gt;] ehci_adjust_port_wakeup_flags+0x69/0xf6
[  184.139937]  [&lt;c132f3eb&gt;] ehci_pci_suspend+0x48/0x7b
[  184.139946]  [&lt;c1326587&gt;] suspend_common+0x52/0xbb
[  184.139956]  [&lt;c1326625&gt;] hcd_pci_suspend+0x26/0x28
[  184.139967]  [&lt;c11e7182&gt;] pci_pm_suspend+0x5f/0xd0
[  184.139976]  [&lt;c127ca3a&gt;] pm_op+0x5d/0xf0
[  184.139986]  [&lt;c127ceac&gt;] __device_suspend+0xf5/0x154
[  184.139996]  [&lt;c127d2c8&gt;] async_suspend+0x16/0x3a
[  184.140006]  [&lt;c1058f54&gt;] async_run_entry_fn+0x89/0x111
[  184.140016]  [&lt;c104deb6&gt;] process_one_work+0x295/0x4cb
[  184.140026]  [&lt;c1058ecb&gt;] ? async_run_entry_fn+0x0/0x111
[  184.140036]  [&lt;c104e3d0&gt;] worker_thread+0x17f/0x298
[  184.140045]  [&lt;c104e251&gt;] ? worker_thread+0x0/0x298
[  184.140055]  [&lt;c105277f&gt;] kthread+0x64/0x69
[  184.140064]  [&lt;c105271b&gt;] ? kthread+0x0/0x69
[  184.140075]  [&lt;c1002efa&gt;] kernel_thread_helper+0x6/0x1a

Signed-off-by: Yin Kangkai &lt;kangkai.yin@intel.com&gt;
Acked-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
CC: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: EHCI: fix DMA deallocation bug</title>
<updated>2011-02-17T22:46:41+00:00</updated>
<author>
<name>Alan Stern</name>
<email>stern@rowland.harvard.edu</email>
</author>
<published>2011-01-06T15:17:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=244ccf5a704afee9f628908abf089bd5d6cc9abd'/>
<id>244ccf5a704afee9f628908abf089bd5d6cc9abd</id>
<content type='text'>
commit f75593ceaa08e6d27aec1a5de31cded19e850dd1 upstream.

This patch (as1440) fixes a bug in ehci-hcd.  ehci-&gt;periodic_size is
used to compute the size in a dma_alloc_coherent() call, but then it
gets changed later on.  As a result, the corresponding call to
dma_free_coherent() passes a different size from the original
allocation.  Fix the problem by adjusting ehci-&gt;periodic_size before
carrying out any of the memory allocations.

Signed-off-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Tested-by: Larry Finger &lt;Larry.Finger@lwfinger.net&gt;
CC: David Brownell &lt;david-b@pacbell.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit f75593ceaa08e6d27aec1a5de31cded19e850dd1 upstream.

This patch (as1440) fixes a bug in ehci-hcd.  ehci-&gt;periodic_size is
used to compute the size in a dma_alloc_coherent() call, but then it
gets changed later on.  As a result, the corresponding call to
dma_free_coherent() passes a different size from the original
allocation.  Fix the problem by adjusting ehci-&gt;periodic_size before
carrying out any of the memory allocations.

Signed-off-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Tested-by: Larry Finger &lt;Larry.Finger@lwfinger.net&gt;
CC: David Brownell &lt;david-b@pacbell.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: EHCI: ASPM quirk of ISOC on AMD Hudson</title>
<updated>2011-02-17T22:46:41+00:00</updated>
<author>
<name>Alex He</name>
<email>alex.he@amd.com</email>
</author>
<published>2010-12-21T09:45:46+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=74598f7368e965dfdd0440edbaf8ef1aafa5786e'/>
<id>74598f7368e965dfdd0440edbaf8ef1aafa5786e</id>
<content type='text'>
commit baab93afc2844b68d57b0dcca5e1d34c5d7cf411 upstream.

AMD Hudson also needs the same ASPM quirk as SB800

Signed-off-by: Alex He &lt;alex.he@amd.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit baab93afc2844b68d57b0dcca5e1d34c5d7cf411 upstream.

AMD Hudson also needs the same ASPM quirk as SB800

Signed-off-by: Alex He &lt;alex.he@amd.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: EHCI: ASPM quirk of ISOC on AMD SB800</title>
<updated>2011-02-17T22:46:36+00:00</updated>
<author>
<name>Alex He</name>
<email>alex.he@amd.com</email>
</author>
<published>2010-12-07T02:10:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=d1cc140ae746d2ad5866aee77073e4897ea2babe'/>
<id>d1cc140ae746d2ad5866aee77073e4897ea2babe</id>
<content type='text'>
commit 05570297ecbe834b1756b522412b68eaffb9ab11 upstream.

When ASPM PM Feature is enabled on UMI link, devices that use ISOC stream of
data transfer may be exposed to longer latency causing less than optimal per-
formance of the device. The longer latencies are normal and are due to link
wake time coming out of low power state which happens frequently to save
power when the link is not active.
The following code will make exception for certain features of ASPM to be by
passed and keep the logic normal state only when the ISOC device is connected
and active. This change will allow the device to run at optimal performance
yet minimize the impact on overall power savings.

Signed-off-by: Alex He &lt;alex.he@amd.com&gt;
Acked-by: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 05570297ecbe834b1756b522412b68eaffb9ab11 upstream.

When ASPM PM Feature is enabled on UMI link, devices that use ISOC stream of
data transfer may be exposed to longer latency causing less than optimal per-
formance of the device. The longer latencies are normal and are due to link
wake time coming out of low power state which happens frequently to save
power when the link is not active.
The following code will make exception for certain features of ASPM to be by
passed and keep the logic normal state only when the ISOC device is connected
and active. This change will allow the device to run at optimal performance
yet minimize the impact on overall power savings.

Signed-off-by: Alex He &lt;alex.he@amd.com&gt;
Acked-by: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>xhci: Fix issue with port array setup and buggy hosts.</title>
<updated>2011-01-07T21:58:37+00:00</updated>
<author>
<name>Sarah Sharp</name>
<email>sarah.a.sharp@linux.intel.com</email>
</author>
<published>2010-12-09T18:29:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e67e86ead8aa2d1e36bb547100cfcb8bce964ed2'/>
<id>e67e86ead8aa2d1e36bb547100cfcb8bce964ed2</id>
<content type='text'>
commit f8bbeabc34aa945ab4275abc9a4dfde0aea798ca upstream.

Fix two bugs with the port array setup.

The first bug will only show up with broken xHCI hosts with Extended
Capabilities registers that have duplicate port speed entries for the same
port.  The idea with the original code was to set the port_array entry to
-1 if the duplicate port speed entry said the port was a different speed
than the original port speed entry.  That would mean that later, the port
would not be exposed to the USB core. Unfortunately, I forgot a continue
statement, and the port_array entry would just be overwritten in the next
line.

The second bug would happen if there are conflicting port speed registers
(so that some entry in port_array is -1), or one of the hardware port
registers was not described in the port speed registers (so that some
entry in port_array is 0).  The code that sets up the usb2_ports array
would accidentally claim those ports.  That wouldn't really cause any
user-visible issues, but it is a bug.

This patch should go into the stable trees that have the port array and
USB 3.0 port disabling prevention patches.

Signed-off-by: Sarah Sharp &lt;sarah.a.sharp@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit f8bbeabc34aa945ab4275abc9a4dfde0aea798ca upstream.

Fix two bugs with the port array setup.

The first bug will only show up with broken xHCI hosts with Extended
Capabilities registers that have duplicate port speed entries for the same
port.  The idea with the original code was to set the port_array entry to
-1 if the duplicate port speed entry said the port was a different speed
than the original port speed entry.  That would mean that later, the port
would not be exposed to the USB core. Unfortunately, I forgot a continue
statement, and the port_array entry would just be overwritten in the next
line.

The second bug would happen if there are conflicting port speed registers
(so that some entry in port_array is -1), or one of the hardware port
registers was not described in the port speed registers (so that some
entry in port_array is 0).  The code that sets up the usb2_ports array
would accidentally claim those ports.  That wouldn't really cause any
user-visible issues, but it is a bug.

This patch should go into the stable trees that have the port array and
USB 3.0 port disabling prevention patches.

Signed-off-by: Sarah Sharp &lt;sarah.a.sharp@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: ehci: disable LPM and PPCD for nVidia MCP89 chips</title>
<updated>2010-12-09T21:33:07+00:00</updated>
<author>
<name>Brian J. Tarricone</name>
<email>brian@tarricone.org</email>
</author>
<published>2010-11-22T05:15:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f9a65bd413df09aaee5b013a2e51fd4aece687fa'/>
<id>f9a65bd413df09aaee5b013a2e51fd4aece687fa</id>
<content type='text'>
commit a85b4e7f4481c5a1ca89fa63c9c871151965075e upstream.

Tested on MacBookAir3,1.  Without this, we get EPROTO errors when
fetching device config descriptors.

Signed-off-by: Brian Tarricone &lt;brian@tarricone.org&gt;
Reported-by: Benoit Gschwind &lt;gschwind@gnu-log.net&gt;
Tested-by: Edgar Hucek &lt;gimli@dark-green.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit a85b4e7f4481c5a1ca89fa63c9c871151965075e upstream.

Tested on MacBookAir3,1.  Without this, we get EPROTO errors when
fetching device config descriptors.

Signed-off-by: Brian Tarricone &lt;brian@tarricone.org&gt;
Reported-by: Benoit Gschwind &lt;gschwind@gnu-log.net&gt;
Tested-by: Edgar Hucek &lt;gimli@dark-green.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: EHCI: fix obscure race in ehci_endpoint_disable</title>
<updated>2010-12-09T21:33:07+00:00</updated>
<author>
<name>Alan Stern</name>
<email>stern@rowland.harvard.edu</email>
</author>
<published>2010-11-16T15:57:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=0eff1c751657595c809d0d4d350ec529d345658c'/>
<id>0eff1c751657595c809d0d4d350ec529d345658c</id>
<content type='text'>
commit 02e2c51ba3e80acde600721ea784c3ef84da5ea1 upstream.

This patch (as1435) fixes an obscure and unlikely race in ehci-hcd.
When an async URB is unlinked, the corresponding QH is removed from
the async list.  If the QH's endpoint is then disabled while the URB
is being given back, ehci_endpoint_disable() won't find the QH on the
async list, causing it to believe that the QH has been lost.  This
will lead to a memory leak at best and quite possibly to an oops.

The solution is to trust usbcore not to lose track of endpoints.  If
the QH isn't on the async list then it doesn't need to be taken off
the list, but the driver should still wait for the QH to become IDLE
before disabling it.

In theory this fixes Bugzilla #20182.  In fact the race is so rare
that it's not possible to tell whether the bug is still present.
However, adding delays and making other changes to force the race
seems to show that the patch works.

Signed-off-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Reported-by: Stefan Richter &lt;stefanr@s5r6.in-berlin.de&gt;
CC: David Brownell &lt;david-b@pacbell.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 02e2c51ba3e80acde600721ea784c3ef84da5ea1 upstream.

This patch (as1435) fixes an obscure and unlikely race in ehci-hcd.
When an async URB is unlinked, the corresponding QH is removed from
the async list.  If the QH's endpoint is then disabled while the URB
is being given back, ehci_endpoint_disable() won't find the QH on the
async list, causing it to believe that the QH has been lost.  This
will lead to a memory leak at best and quite possibly to an oops.

The solution is to trust usbcore not to lose track of endpoints.  If
the QH isn't on the async list then it doesn't need to be taken off
the list, but the driver should still wait for the QH to become IDLE
before disabling it.

In theory this fixes Bugzilla #20182.  In fact the race is so rare
that it's not possible to tell whether the bug is still present.
However, adding delays and making other changes to force the race
seems to show that the patch works.

Signed-off-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Reported-by: Stefan Richter &lt;stefanr@s5r6.in-berlin.de&gt;
CC: David Brownell &lt;david-b@pacbell.net&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>USB: ehci: fix debugfs 'lpm' permissions</title>
<updated>2010-12-09T21:33:06+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@suse.de</email>
</author>
<published>2010-11-15T19:15:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f5b7fbeba17cd006a20cca84ffda5b8e5c5454e8'/>
<id>f5b7fbeba17cd006a20cca84ffda5b8e5c5454e8</id>
<content type='text'>
commit 723b991a62d94f74c9f19abd3da6e937288eb969 upstream.

The permissions for the lpm debugfs file is incorrect, this fixes it.

Reported-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Cc: Alek Du &lt;alek.du@intel.com&gt;
Cc: Jacob Pan &lt;jacob.jun.pan@intel.com&gt;
Cc: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Cc: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 723b991a62d94f74c9f19abd3da6e937288eb969 upstream.

The permissions for the lpm debugfs file is incorrect, this fixes it.

Reported-by: Linus Torvalds &lt;torvalds@linux-foundation.org&gt;
Cc: Alek Du &lt;alek.du@intel.com&gt;
Cc: Jacob Pan &lt;jacob.jun.pan@intel.com&gt;
Cc: David Brownell &lt;dbrownell@users.sourceforge.net&gt;
Cc: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

</pre>
</div>
</content>
</entry>
</feed>
