| From ac343366846a445bb81f0a0e8f16abb8bd5d5d88 Mon Sep 17 00:00:00 2001 |
| From: Kai-Heng Feng <kai.heng.feng@canonical.com> |
| Date: Fri, 4 Oct 2019 14:59:32 +0300 |
| Subject: xhci: Increase STS_SAVE timeout in xhci_suspend() |
| |
| From: Kai-Heng Feng <kai.heng.feng@canonical.com> |
| |
| commit ac343366846a445bb81f0a0e8f16abb8bd5d5d88 upstream. |
| |
| After commit f7fac17ca925 ("xhci: Convert xhci_handshake() to use |
| readl_poll_timeout_atomic()"), ASMedia xHCI may fail to suspend. |
| |
| Although the algorithms are essentially the same, the old max timeout is |
| (usec + usec * time of doing readl()), and the new max timeout is just |
| usec, which is much less than the old one. |
| |
| Increase the timeout to make ASMedia xHCI able to suspend again. |
| |
| BugLink: https://bugs.launchpad.net/bugs/1844021 |
| Fixes: f7fac17ca925 ("xhci: Convert xhci_handshake() to use readl_poll_timeout_atomic()") |
| Cc: <stable@vger.kernel.org> # v5.2+ |
| Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com> |
| Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com> |
| Link: https://lore.kernel.org/r/1570190373-30684-8-git-send-email-mathias.nyman@linux.intel.com |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/usb/host/xhci.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/usb/host/xhci.c |
| +++ b/drivers/usb/host/xhci.c |
| @@ -985,7 +985,7 @@ int xhci_suspend(struct xhci_hcd *xhci, |
| command |= CMD_CSS; |
| writel(command, &xhci->op_regs->command); |
| if (xhci_handshake(&xhci->op_regs->status, |
| - STS_SAVE, 0, 10 * 1000)) { |
| + STS_SAVE, 0, 20 * 1000)) { |
| xhci_warn(xhci, "WARN: xHC save state timeout\n"); |
| spin_unlock_irq(&xhci->lock); |
| return -ETIMEDOUT; |