Linux-USB Archive on lore.kernel.org
 help / color / Atom feed
From: Mathias Nyman <mathias.nyman@linux.intel.com>
To: Kai-Heng Feng <kai.heng.feng@canonical.com>,
	Felipe Balbi <felipe.balbi@linux.intel.com>
Cc: Oliver Neukum <oneukum@suse.com>,
	Mika Westerberg <mika.westerberg@linux.intel.com>,
	Kent Lin <kent.lin@canonical.com>,
	Linux PCI <linux-pci@vger.kernel.org>,
	Linux USB List <linux-usb@vger.kernel.org>
Subject: Re: Titan Ridge xHCI may stop to working after re-plugging the dock
Date: Wed, 24 Jul 2019 17:45:36 +0300
Message-ID: <8113f4a4-e96e-9b73-cd7a-1dbb800d68bb@linux.intel.com> (raw)
In-Reply-To: <749516DB-65B6-4D59-8C77-7883649D1F25@canonical.com>

On 22.7.2019 12.44, Kai-Heng Feng wrote:
>>>>>> Hi Mika and Mathias,
>>>>>>
>>>>>> I’ve filed a bug [1] which renders docking station unusable.
>>>>>>
>>>>>> I am not sure it's a bug in PCI, Thunderbolt or xHCI so raise the issue
>>>>>> to
>>>>>> you both.
>>>>>>
>>>>>> [1] https://bugzilla.kernel.org/show_bug.cgi?id=203885
>>>>>>
>>>>>> Kai-Heng
>>>>>
>>>
>>> I upgraded the system firmware, TBT firmware and docking station firmware
>>> to latest, and used latest mainline kernel.
>>> Now the issue can be reproduced at the very first time I plugged the
>>> docking station.
>>>
> 
> Request log attached to Bugzilla.
> 

After docking station unplug we see Transfer errors from
devices connected to Titan Ridge xHC, driver tries to recover, fails,
usb devices are disconnected.

After this xhci driver runtime suspends xHC controller as runtime pm is allowed
by default for Titan Ridge xHC controllers.

Interesting parts from log:

>>> Unplug Docking Station <<<

[  328.102279] xhci_hcd 0000:39:00.0: Transfer error for slot 36 ep 6 on endpoint
[  328.118279] xhci_hcd 0000:39:00.0: Transfer error for slot 36 ep 6 on endpoint
[  328.134291] xhci_hcd 0000:39:00.0: Transfer error for slot 36 ep 6 on endpoint
[  328.150355] xhci_hcd 0000:39:00.0: Transfer error for slot 36 ep 6 on endpoint
[  328.166342] xhci_hcd 0000:39:00.0: Transfer error for slot 36 ep 6 on endpoint
[  332.178710] usb usb4-port2: Cannot enable. Maybe the USB cable is bad?
[  332.178765] usb 4-2: USB disconnect, device number 35
[  332.178769] usb 4-2.3: USB disconnect, device number 36
[  332.179973] usb 4-2.4: USB disconnect, device number 37
[  332.414618] xhci_hcd 0000:39:00.0: set port remote wake mask, actual port 0 status  = 0xe0002a0
[  332.414639] xhci_hcd 0000:39:00.0: set port remote wake mask, actual port 1 status  = 0xe0002b0
[  332.414693] xhci_hcd 0000:39:00.0: xhci_hub_status_data: stopping port polling.
[  332.414703] xhci_hcd 0000:39:00.0: xhci_suspend: stopping port polling.
[  332.414719] xhci_hcd 0000:39:00.0: // Setting command ring address to 0x487da9001

>>> Plug Docking Station <<<

[  346.455568] pci_raw_set_power_state: 25 callbacks suppressed
[  346.455574] xhci_hcd 0000:39:00.0: Refused to change power state, currently in D3
[  346.539451] xhci_hcd 0000:39:00.0: enabling device (0000 -> 0002)
[  346.539482] xhci_hcd 0000:39:00.0: // Setting command ring address to 0x487da903f
[  346.539487] xhci_hcd 0000:39:00.0: WARN: xHC restore state timeout
[  346.539489] xhci_hcd 0000:39:00.0: PCI post-resume error -110!
[  346.539490] xhci_hcd 0000:39:00.0: HC died; cleaning up

>>> We don't have 0000:39:00 anymore <<<

When docking station is plugged back we try to resume Titan Ridge xHC,
PCI log shows that changing power state to D0 failed, xHC is still in D3.
Resume process continues anyway, and xhci driver tries to restore state, but fails.
Usb core will assume HC died if the pci resume callback failed

Does disabling runtime PM for Titan Ridge xHC help?

-Mathias

  reply index

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-09 13:10 Kai-Heng Feng
2019-07-10 11:49 ` Oliver Neukum
2019-07-19  7:23   ` Felipe Balbi
2019-07-19 10:29     ` Kai Heng Feng
2019-07-19 10:51       ` Felipe Balbi
2019-07-22  9:44         ` Kai-Heng Feng
2019-07-24 14:45           ` Mathias Nyman [this message]
2019-07-25 13:24             ` Kai-Heng Feng
2019-08-13  6:50               ` Kai-Heng Feng
2019-08-14 13:34                 ` Mathias Nyman

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8113f4a4-e96e-9b73-cd7a-1dbb800d68bb@linux.intel.com \
    --to=mathias.nyman@linux.intel.com \
    --cc=felipe.balbi@linux.intel.com \
    --cc=kai.heng.feng@canonical.com \
    --cc=kent.lin@canonical.com \
    --cc=linux-pci@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=mika.westerberg@linux.intel.com \
    --cc=oneukum@suse.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Linux-USB Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-usb/0 linux-usb/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-usb linux-usb/ https://lore.kernel.org/linux-usb \
		linux-usb@vger.kernel.org
	public-inbox-index linux-usb

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-usb


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git