Re: [xhci_hcd] reset SuperSpeed, xhci_drop_endpoint called with disabled ep, Error in queuecommand_lck: task blocked

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

 



On 03/19/2014 01:37 PM, Andreas Reis wrote:
I've uploaded a dmesg with the new debugging patch to bugzilla:
https://bugzilla.kernel.org/attachment.cgi?id=130041

Andreas Reis

On 18.03.2014 15:57, Alan Stern wrote:>
 > The debugging information didn't go far enough.  Try the patch below
 > instead, which has some additional messages.
 >
 > There are two apparently separate problems here.  First, why was the
 > reset necessary?  As far as I can tell, the only explanation seems to
 > be a failure of Link Power Management.
 >
 > Second, why the errors in queuecommand_lck?  I suspect the answer to
 > that lies somewhere in the SCSI subystem, not USB.  The new debugging
 > patch should tell us for sure.
 >
 > Alan Stern
--
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

Hi

Alan and James solved the usb-storage side of this issue, now the LPM part remains.
Can you try if disabling link powermanagement removes the reset?

First try this patch, it only disables LPM for intel hosts. It will send the control messages but with values set to disable LPM.

diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 04f986d..6b1dae6 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -102,7 +102,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) if (pdev->vendor == PCI_VENDOR_ID_AMD && usb_amd_find_chipset_info())
                xhci->quirks |= XHCI_AMD_PLL_FIX;
        if (pdev->vendor == PCI_VENDOR_ID_INTEL) {
-               xhci->quirks |= XHCI_LPM_SUPPORT;
+               /* xhci->quirks |= XHCI_LPM_SUPPORT; */
                xhci->quirks |= XHCI_INTEL_HOST;
        }
        if (pdev->vendor == PCI_VENDOR_ID_INTEL &&


If that doesn't help, could you try the next patch. It will make sure
LPM control messages are never sent.

diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 64ea219..d734630 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -3711,6 +3711,9 @@ int usb_disable_lpm(struct usb_device *udev)
 {
        struct usb_hcd *hcd;

+       dev_info(&udev->dev, "usb_disable_lpm called, do nothing\n");
+       return 0;
+
        if (!udev || !udev->parent ||
                        udev->speed != USB_SPEED_SUPER ||
                        !udev->lpm_capable)
@@ -3767,6 +3770,9 @@ void usb_enable_lpm(struct usb_device *udev)
 {
        struct usb_hcd *hcd;

+       dev_info(&udev->dev, "usb_enable_lpm called, do nothing\n");
+       return;
+
        if (!udev || !udev->parent ||
                        udev->speed != USB_SPEED_SUPER ||
                        !udev->lpm_capable)


Both testpatches are added to bug
https://bugzilla.kernel.org/show_bug.cgi?id=70781

-Mathias

--
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