Re: usb3 hdd docking station doesn't work with recent kernels

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

 



On Tue, Jan 14, 2014 at 10:04:46AM -0500, Alan Stern wrote:
> On Tue, 14 Jan 2014, Sergey Galanov wrote:
> 
> > Hi Oliver.
> > Yes, reverting that commit fixes the problem (I did it on top of 3.13rc8).
> > 
> > On 13 January 2014 14:05, Oliver Neukum <oliver@xxxxxxxxxx> wrote:
> > > On Sun, 2014-01-12 at 14:12 +0400, Sergey Galanov wrote:
> > >> Hi.
> > >> My hdd docking station (AgeStar 3UBT with usb3 support) stopped
> > >> working after upgrade to linux 3.12.3. It worked fine in 3.12.0 and
> > >> before. I can't point to more specific version because it's hard to
> > >> find old packages for my distro (ArchLinux). I also tried 3.12.6,
> > >> 3.12.7 and 3.13rc7 and the problem persists.
> > >
> > > This is not good. My bet is on 60e102ac73cd40069d077014c93c86dc7205cb68
> > > Could you revert that? If that doesn't do the job, I think you'll need
> > > to bisect.
> 
> Bear in mind that this doesn't mean there's anything wrong with the 
> commit.  In this case, it appears to be a bug in the hardware.  The 
> commit merely exposes the bug, by allowing the kernel to use a feature 
> it wasn't using before.

Sergey, with that commit reverted, please send me the `lsusb -v` output
when the docking station is attached.

Also, please send the output of `sudo lspci -vvv -n`.

Alan, I believe your analysis of the code was incorrect when you asked
Xenia to create commit 60e102ac73cd40069d077014c93c86dc7205cb68 in
August:

http://marc.info/?l=linux-usb&m=137780837109921&w=2

You asked her to set lpm_capable because you thought it simply wasn't
being set at all.  You overlooked the xHCI driver setting lpm_capable in
drivers/usb/host/xhci-pci.c.

The xHCI driver only sets lpm_capable for xHCI host controllers that it
knows how to calculate the U1/U2 timeout values for.  Since those
timeout values are highly dependent on how the xHCI host hardware
scheduling works, I've only enabled USB 3.0 Link PM for Intel hosts:

static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
{
...
        if (pdev->vendor == PCI_VENDOR_ID_INTEL) {
                xhci->quirks |= XHCI_LPM_SUPPORT;
                xhci->quirks |= XHCI_INTEL_HOST;
        }

static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
{
...
        /* We know the LPM timeout algorithms for this host, let the USB core
         * enable and disable LPM for devices under the USB 3.0 roothub.
         */
        if (xhci->quirks & XHCI_LPM_SUPPORT)
                hcd_to_bus(xhci->shared_hcd)->root_hub->lpm_capable = 1;

lpm_capable shouldn't be set for hosts where we don't know how to
calculate the U1/U2 timeout values, so commit
60e102ac73cd40069d077014c93c86dc7205cb68 should just be reverted.

It could also be that Sergey has an Intel host controller, and the
device simply barfs when USB 3.0 Link PM is enabled.  In that case,
we'll have to figure out a work-around (perhaps by disabling lpm for the
device all together if it doesn't respond to the Set SEL control
transfer).

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