Skip to contentSkip to conversation

Hotplug not working for USB 3.1 docking station on Dell XPS 13

DISCUSSION Richard van der Hoff 2 participants 4 messages Aug 24, 2016 – Aug 25, 2016 PCI

lore
Share & tools
lore
#0 lore raw

Hi,

I'm having problems with a Plugable USB-C docking station, with my laptop, a Dell XPS 13 (9350). If the docking station is plugged in at boot, it works correctly; however, when I hotplug it after boot, the USB devices are not detected until I force a rescan of the PCI bus.

I have also raised this as a bug at https://bugzilla.kernel.org/show_bug.cgi?id=151261. There are some dmesg traces and lspci logs attached to that bug.

The lspci output suggests a chain of three PCI bridges (00:1c.0, 01:00.0, 02:02.0) before a PCI->USB bridge (05:00.0 or 39:00.0). If I boot without the docking station plugged in, 01:00.0 and beyond do not appear, and nor do they appear on hotplug. However, if I hotplug the docking station and then force a rescan with "echo 1 > /sys/bus/pci/devices/0000:00:1c.0/rescan", the PCI bridges and USB devices appear and spring into life.

My impression, and feedback from the linux-usb mailing list, is therefore that this is a PCI hotplug problem.

There are some ACPI errors in the dmesg at hotplug but they don't really mean much to me.

I'd really appreciate any suggestions on how to proceed with this.

Thanks

Richard van der Hoff

#1 lore raw

[+cc Andreas, linux-kernel]

Quoted 18 lines · Richard van der Hoff

I'm having problems with a Plugable USB-C docking station, with my laptop, a Dell XPS 13 (9350). If the docking station is plugged in at boot, it works correctly; however, when I hotplug it after boot, the USB devices are not detected until I force a rescan of the PCI bus.

I have also raised this as a bug at
https://bugzilla.kernel.org/show_bug.cgi?id=151261. There are some dmesg traces and lspci logs attached to that bug.

The lspci output suggests a chain of three PCI bridges (00:1c.0, 01:00.0, 02:02.0) before a PCI->USB bridge (05:00.0 or 39:00.0). If I boot without the docking station plugged in, 01:00.0 and beyond do not appear, and nor do they appear on hotplug. However, if I hotplug the docking station and then force a rescan with "echo 1 > /sys/bus/pci/devices/0000:00:1c.0/rescan", the PCI bridges and USB devices appear and spring into life.

Quoted 2 lines

My impression, and feedback from the linux-usb mailing list, is therefore that this is a PCI hotplug problem.

Please include a pointer to the linux-usb analysis.

Quoted 4 lines

There are some ACPI errors in the dmesg at hotplug but they don't really mean much to me.

From https://bugzilla.kernel.org/attachment.cgi?id=227331 (dock

present at boot):

00:1c.0 PCI bridge: Intel Device 9d10 (PCIe Root Port)

    Bus: primary=00, secondary=01, subordinate=39
  01:00.0 PCI bridge: Intel Device 1576 (Alpine Ridge Thunderbolt)
    Bus: primary=01, secondary=02, subordinate=05
  02:02.0 PCI bridge: Intel Device 1576 (Alpine Ridge Thunderbolt)
    Bus: primary=02, secondary=05, subordinate=05

05:00.0 USB controller: Intel Device 15b5 (Alpine Ridge USB 3.1)

01:00.0 and 02:02.0 are ports of a Thunderbolt switch. Since they don't appear when you boot without the docking station, the dock connection must be between 00:1c.0 and 01:00.0.

Quoted 1 line

From the kernel's point of view, plugging in the dock would be a PCIe

hotplug event on 00:1c.0 that should be handled by pciehp. Do you have pciehp included in your kernel?

Bjorn

#2 lore raw
Quoted 9 lines · Bjorn Helgaas

[+cc Andreas, linux-kernel]

Quoted 4 lines · Richard van der Hoff

I'm having problems with a Plugable USB-C docking station, with my laptop, a Dell XPS 13 (9350). ...
My impression, and feedback from the linux-usb mailing list, is therefore that this is a PCI hotplug problem.

Please include a pointer to the linux-usb analysis.

For the record, here: http://marc.info/?l=linux-usb&m=147204147226274&w=2, however:

Quoted 3 lines

From the kernel's point of view, plugging in the dock would be a PCIe
hotplug event on 00:1c.0 that should be handled by pciehp. Do you have pciehp included in your kernel?

I did not; now I do, and it works perfectly. Thank you! A case of it being incredibly obvious once you know what you are looking for.

Quoted 3 lines

01:00.0 and 02:02.0 are ports of a Thunderbolt switch. Since they don't appear when you boot without the docking station, the dock connection must be between 00:1c.0 and 01:00.0.

This would strike me as surprising - the dock bills itself as a USB-C device, and the Thunderbolt devices look like they are part of the laptop chipset to me. To me it seems more likely that those PCI devices are part of the laptop, but are powered down until something is plugged into the USB-C port.

Still, this is splitting hairs; the point is that they are hotplugged PCI devices which need pciehp.

Thanks again for the pointer.

Best regards

Richard

#3 lore raw
Quoted 9 lines · Richard van der Hoff
Quoted 8 lines · Bjorn Helgaas

[+cc Andreas, linux-kernel]

Quoted 4 lines · Richard van der Hoff

I'm having problems with a Plugable USB-C docking station, with my laptop, a Dell XPS 13 (9350). ...
My impression, and feedback from the linux-usb mailing list, is therefore that this is a PCI hotplug problem.

Quoted 4 lines
Quoted 1 line

Please include a pointer to the linux-usb analysis.

For the record, here:
http://marc.info/?l=linux-usb&m=147204147226274&w=2, however:

Huh, turns out you and Oliver were right about it being a PCI problem. But it would have saved some time to know how Oliver decided that. Otherwise it's just "he said, she said."

Quoted 11 lines
Quoted 3 lines

From the kernel's point of view, plugging in the dock would be a PCIe hotplug event on 00:1c.0 that should be handled by pciehp. Do you have pciehp included in your kernel?

I did not; now I do, and it works perfectly. Thank you! A case of it being incredibly obvious once you know what you are looking for.

Quoted 3 lines

01:00.0 and 02:02.0 are ports of a Thunderbolt switch. Since they don't appear when you boot without the docking station, the dock connection must be between 00:1c.0 and 01:00.0.

Quoted 5 lines

This would strike me as surprising - the dock bills itself as a USB-C device, and the Thunderbolt devices look like they are part of the laptop chipset to me. To me it seems more likely that those PCI devices are part of the laptop, but are powered down until something is plugged into the USB-C port.

Yep, I agree, that sounds like a better theory. Glad it's working now.

Bjorn