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]

 



OK, I'll try the two patches in the way you wrote. Does it matter if the patch from James (the one also suggested to me by Alan) stays applied as well?

The bug hasn't occurred since I applied the latter, but then again there were days before that when it didn't happen either.

Hard to really say if something works or not with a bug like this.

Andreas Reis

On 25.03.2014 17:34, Mathias Nyman wrote:
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