Hotplug not working for USB 3.1 docking station on Dell XPS 13
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
[+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->USBbridge (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=0505: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
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
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