<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/usb, branch v3.18.34</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>USB: serial: cp210x: add Straizona Focusers device ids</title>
<updated>2016-05-17T18:31:53+00:00</updated>
<author>
<name>Jasem Mutlaq</name>
<email>mutlaqja@ikarustech.com</email>
</author>
<published>2016-04-19T07:38:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=68b3d8c0190d7d3ec635704280c792f11c981f54'/>
<id>68b3d8c0190d7d3ec635704280c792f11c981f54</id>
<content type='text'>
[ Upstream commit 613ac23a46e10d4d4339febdd534fafadd68e059 ]

Adding VID:PID for Straizona Focusers to cp210x driver.

Signed-off-by: Jasem Mutlaq &lt;mutlaqja@ikarustech.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 613ac23a46e10d4d4339febdd534fafadd68e059 ]

Adding VID:PID for Straizona Focusers to cp210x driver.

Signed-off-by: Jasem Mutlaq &lt;mutlaqja@ikarustech.com&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>USB: serial: cp210x: add ID for Link ECU</title>
<updated>2016-05-17T18:31:47+00:00</updated>
<author>
<name>Mike Manning</name>
<email>michael@bsch.com.au</email>
</author>
<published>2016-04-18T12:13:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9018dc05e2e8459099fbb3f020e5846d6ec3ef4d'/>
<id>9018dc05e2e8459099fbb3f020e5846d6ec3ef4d</id>
<content type='text'>
[ Upstream commit 1d377f4d690637a0121eac8701f84a0aa1e69a69 ]

The Link ECU is an aftermarket ECU computer for vehicles that provides
full tuning abilities as well as datalogging and displaying capabilities
via the USB to Serial adapter built into the device.

Signed-off-by: Mike Manning &lt;michael@bsch.com.au&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 1d377f4d690637a0121eac8701f84a0aa1e69a69 ]

The Link ECU is an aftermarket ECU computer for vehicles that provides
full tuning abilities as well as datalogging and displaying capabilities
via the USB to Serial adapter built into the device.

Signed-off-by: Mike Manning &lt;michael@bsch.com.au&gt;
Cc: stable &lt;stable@vger.kernel.org&gt;
Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Revert "usb: hub: do not clear BOS field during reset device"</title>
<updated>2016-05-13T02:02:24+00:00</updated>
<author>
<name>Greg Kroah-Hartman</name>
<email>gregkh@linuxfoundation.org</email>
</author>
<published>2016-02-20T22:19:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=65b49b662365b54d3c372734a8591b404a43397f'/>
<id>65b49b662365b54d3c372734a8591b404a43397f</id>
<content type='text'>
This reverts commit f9b3d78ac42bda9cd30e4c6d0149dba7067c402c.

Tony writes:

This upstream commit is causing an oops:
d8f00cd685f5 ("usb: hub: do not clear BOS field during reset device")

This patch has already been included in several -stable kernels.  Here
are the affected kernels:
4.5.0-rc4 (current git)
4.4.2
4.3.6 (currently in review)
4.1.18
3.18.27
3.14.61

How to reproduce the problem:
Boot kernel with slub debugging enabled (otherwise memory corruption
will cause random oopses later instead of immediately)
Plug in USB 3.0 disk to xhci USB 3.0 port
dd if=/dev/sdc of=/dev/null bs=65536
(where /dev/sdc is the USB 3.0 disk)
Unplug USB cable while dd is still going
Oops is immediate:

Reported-by: Tony Battersby &lt;tonyb@cybernetics.com&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This reverts commit f9b3d78ac42bda9cd30e4c6d0149dba7067c402c.

Tony writes:

This upstream commit is causing an oops:
d8f00cd685f5 ("usb: hub: do not clear BOS field during reset device")

This patch has already been included in several -stable kernels.  Here
are the affected kernels:
4.5.0-rc4 (current git)
4.4.2
4.3.6 (currently in review)
4.1.18
3.18.27
3.14.61

How to reproduce the problem:
Boot kernel with slub debugging enabled (otherwise memory corruption
will cause random oopses later instead of immediately)
Plug in USB 3.0 disk to xhci USB 3.0 port
dd if=/dev/sdc of=/dev/null bs=65536
(where /dev/sdc is the USB 3.0 disk)
Unplug USB cable while dd is still going
Oops is immediate:

Reported-by: Tony Battersby &lt;tonyb@cybernetics.com&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: musb: cppi41: correct the macro name EP_MODE_AUTOREG_*</title>
<updated>2016-04-21T11:58:08+00:00</updated>
<author>
<name>Bin Liu</name>
<email>b-liu@ti.com</email>
</author>
<published>2015-01-26T22:22:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e1ae108d141866e3ac73aa31575027271b8d42c4'/>
<id>e1ae108d141866e3ac73aa31575027271b8d42c4</id>
<content type='text'>
[ Upstream commit 0149b07a9e28b0d8bd2fc1c238ffe7d530c2673f ]

The macro EP_MODE_AUTOREG_* should be called EP_MODE_AUTOREQ_*, as they
are used for register AUTOREQ.

Signed-off-by: Bin Liu &lt;b-liu@ti.com&gt;
Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 0149b07a9e28b0d8bd2fc1c238ffe7d530c2673f ]

The macro EP_MODE_AUTOREG_* should be called EP_MODE_AUTOREQ_*, as they
are used for register AUTOREQ.

Signed-off-by: Bin Liu &lt;b-liu@ti.com&gt;
Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: hcd: out of bounds access in for_each_companion</title>
<updated>2016-04-20T13:41:07+00:00</updated>
<author>
<name>Robert Dobrowolski</name>
<email>robert.dobrowolski@linux.intel.com</email>
</author>
<published>2016-03-24T10:30:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c1ffc7c90954257b66b17eff3a0732dfe449f853'/>
<id>c1ffc7c90954257b66b17eff3a0732dfe449f853</id>
<content type='text'>
[ Upstream commit e86103a75705c7c530768f4ffaba74cf382910f2 ]

On BXT platform Host Controller and Device Controller figure as
same PCI device but with different device function. HCD should
not pass data to Device Controller but only to Host Controllers.
Checking if companion device is Host Controller, otherwise skip.

Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Robert Dobrowolski &lt;robert.dobrowolski@linux.intel.com&gt;
Acked-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit e86103a75705c7c530768f4ffaba74cf382910f2 ]

On BXT platform Host Controller and Device Controller figure as
same PCI device but with different device function. HCD should
not pass data to Device Controller but only to Host Controllers.
Checking if companion device is Host Controller, otherwise skip.

Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Robert Dobrowolski &lt;robert.dobrowolski@linux.intel.com&gt;
Acked-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>USB: uas: Add a new NO_REPORT_LUNS quirk</title>
<updated>2016-04-20T13:41:07+00:00</updated>
<author>
<name>Hans de Goede</name>
<email>hdegoede@redhat.com</email>
</author>
<published>2016-04-12T10:27:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=e6102e3b2f80d5af732587b9f254619a608cbf39'/>
<id>e6102e3b2f80d5af732587b9f254619a608cbf39</id>
<content type='text'>
[ Upstream commit 1363074667a6b7d0507527742ccd7bbed5e3ceaa ]

Add a new NO_REPORT_LUNS quirk and set it for Seagate drives with
an usb-id of: 0bc2:331a, as these will fail to respond to a
REPORT_LUNS command.

Cc: stable@vger.kernel.org
Reported-and-tested-by: David Webb &lt;djw@noc.ac.uk&gt;
Signed-off-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Acked-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 1363074667a6b7d0507527742ccd7bbed5e3ceaa ]

Add a new NO_REPORT_LUNS quirk and set it for Seagate drives with
an usb-id of: 0bc2:331a, as these will fail to respond to a
REPORT_LUNS command.

Cc: stable@vger.kernel.org
Reported-and-tested-by: David Webb &lt;djw@noc.ac.uk&gt;
Signed-off-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Acked-by: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>xhci: fix 10 second timeout on removal of PCI hotpluggable xhci controllers</title>
<updated>2016-04-20T13:41:06+00:00</updated>
<author>
<name>Mathias Nyman</name>
<email>mathias.nyman@linux.intel.com</email>
</author>
<published>2016-04-08T13:25:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=ef6d6f5865629591d63561fd12ae01931c77a80a'/>
<id>ef6d6f5865629591d63561fd12ae01931c77a80a</id>
<content type='text'>
[ Upstream commit 98d74f9ceaefc2b6c4a6440050163a83be0abede ]

PCI hotpluggable xhci controllers such as some Alpine Ridge solutions will
remove the xhci controller from the PCI bus when the last USB device is
disconnected.

Add a flag to indicate that the host is being removed to avoid queueing
configure_endpoint commands for the dropped endpoints.
For PCI hotplugged controllers this will prevent 5 second command timeouts
For static xhci controllers the configure_endpoint command is not needed
in the removal case as everything will be returned, freed, and the
controller is reset.

For now the flag is only set for PCI connected host controllers.

Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Mathias Nyman &lt;mathias.nyman@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 98d74f9ceaefc2b6c4a6440050163a83be0abede ]

PCI hotpluggable xhci controllers such as some Alpine Ridge solutions will
remove the xhci controller from the PCI bus when the last USB device is
disconnected.

Add a flag to indicate that the host is being removed to avoid queueing
configure_endpoint commands for the dropped endpoints.
For PCI hotplugged controllers this will prevent 5 second command timeouts
For static xhci controllers the configure_endpoint command is not needed
in the removal case as everything will be returned, freed, and the
controller is reset.

For now the flag is only set for PCI connected host controllers.

Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Mathias Nyman &lt;mathias.nyman@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: xhci: fix xhci locking up during hcd remove</title>
<updated>2016-04-20T13:41:06+00:00</updated>
<author>
<name>Roger Quadros</name>
<email>rogerq@ti.com</email>
</author>
<published>2015-05-29T14:01:49+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=797648b968a85d6d79253f5899f8c0de5e942ac5'/>
<id>797648b968a85d6d79253f5899f8c0de5e942ac5</id>
<content type='text'>
[ Upstream commit ad6b1d914a9e07f3b9a9ae3396f3c840d0070539 ]

The problem seems to be that if a new device is detected
while we have already removed the shared HCD, then many of the
xhci operations (e.g.  xhci_alloc_dev(), xhci_setup_device())
hang as command never completes.

I don't think XHCI can operate without the shared HCD as we've
already called xhci_halt() in xhci_only_stop_hcd() when shared HCD
goes away. We need to prevent new commands from being queued
not only when HCD is dying but also when HCD is halted.

The following lockup was detected while testing the otg state
machine.

[  178.199951] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
[  178.205799] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
[  178.214458] xhci-hcd xhci-hcd.0.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x00010010
[  178.223619] xhci-hcd xhci-hcd.0.auto: irq 400, io mem 0x48890000
[  178.230677] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[  178.237796] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  178.245358] usb usb1: Product: xHCI Host Controller
[  178.250483] usb usb1: Manufacturer: Linux 4.0.0-rc1-00024-g6111320 xhci-hcd
[  178.257783] usb usb1: SerialNumber: xhci-hcd.0.auto
[  178.267014] hub 1-0:1.0: USB hub found
[  178.272108] hub 1-0:1.0: 1 port detected
[  178.278371] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
[  178.284171] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2
[  178.294038] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[  178.301183] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  178.308776] usb usb2: Product: xHCI Host Controller
[  178.313902] usb usb2: Manufacturer: Linux 4.0.0-rc1-00024-g6111320 xhci-hcd
[  178.321222] usb usb2: SerialNumber: xhci-hcd.0.auto
[  178.329061] hub 2-0:1.0: USB hub found
[  178.333126] hub 2-0:1.0: 1 port detected
[  178.567585] dwc3 48890000.usb: usb_otg_start_host 0
[  178.572707] xhci-hcd xhci-hcd.0.auto: remove, state 4
[  178.578064] usb usb2: USB disconnect, device number 1
[  178.586565] xhci-hcd xhci-hcd.0.auto: USB bus 2 deregistered
[  178.592585] xhci-hcd xhci-hcd.0.auto: remove, state 1
[  178.597924] usb usb1: USB disconnect, device number 1
[  178.603248] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[  190.597337] INFO: task kworker/u4:0:6 blocked for more than 10 seconds.
[  190.604273]       Not tainted 4.0.0-rc1-00024-g6111320 #1058
[  190.610228] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  190.618443] kworker/u4:0    D c05c0ac0     0     6      2 0x00000000
[  190.625120] Workqueue: usb_otg usb_otg_work
[  190.629533] [&lt;c05c0ac0&gt;] (__schedule) from [&lt;c05c10ac&gt;] (schedule+0x34/0x98)
[  190.636915] [&lt;c05c10ac&gt;] (schedule) from [&lt;c05c1318&gt;] (schedule_preempt_disabled+0xc/0x10)
[  190.645591] [&lt;c05c1318&gt;] (schedule_preempt_disabled) from [&lt;c05c23d0&gt;] (mutex_lock_nested+0x1ac/0x3fc)
[  190.655353] [&lt;c05c23d0&gt;] (mutex_lock_nested) from [&lt;c046cf8c&gt;] (usb_disconnect+0x3c/0x208)
[  190.664043] [&lt;c046cf8c&gt;] (usb_disconnect) from [&lt;c0470cf0&gt;] (_usb_remove_hcd+0x98/0x1d8)
[  190.672535] [&lt;c0470cf0&gt;] (_usb_remove_hcd) from [&lt;c0485da8&gt;] (usb_otg_start_host+0x50/0xf4)
[  190.681299] [&lt;c0485da8&gt;] (usb_otg_start_host) from [&lt;c04849a4&gt;] (otg_set_protocol+0x5c/0xd0)
[  190.690153] [&lt;c04849a4&gt;] (otg_set_protocol) from [&lt;c0484b88&gt;] (otg_set_state+0x170/0xbfc)
[  190.698735] [&lt;c0484b88&gt;] (otg_set_state) from [&lt;c0485740&gt;] (otg_statemachine+0x12c/0x470)
[  190.707326] [&lt;c0485740&gt;] (otg_statemachine) from [&lt;c0053c84&gt;] (process_one_work+0x1b4/0x4a0)
[  190.716162] [&lt;c0053c84&gt;] (process_one_work) from [&lt;c00540f8&gt;] (worker_thread+0x154/0x44c)
[  190.724742] [&lt;c00540f8&gt;] (worker_thread) from [&lt;c0058f88&gt;] (kthread+0xd4/0xf0)
[  190.732328] [&lt;c0058f88&gt;] (kthread) from [&lt;c000e810&gt;] (ret_from_fork+0x14/0x24)
[  190.739898] 5 locks held by kworker/u4:0/6:
[  190.744274]  #0:  ("%s""usb_otg"){.+.+.+}, at: [&lt;c0053bf4&gt;] process_one_work+0x124/0x4a0
[  190.752799]  #1:  ((&amp;otgd-&gt;work)){+.+.+.}, at: [&lt;c0053bf4&gt;] process_one_work+0x124/0x4a0
[  190.761326]  #2:  (&amp;otgd-&gt;fsm.lock){+.+.+.}, at: [&lt;c048562c&gt;] otg_statemachine+0x18/0x470
[  190.769934]  #3:  (usb_bus_list_lock){+.+.+.}, at: [&lt;c0470ce8&gt;] _usb_remove_hcd+0x90/0x1d8
[  190.778635]  #4:  (&amp;dev-&gt;mutex){......}, at: [&lt;c046cf8c&gt;] usb_disconnect+0x3c/0x208
[  190.786700] INFO: task kworker/1:0:14 blocked for more than 10 seconds.
[  190.793633]       Not tainted 4.0.0-rc1-00024-g6111320 #1058
[  190.799567] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  190.807783] kworker/1:0     D c05c0ac0     0    14      2 0x00000000
[  190.814457] Workqueue: usb_hub_wq hub_event
[  190.818866] [&lt;c05c0ac0&gt;] (__schedule) from [&lt;c05c10ac&gt;] (schedule+0x34/0x98)
[  190.826252] [&lt;c05c10ac&gt;] (schedule) from [&lt;c05c4e40&gt;] (schedule_timeout+0x13c/0x1ec)
[  190.834377] [&lt;c05c4e40&gt;] (schedule_timeout) from [&lt;c05c19f0&gt;] (wait_for_common+0xbc/0x150)
[  190.843062] [&lt;c05c19f0&gt;] (wait_for_common) from [&lt;bf068a3c&gt;] (xhci_setup_device+0x164/0x5cc [xhci_hcd])
[  190.852986] [&lt;bf068a3c&gt;] (xhci_setup_device [xhci_hcd]) from [&lt;c046b7f4&gt;] (hub_port_init+0x3f4/0xb10)
[  190.862667] [&lt;c046b7f4&gt;] (hub_port_init) from [&lt;c046eb64&gt;] (hub_event+0x704/0x1018)
[  190.870704] [&lt;c046eb64&gt;] (hub_event) from [&lt;c0053c84&gt;] (process_one_work+0x1b4/0x4a0)
[  190.878919] [&lt;c0053c84&gt;] (process_one_work) from [&lt;c00540f8&gt;] (worker_thread+0x154/0x44c)
[  190.887503] [&lt;c00540f8&gt;] (worker_thread) from [&lt;c0058f88&gt;] (kthread+0xd4/0xf0)
[  190.895076] [&lt;c0058f88&gt;] (kthread) from [&lt;c000e810&gt;] (ret_from_fork+0x14/0x24)
[  190.902650] 5 locks held by kworker/1:0/14:
[  190.907023]  #0:  ("usb_hub_wq"){.+.+.+}, at: [&lt;c0053bf4&gt;] process_one_work+0x124/0x4a0
[  190.915454]  #1:  ((&amp;hub-&gt;events)){+.+.+.}, at: [&lt;c0053bf4&gt;] process_one_work+0x124/0x4a0
[  190.924070]  #2:  (&amp;dev-&gt;mutex){......}, at: [&lt;c046e490&gt;] hub_event+0x30/0x1018
[  190.931768]  #3:  (&amp;port_dev-&gt;status_lock){+.+.+.}, at: [&lt;c046eb50&gt;] hub_event+0x6f0/0x1018
[  190.940558]  #4:  (&amp;bus-&gt;usb_address0_mutex){+.+.+.}, at: [&lt;c046b458&gt;] hub_port_init+0x58/0xb10

Signed-off-by: Roger Quadros &lt;rogerq@ti.com&gt;
Signed-off-by: Mathias Nyman &lt;mathias.nyman@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit ad6b1d914a9e07f3b9a9ae3396f3c840d0070539 ]

The problem seems to be that if a new device is detected
while we have already removed the shared HCD, then many of the
xhci operations (e.g.  xhci_alloc_dev(), xhci_setup_device())
hang as command never completes.

I don't think XHCI can operate without the shared HCD as we've
already called xhci_halt() in xhci_only_stop_hcd() when shared HCD
goes away. We need to prevent new commands from being queued
not only when HCD is dying but also when HCD is halted.

The following lockup was detected while testing the otg state
machine.

[  178.199951] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
[  178.205799] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 1
[  178.214458] xhci-hcd xhci-hcd.0.auto: hcc params 0x0220f04c hci version 0x100 quirks 0x00010010
[  178.223619] xhci-hcd xhci-hcd.0.auto: irq 400, io mem 0x48890000
[  178.230677] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[  178.237796] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  178.245358] usb usb1: Product: xHCI Host Controller
[  178.250483] usb usb1: Manufacturer: Linux 4.0.0-rc1-00024-g6111320 xhci-hcd
[  178.257783] usb usb1: SerialNumber: xhci-hcd.0.auto
[  178.267014] hub 1-0:1.0: USB hub found
[  178.272108] hub 1-0:1.0: 1 port detected
[  178.278371] xhci-hcd xhci-hcd.0.auto: xHCI Host Controller
[  178.284171] xhci-hcd xhci-hcd.0.auto: new USB bus registered, assigned bus number 2
[  178.294038] usb usb2: New USB device found, idVendor=1d6b, idProduct=0003
[  178.301183] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[  178.308776] usb usb2: Product: xHCI Host Controller
[  178.313902] usb usb2: Manufacturer: Linux 4.0.0-rc1-00024-g6111320 xhci-hcd
[  178.321222] usb usb2: SerialNumber: xhci-hcd.0.auto
[  178.329061] hub 2-0:1.0: USB hub found
[  178.333126] hub 2-0:1.0: 1 port detected
[  178.567585] dwc3 48890000.usb: usb_otg_start_host 0
[  178.572707] xhci-hcd xhci-hcd.0.auto: remove, state 4
[  178.578064] usb usb2: USB disconnect, device number 1
[  178.586565] xhci-hcd xhci-hcd.0.auto: USB bus 2 deregistered
[  178.592585] xhci-hcd xhci-hcd.0.auto: remove, state 1
[  178.597924] usb usb1: USB disconnect, device number 1
[  178.603248] usb 1-1: new high-speed USB device number 2 using xhci-hcd
[  190.597337] INFO: task kworker/u4:0:6 blocked for more than 10 seconds.
[  190.604273]       Not tainted 4.0.0-rc1-00024-g6111320 #1058
[  190.610228] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  190.618443] kworker/u4:0    D c05c0ac0     0     6      2 0x00000000
[  190.625120] Workqueue: usb_otg usb_otg_work
[  190.629533] [&lt;c05c0ac0&gt;] (__schedule) from [&lt;c05c10ac&gt;] (schedule+0x34/0x98)
[  190.636915] [&lt;c05c10ac&gt;] (schedule) from [&lt;c05c1318&gt;] (schedule_preempt_disabled+0xc/0x10)
[  190.645591] [&lt;c05c1318&gt;] (schedule_preempt_disabled) from [&lt;c05c23d0&gt;] (mutex_lock_nested+0x1ac/0x3fc)
[  190.655353] [&lt;c05c23d0&gt;] (mutex_lock_nested) from [&lt;c046cf8c&gt;] (usb_disconnect+0x3c/0x208)
[  190.664043] [&lt;c046cf8c&gt;] (usb_disconnect) from [&lt;c0470cf0&gt;] (_usb_remove_hcd+0x98/0x1d8)
[  190.672535] [&lt;c0470cf0&gt;] (_usb_remove_hcd) from [&lt;c0485da8&gt;] (usb_otg_start_host+0x50/0xf4)
[  190.681299] [&lt;c0485da8&gt;] (usb_otg_start_host) from [&lt;c04849a4&gt;] (otg_set_protocol+0x5c/0xd0)
[  190.690153] [&lt;c04849a4&gt;] (otg_set_protocol) from [&lt;c0484b88&gt;] (otg_set_state+0x170/0xbfc)
[  190.698735] [&lt;c0484b88&gt;] (otg_set_state) from [&lt;c0485740&gt;] (otg_statemachine+0x12c/0x470)
[  190.707326] [&lt;c0485740&gt;] (otg_statemachine) from [&lt;c0053c84&gt;] (process_one_work+0x1b4/0x4a0)
[  190.716162] [&lt;c0053c84&gt;] (process_one_work) from [&lt;c00540f8&gt;] (worker_thread+0x154/0x44c)
[  190.724742] [&lt;c00540f8&gt;] (worker_thread) from [&lt;c0058f88&gt;] (kthread+0xd4/0xf0)
[  190.732328] [&lt;c0058f88&gt;] (kthread) from [&lt;c000e810&gt;] (ret_from_fork+0x14/0x24)
[  190.739898] 5 locks held by kworker/u4:0/6:
[  190.744274]  #0:  ("%s""usb_otg"){.+.+.+}, at: [&lt;c0053bf4&gt;] process_one_work+0x124/0x4a0
[  190.752799]  #1:  ((&amp;otgd-&gt;work)){+.+.+.}, at: [&lt;c0053bf4&gt;] process_one_work+0x124/0x4a0
[  190.761326]  #2:  (&amp;otgd-&gt;fsm.lock){+.+.+.}, at: [&lt;c048562c&gt;] otg_statemachine+0x18/0x470
[  190.769934]  #3:  (usb_bus_list_lock){+.+.+.}, at: [&lt;c0470ce8&gt;] _usb_remove_hcd+0x90/0x1d8
[  190.778635]  #4:  (&amp;dev-&gt;mutex){......}, at: [&lt;c046cf8c&gt;] usb_disconnect+0x3c/0x208
[  190.786700] INFO: task kworker/1:0:14 blocked for more than 10 seconds.
[  190.793633]       Not tainted 4.0.0-rc1-00024-g6111320 #1058
[  190.799567] "echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs" disables this message.
[  190.807783] kworker/1:0     D c05c0ac0     0    14      2 0x00000000
[  190.814457] Workqueue: usb_hub_wq hub_event
[  190.818866] [&lt;c05c0ac0&gt;] (__schedule) from [&lt;c05c10ac&gt;] (schedule+0x34/0x98)
[  190.826252] [&lt;c05c10ac&gt;] (schedule) from [&lt;c05c4e40&gt;] (schedule_timeout+0x13c/0x1ec)
[  190.834377] [&lt;c05c4e40&gt;] (schedule_timeout) from [&lt;c05c19f0&gt;] (wait_for_common+0xbc/0x150)
[  190.843062] [&lt;c05c19f0&gt;] (wait_for_common) from [&lt;bf068a3c&gt;] (xhci_setup_device+0x164/0x5cc [xhci_hcd])
[  190.852986] [&lt;bf068a3c&gt;] (xhci_setup_device [xhci_hcd]) from [&lt;c046b7f4&gt;] (hub_port_init+0x3f4/0xb10)
[  190.862667] [&lt;c046b7f4&gt;] (hub_port_init) from [&lt;c046eb64&gt;] (hub_event+0x704/0x1018)
[  190.870704] [&lt;c046eb64&gt;] (hub_event) from [&lt;c0053c84&gt;] (process_one_work+0x1b4/0x4a0)
[  190.878919] [&lt;c0053c84&gt;] (process_one_work) from [&lt;c00540f8&gt;] (worker_thread+0x154/0x44c)
[  190.887503] [&lt;c00540f8&gt;] (worker_thread) from [&lt;c0058f88&gt;] (kthread+0xd4/0xf0)
[  190.895076] [&lt;c0058f88&gt;] (kthread) from [&lt;c000e810&gt;] (ret_from_fork+0x14/0x24)
[  190.902650] 5 locks held by kworker/1:0/14:
[  190.907023]  #0:  ("usb_hub_wq"){.+.+.+}, at: [&lt;c0053bf4&gt;] process_one_work+0x124/0x4a0
[  190.915454]  #1:  ((&amp;hub-&gt;events)){+.+.+.}, at: [&lt;c0053bf4&gt;] process_one_work+0x124/0x4a0
[  190.924070]  #2:  (&amp;dev-&gt;mutex){......}, at: [&lt;c046e490&gt;] hub_event+0x30/0x1018
[  190.931768]  #3:  (&amp;port_dev-&gt;status_lock){+.+.+.}, at: [&lt;c046eb50&gt;] hub_event+0x6f0/0x1018
[  190.940558]  #4:  (&amp;bus-&gt;usb_address0_mutex){+.+.+.}, at: [&lt;c046b458&gt;] hub_port_init+0x58/0xb10

Signed-off-by: Roger Quadros &lt;rogerq@ti.com&gt;
Signed-off-by: Mathias Nyman &lt;mathias.nyman@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: xhci: fix wild pointers in xhci_mem_cleanup</title>
<updated>2016-04-20T13:41:05+00:00</updated>
<author>
<name>Lu Baolu</name>
<email>baolu.lu@linux.intel.com</email>
</author>
<published>2016-04-08T13:25:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b37a6dfe19c77bbdf063679ab3b28c8b13282189'/>
<id>b37a6dfe19c77bbdf063679ab3b28c8b13282189</id>
<content type='text'>
[ Upstream commit 71504062a7c34838c3fccd92c447f399d3cb5797 ]

This patch fixes some wild pointers produced by xhci_mem_cleanup.
These wild pointers will cause system crash if xhci_mem_cleanup()
is called twice.

Reported-and-tested-by: Pengcheng Li &lt;lpc.li@hisilicon.com&gt;
Signed-off-by: Lu Baolu &lt;baolu.lu@linux.intel.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Mathias Nyman &lt;mathias.nyman@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 71504062a7c34838c3fccd92c447f399d3cb5797 ]

This patch fixes some wild pointers produced by xhci_mem_cleanup.
These wild pointers will cause system crash if xhci_mem_cleanup()
is called twice.

Reported-and-tested-by: Pengcheng Li &lt;lpc.li@hisilicon.com&gt;
Signed-off-by: Lu Baolu &lt;baolu.lu@linux.intel.com&gt;
Cc: stable@vger.kernel.org
Signed-off-by: Mathias Nyman &lt;mathias.nyman@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: host: xhci: add a new quirk XHCI_NO_64BIT_SUPPORT</title>
<updated>2016-04-20T13:41:04+00:00</updated>
<author>
<name>Yoshihiro Shimoda</name>
<email>yoshihiro.shimoda.uh@renesas.com</email>
</author>
<published>2016-04-08T13:25:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=f1aa53dc77f70a97a879b97990fb07b1c6e8ef57'/>
<id>f1aa53dc77f70a97a879b97990fb07b1c6e8ef57</id>
<content type='text'>
[ Upstream commit 0a380be8233dbf8dd20795b801c5d5d5ef3992f7 ]

On some xHCI controllers (e.g. R-Car SoCs), the AC64 bit (bit 0) of
HCCPARAMS1 is set to 1. However, the xHCs don't support 64-bit
address memory pointers actually. So, in this case, this driver should
call dma_set_coherent_mask(dev, DMA_BIT_MASK(32)) in xhci_gen_setup().
Otherwise, the xHCI controller will be died after a usb device is
connected if it runs on above 4GB physical memory environment.

So, this patch adds a new quirk XHCI_NO_64BIT_SUPPORT to resolve
such an issue.

Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Yoshihiro Shimoda &lt;yoshihiro.shimoda.uh@renesas.com&gt;
Reviewed-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Mathias Nyman &lt;mathias.nyman@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 0a380be8233dbf8dd20795b801c5d5d5ef3992f7 ]

On some xHCI controllers (e.g. R-Car SoCs), the AC64 bit (bit 0) of
HCCPARAMS1 is set to 1. However, the xHCs don't support 64-bit
address memory pointers actually. So, in this case, this driver should
call dma_set_coherent_mask(dev, DMA_BIT_MASK(32)) in xhci_gen_setup().
Otherwise, the xHCI controller will be died after a usb device is
connected if it runs on above 4GB physical memory environment.

So, this patch adds a new quirk XHCI_NO_64BIT_SUPPORT to resolve
such an issue.

Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Yoshihiro Shimoda &lt;yoshihiro.shimoda.uh@renesas.com&gt;
Reviewed-by: Felipe Balbi &lt;felipe.balbi@linux.intel.com&gt;
Signed-off-by: Mathias Nyman &lt;mathias.nyman@linux.intel.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
</feed>
