Re: xhci: Reset Renesas uPD72020x USB controller for 32-bit DMA issue

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

 



On Sun, 24 Dec 2017 23:01:33 +0000,
Troy Kisky wrote:
> 
> commit 8466489ef5ba48272ba4fa4ea9f8f403306de4c7
> Author: Marc Zyngier <marc.zyngier@xxxxxxx>
> Date:   Tue Aug 1 20:11:08 2017 -0500
> 
>     xhci: Reset Renesas uPD72020x USB controller for 32-bit DMA issue
> ...
> ...
> ...
> --- a/drivers/usb/host/xhci-pci.c
> +++ b/drivers/usb/host/xhci-pci.c
> @@ -284,6 +284,13 @@ static int xhci_pci_probe(struct pci_dev *dev, const struct pci_device_id *id)
> 
>         driver = (struct hc_driver *)id->driver_data;
> 
> +       /* For some HW implementation, a XHCI reset is just not enough... */
> +       if (usb_xhci_needs_pci_reset(dev)) {
> +               dev_info(&dev->dev, "Resetting\n");
> +               if (pci_reset_function_locked(dev))
> +                       dev_warn(&dev->dev, "Reset failed");
> +       }
> +
> ________
> 
> 
> This pci_reset_function_locked call, causes my i.mx6qp processor to
> hang. It no longer responds to the MAGIC_SYSRQ key (break on serial
> port).
> 
> 
> If I comment it out, things return to normal when testing on
> Linux-next (20171222).
> 
> If you need more info, let me know.

Well, for a start:

- Does it fail with 4.13 or 4.14 too?
- Can you work out where it is locking up exactly (going slightly
  deeper than the pci_reset_function_locked() call)?
- Do you get the symptom at boot time? On resume? Is the USB driver
  compiled as a module or built-in?
- What is your exact platform (something a bit more precise than just
  i.MX6...)?

Thanks,

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