[PATCH 0/2] USB 2.0 Link PM is broken

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Sigh.  It looks like yet another aspect of USB power management is
broken.  If you plug in a USB 3.0 device into a USB 2.0 port on Intel
Haswell-ULT systems, many devices fail to enumerate, or stop responding
to SCSI commands.

The end result is that many USB 3.0 devices simply don't work when
plugged into USB 2.0 ports, on either Ubuntu or ChromeOS (or any distro
that has the BESL support patches).  Bus traces are here, if anyone is
interested:

https://plus.google.com/photos/116960357493251979546/albums/5927302519338721425

This issue also shows up under Windows, and their solution was to
disable USB 2.0 Link PM for all devices, except for those that are on
internal ports, or external devices that advertise BESL support instead
of the older HIRD support in their USB 2.0 BOS descriptor.

The first patch disables USB 2.0 Link PM by default, and only re-enables
it when userspace writes 1 to
/sys/bus/usb/devices/../power/usb2_hardware_lpm.  Mathias is working on
a further patch to enable USB 2.0 Link PM for internal devices or
devices that have BESL support.

Julius reported that the same devices that fail under the Intel
Haswell-ULT host work fine under the Synopsys DesignWare3 xHCI host
controller, when the unmerged patch to enable USB 2.0 Link PM for
xhci-platform devices is applied:

http://marc.info/?l=linux-kernel&m=137704093406359&w=2

My hypothesis is that the Synopsys host doesn't go into L1 if the device
NAKs a transfer, only when the bus is idle.  That way, it doesn't have
to depend on L1 remote wakeup, which is broken for these devices.  I
don't have a way to confirm that though.  Paul, is the Synopsys host
working around these broken devices?

I do want to allow the Synopsys host to have USB 2.0 Link PM enabled if
the host has a way to work around these broken devices.  Paul and
Julius, let's work out a solution to do this on top of these patches.
I suspect that the solution may be to add an update_device method to
xhci-plat that sets udev->usb2_hw_lpm_allowed, calls xhci_update_device,
and then calls usb_set_usb2_hardware_lpm().  We'll have to wait for the
updated patches from Mathias though.

Sarah Sharp
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux