<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/usb/host, branch v4.1.26</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>xhci: fix 10 second timeout on removal of PCI hotpluggable xhci controllers</title>
<updated>2016-04-20T05:13:12+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=c5fcfe5f47e72526d2f015da39a92cb79e54a36d'/>
<id>c5fcfe5f47e72526d2f015da39a92cb79e54a36d</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-20T05:13:12+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=5d0b7d4792890a775d3765ba3e6e444b28c836cc'/>
<id>5d0b7d4792890a775d3765ba3e6e444b28c836cc</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-20T05:13:12+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=bd713f99caa8c08b9bbc57f7c19eefc2eca25fde'/>
<id>bd713f99caa8c08b9bbc57f7c19eefc2eca25fde</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-20T05:08:57+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=1edb54d144c10a0ddb9c83aa329d61b90966d667'/>
<id>1edb54d144c10a0ddb9c83aa329d61b90966d667</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>
<entry>
<title>xhci: resume USB 3 roothub first</title>
<updated>2016-04-20T05:08:57+00:00</updated>
<author>
<name>Mathias Nyman</name>
<email>mathias.nyman@linux.intel.com</email>
</author>
<published>2016-04-08T13:25:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=52b5bfb04674964c48e5ecaf07d536d7a929e779'/>
<id>52b5bfb04674964c48e5ecaf07d536d7a929e779</id>
<content type='text'>
[ Upstream commit 671ffdff5b13314b1fc65d62cf7604b873fb5dc4 ]

Give USB3 devices a better chance to enumerate at USB 3 speeds if
they are connected to a suspended host.
Solves an issue with NEC uPD720200 host hanging when partially
enumerating a USB3 device as USB2 after host controller runtime resume.

Cc: &lt;stable@vger.kernel.org&gt;
Tested-by: Mike Murdoch &lt;main.haarp@gmail.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 671ffdff5b13314b1fc65d62cf7604b873fb5dc4 ]

Give USB3 devices a better chance to enumerate at USB 3 speeds if
they are connected to a suspended host.
Solves an issue with NEC uPD720200 host hanging when partially
enumerating a USB3 device as USB2 after host controller runtime resume.

Cc: &lt;stable@vger.kernel.org&gt;
Tested-by: Mike Murdoch &lt;main.haarp@gmail.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: applying XHCI_PME_STUCK_QUIRK to Intel BXT B0 host</title>
<updated>2016-04-20T05:08:56+00:00</updated>
<author>
<name>Rafal Redzimski</name>
<email>rafal.f.redzimski@intel.com</email>
</author>
<published>2016-04-08T13:25:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=d49e9fc7997642421c13ef90760973320bd684b3'/>
<id>d49e9fc7997642421c13ef90760973320bd684b3</id>
<content type='text'>
[ Upstream commit 0d46faca6f887a849efb07c1655b5a9f7c288b45 ]

Broxton B0 also requires XHCI_PME_STUCK_QUIRK.
Adding PCI device ID for Broxton B and adding to quirk.

Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Rafal Redzimski &lt;rafal.f.redzimski@intel.com&gt;
Signed-off-by: Robert Dobrowolski &lt;robert.dobrowolski@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 0d46faca6f887a849efb07c1655b5a9f7c288b45 ]

Broxton B0 also requires XHCI_PME_STUCK_QUIRK.
Adding PCI device ID for Broxton B and adding to quirk.

Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Rafal Redzimski &lt;rafal.f.redzimski@intel.com&gt;
Signed-off-by: Robert Dobrowolski &lt;robert.dobrowolski@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>
<entry>
<title>xhci: Fix list corruption in urb dequeue at host removal</title>
<updated>2016-02-15T20:45:34+00:00</updated>
<author>
<name>Mathias Nyman</name>
<email>mathias.nyman@linux.intel.com</email>
</author>
<published>2016-01-26T15:50:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=8552bea30320cc866c7fb5d9a687c3e6d15fb5c1'/>
<id>8552bea30320cc866c7fb5d9a687c3e6d15fb5c1</id>
<content type='text'>
[ Upstream commit 5c82171167adb8e4ac77b91a42cd49fb211a81a0 ]

xhci driver frees data for all devices, both usb2 and and usb3 the
first time usb_remove_hcd() is called, including td_list and and xhci_ring
structures.

When usb_remove_hcd() is called a second time for the second xhci bus it
will try to dequeue all pending urbs, and touches td_list which is already
freed for that endpoint.

Cc: &lt;stable@vger.kernel.org&gt;
Reported-by: Joe Lawrence &lt;joe.lawrence@stratus.com&gt;
Tested-by: Joe Lawrence &lt;joe.lawrence@stratus.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 5c82171167adb8e4ac77b91a42cd49fb211a81a0 ]

xhci driver frees data for all devices, both usb2 and and usb3 the
first time usb_remove_hcd() is called, including td_list and and xhci_ring
structures.

When usb_remove_hcd() is called a second time for the second xhci bus it
will try to dequeue all pending urbs, and touches td_list which is already
freed for that endpoint.

Cc: &lt;stable@vger.kernel.org&gt;
Reported-by: Joe Lawrence &lt;joe.lawrence@stratus.com&gt;
Tested-by: Joe Lawrence &lt;joe.lawrence@stratus.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: apply XHCI_PME_STUCK_QUIRK to Intel Broxton-M platforms</title>
<updated>2016-02-15T20:45:34+00:00</updated>
<author>
<name>Lu Baolu</name>
<email>baolu.lu@linux.intel.com</email>
</author>
<published>2016-01-26T15:50:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=4c54b01e7221db1d14ef2506ac0b81f9ff69e26f'/>
<id>4c54b01e7221db1d14ef2506ac0b81f9ff69e26f</id>
<content type='text'>
[ Upstream commit ccc04afb72cddbdf7c0e1c17e92886405a71b754 ]

Intel Broxton M was verifed to require XHCI_PME_STUCK_QUIRK quirk as well.

Cc: stable@vger.kernel.org
Signed-off-by: Lu Baolu &lt;baolu.lu@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 ccc04afb72cddbdf7c0e1c17e92886405a71b754 ]

Intel Broxton M was verifed to require XHCI_PME_STUCK_QUIRK quirk as well.

Cc: stable@vger.kernel.org
Signed-off-by: Lu Baolu &lt;baolu.lu@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>
<entry>
<title>usb: xhci: set SSIC port unused only if xhci_suspend succeeds</title>
<updated>2016-02-15T20:45:34+00:00</updated>
<author>
<name>Lu Baolu</name>
<email>baolu.lu@linux.intel.com</email>
</author>
<published>2016-01-26T15:50:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=c6fd1e6a4ffcfaf6fd6409e8fc3ada2e0cbd247d'/>
<id>c6fd1e6a4ffcfaf6fd6409e8fc3ada2e0cbd247d</id>
<content type='text'>
[ Upstream commit 92149c930cce1865d0d4aca2ab07c2b4b197b418 ]

XHCI_SSIC_PORT_UNUSED quirk was applied to the xHCI host controllers
in some Intel SoC chips.  With this quirk applied, SSIC port is set
to "unused" prior to xhci_suspend(). This may cause problem if host
fails to suspend.  In this case, the port is set to unused without
host further entering D3, and the port will not be usable anymore.

Cc: stable@vger.kernel.org
Signed-off-by: Zhuang Jin Can &lt;jin.can.zhuang@intel.com&gt;
Signed-off-by: Lu Baolu &lt;baolu.lu@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 92149c930cce1865d0d4aca2ab07c2b4b197b418 ]

XHCI_SSIC_PORT_UNUSED quirk was applied to the xHCI host controllers
in some Intel SoC chips.  With this quirk applied, SSIC port is set
to "unused" prior to xhci_suspend(). This may cause problem if host
fails to suspend.  In this case, the port is set to unused without
host further entering D3, and the port will not be usable anymore.

Cc: stable@vger.kernel.org
Signed-off-by: Zhuang Jin Can &lt;jin.can.zhuang@intel.com&gt;
Signed-off-by: Lu Baolu &lt;baolu.lu@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>
<entry>
<title>usb: xhci: add a quirk bit for ssic port unused</title>
<updated>2016-02-15T20:45:33+00:00</updated>
<author>
<name>Lu Baolu</name>
<email>baolu.lu@linux.intel.com</email>
</author>
<published>2016-01-26T15:50:06+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=1f8ad5557c9910b9853830ef202d092aa43806c9'/>
<id>1f8ad5557c9910b9853830ef202d092aa43806c9</id>
<content type='text'>
[ Upstream commit 7e70cbffe236721051bbaff965e477df06dcb190 ]

Two workarounds introduced by commit b8cb91e058cd ("xhci: Workaround
for PME stuck issues in Intel xhci") and commit abce329c27b3 ("xhci:
Workaround to get D3 working in Intel xHCI") share a single quirk bit
XHCI_PME_STUCK_QUIRK. These two workarounds actually are different and
might happen on different hardwares. Need to separate them by adding a
quirk bit for the later.

Cc: stable@vger.kernel.org
Signed-off-by: Lu Baolu &lt;baolu.lu@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 7e70cbffe236721051bbaff965e477df06dcb190 ]

Two workarounds introduced by commit b8cb91e058cd ("xhci: Workaround
for PME stuck issues in Intel xhci") and commit abce329c27b3 ("xhci:
Workaround to get D3 working in Intel xHCI") share a single quirk bit
XHCI_PME_STUCK_QUIRK. These two workarounds actually are different and
might happen on different hardwares. Need to separate them by adding a
quirk bit for the later.

Cc: stable@vger.kernel.org
Signed-off-by: Lu Baolu &lt;baolu.lu@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>
