Re: Titan Ridge xHCI may stop to working after re-plugging the dock

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

 



Hi Felipe,

at 18:51, Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> wrote:


Hi,

Kai Heng Feng <kai.heng.feng@xxxxxxxxxxxxx> writes:
Oliver Neukum <oneukum@xxxxxxxx> writes:
Am Dienstag, den 09.07.2019, 21:10 +0800 schrieb Kai-Heng Feng:
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

The issue starts before you unplug. In fact it starts before
the dock is even detected the first time:

[   13.171167] rfkill: input handler disabled
[   19.781905] pcieport 0000:00:1c.0: PME: Spurious native interrupt!
[   19.781909] pcieport 0000:00:1c.0: PME: Spurious native interrupt!
[   20.109251] usb 4-1: new SuperSpeedPlus Gen 2 USB device number 2
using xhci_hcd
[   20.136000] usb 4-1: New USB device found, idVendor=0bda,
idProduct=0487, bcdDevice= 1.47
[   20.136004] usb 4-1: New USB device strings: Mfr=1, Product=2,
SerialNumber=0
[   20.136007] usb 4-1: Product: Dell dock
[   20.136009] usb 4-1: Manufacturer: Dell Inc.
[   20.140607] hub 4-1:1.0: USB hub found
[   20.141004] hub 4-1:1.0: 4 ports detected
[ 20.253025] usb 1-4: new high-speed USB device number 5 using xhci_hcd
[   20.403520] usb 1-4: New USB device found, idVendor=0bda,
idProduct=5487, bcdDevice= 1.47
[   20.403521] usb 1-4: New USB device strings: Mfr=1, Product=2,
SerialNumber=0
[   20.403522] usb 1-4: Product: Dell dock
[   20.403522] usb 1-4: Manufacturer: Dell Inc.
[   20.404348] hub 1-4:1.0: USB hub found

This looks like a PCI issue.
In general, this kind of reporting sucks. We have to guess what you did
at 19.781905

It might be nice to know which device is generating that and why it's
not found. This may help:

diff --git a/drivers/pci/pcie/pme.c b/drivers/pci/pcie/pme.c
index f38e6c19dd50..33285ef29362 100644
--- a/drivers/pci/pcie/pme.c
+++ b/drivers/pci/pcie/pme.c
@@ -203,7 +203,7 @@ static void pcie_pme_handle_request(struct pci_dev
*port, u16 req_id)

  out:
 	if (!found)
-		pci_info(port, "Spurious native interrupt!\n");
+		pci_info(port, "Spurious native interrupt! (Bus# %d DevFn
%d)\n", busnr, devfn);
 }

 /**


Also, according to what Kai-Heng said, xHCI stops working even after
repluggin the Dock. We could be dealing with two bugs here:

1. Spurious PME event being generated by an unexistent device
2. xHCI not handling hot-plug very well

Kai-Heng,

please run your tests again and make note of when you unplugged the dock
and when you replugged it so we can correlate the time stampts with what
you have done otherwise we will never be able to pin-point what's going
on.

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.

Attach dmesg to BKO since there are lots of message after XHCI dyndbg is
enabled.

I saw that you annotated the plug, but not the unplug. Where does the
unplug start? There are many places where it could be, but I need to be
sure.

Request log attached to Bugzilla.


Also, wasn't it so that the problem is when you *replug* the dock? So
can you better describe what you're doing? Are you booting with dock
connected then disconnect and reconnect or are you booting without dock
and it fails on first plug?

The weird behavior I described in my previous replay is because the devices need to be fully power cycled after firmware upgrade.
So it’s false alarm.

The only issue now is the original bug.


What are you consider a fail here? Can't you see the xhci bus? USB
Devices don't show? What do you have on lsusb -t?

The 0000:39:00.0 xHCI stops working, so the USB ethernet (r8152) connects to it doesn’t work anymore.

Normal case:
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 3: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 4: Dev 4, If 0, Class=Vendor Specific Class, Driver=r8152, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
    |__ Port 4: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ Port 5: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 480M
        |__ Port 3: Dev 4, If 0, Class=Hub, Driver=hub/6p, 480M
            |__ Port 4: Dev 7, If 0, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 4: Dev 7, If 3, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 4: Dev 7, If 1, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 4: Dev 7, If 2, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 5: Dev 9, If 0, Class=Human Interface Device, Driver=usbhid, 480M
    |__ Port 9: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 10: Dev 5, If 2, Class=Chip/SmartCard, Driver=, 480M
    |__ Port 10: Dev 5, If 0, Class=Application Specific Interface, Driver=, 480M
    |__ Port 10: Dev 5, If 3, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 10: Dev 5, If 1, Class=Chip/SmartCard, Driver=, 480M
    |__ Port 11: Dev 8, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 11: Dev 8, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 14: Dev 10, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 14: Dev 10, If 1, Class=Wireless, Driver=btusb, 12M

Once the issue occurs:
/:  Bus 04.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 5000M
/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/10p, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
    |__ Port 4: Dev 2, If 0, Class=Hub, Driver=hub/5p, 480M
        |__ Port 5: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 480M
        |__ Port 3: Dev 4, If 0, Class=Hub, Driver=hub/6p, 480M
            |__ Port 4: Dev 7, If 0, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 4: Dev 7, If 3, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 4: Dev 7, If 1, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 4: Dev 7, If 2, Class=Audio, Driver=snd-usb-audio, 480M
            |__ Port 5: Dev 9, If 0, Class=Human Interface Device, Driver=usbhid, 480M
    |__ Port 9: Dev 3, If 0, Class=Human Interface Device, Driver=usbhid, 12M
    |__ Port 10: Dev 5, If 2, Class=Chip/SmartCard, Driver=, 480M
    |__ Port 10: Dev 5, If 0, Class=Application Specific Interface, Driver=, 480M
    |__ Port 10: Dev 5, If 3, Class=Vendor Specific Class, Driver=, 480M
    |__ Port 10: Dev 5, If 1, Class=Chip/SmartCard, Driver=, 480M
    |__ Port 11: Dev 8, If 0, Class=Video, Driver=uvcvideo, 480M
    |__ Port 11: Dev 8, If 1, Class=Video, Driver=uvcvideo, 480M
    |__ Port 14: Dev 10, If 0, Class=Wireless, Driver=btusb, 12M
    |__ Port 14: Dev 10, If 1, Class=Wireless, Driver=btusb, 12M

So we don’t have USB ethernet anymore.

Kai-Heng


Best regards

--
balbi





[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux