Re: Thunderbolt 3 (Skylake / Alpine Ridge) hotplug

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

 



[+cc Rafael, linux-acpi]

Hi Jack,

On Fri, Feb 26, 2016 at 07:10:03PM +1100, Jack Coulter wrote:
> 
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
> 
> Hi Andreas,
> 
> I was asking around on #linux-pci on OFTC and it was mentioned that you
> were the maintainer for Linux Thunderbolt support, and that I should
> direct my query to you and the linux-pci & linux-kernel lists.
> 
> I'm attempting to use the Thunderbolt 3 (which has a USB Type-C
> connector) port on my laptop, a Dell XPS 15 (9550). The external device
> I'm attempting to use is a gigabit ethernet + USB 3.0 hub, of an unknown
> / generic brand, but bears model number KY-688 if that's of any use.
> 
> When the device is present at system startup, everything works
> correctly, and shows up in lspci as a USB controller, which lsusb shows
> having a hub and ethernet NIC attached, which the r8152 driver binds and
> uses without issue:
> 
> lspci -v:
> > 0a:00.0 USB controller: Intel Corporation Device 15b5 (prog-if 30 [XHCI])
> >     Subsystem: Device 2222:1111
> >     Flags: bus master, fast devsel, latency 0, IRQ 131
> >     Memory at c4200000 (32-bit, non-prefetchable) [size=64K]
> >     Capabilities: [80] Power Management version 3
> >     Capabilities: [88] MSI: Enable+ Count=1/8 Maskable- 64bit+
> >     Capabilities: [c0] Express Endpoint, MSI 00
> >     Capabilities: [100] Device Serial Number a3-21-b5-60-a7-23-04-00
> >     Capabilities: [200] Advanced Error Reporting
> >     Capabilities: [300] Virtual Channel
> >     Capabilities: [400] Power Budgeting <?>
> >     Capabilities: [500] Vendor Specific Information: ID=1234 Rev=1
> Len=0d8 <?>
> >     Capabilities: [600] Latency Tolerance Reporting
> >     Capabilities: [700] #19
> >     Kernel driver in use: xhci_hcd
> 
> 
> lspci -tv (Thunderbolt device is 15b5)
> > -[0000:00]-+-00.0  Intel Corporation Sky Lake Host Bridge/DRAM Registers
> >            +-01.0-[01]----00.0  NVIDIA Corporation GM107M [GeForce GTX
> 960M]
> >            +-02.0  Intel Corporation Device 191b
> >            +-04.0  Intel Corporation Device 1903
> >            +-14.0  Intel Corporation Sunrise Point-H USB 3.0 xHCI
> Controller
> >            +-14.2  Intel Corporation Sunrise Point-H Thermal subsystem
> >            +-15.0  Intel Corporation Sunrise Point-H LPSS I2C
> Controller #0
> >            +-15.1  Intel Corporation Sunrise Point-H LPSS I2C
> Controller #1
> >            +-16.0  Intel Corporation Sunrise Point-H CSME HECI #1
> >            +-1c.0-[02]----00.0  Broadcom Corporation BCM43602 802.11ac
> Wireless LAN SoC
> >            +-1c.1-[03]----00.0  Realtek Semiconductor Co., Ltd. Device
> 525a
> >            +-1d.0-[04]----00.0  Samsung Electronics Co Ltd Device a802
> >            +-1d.4-[05]--
> >            +-1d.6-[06-3e]----00.0-[07-0a]--+-00.0-[08]--
> >            |                               +-01.0-[09]--
> >            |                               \-02.0-[0a]----00.0  Intel
> Corporation Device 15b5
> >            +-1f.0  Intel Corporation Sunrise Point-H LPC Controller
> >            +-1f.2  Intel Corporation Sunrise Point-H PMC
> >            +-1f.3  Intel Corporation Sunrise Point-H HD Audio
> >            \-1f.4  Intel Corporation Sunrise Point-H SMBus
> 
> lsusb -tv:
> > /:  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 1: Dev 3, If 0, Class=Vendor Specific Class,
> Driver=r8152, 5000M
> > /:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/2p, 480M
> >     |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
> >         |__ Port 3: Dev 3, If 0, Class=Human Interface Device,
> Driver=usbhid, 12M
> >         |__ Port 3: Dev 3, If 1, Class=Human Interface Device,
> Driver=usbhid, 12M
> >         |__ Port 3: Dev 3, If 2, Class=Human Interface Device,
> Driver=usbhid, 12M
> >         |__ Port 3: Dev 3, If 3, Class=Human Interface Device,
> Driver=usbhid, 12M
> > /:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/8p, 5000M
> > /:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/16p, 480M
> >     |__ Port 4: Dev 2, If 0, Class=Vendor Specific Class,
> Driver=btusb, 12M
> >     |__ Port 4: Dev 2, If 1, Class=Vendor Specific Class,
> Driver=btusb, 12M
> >     |__ Port 4: Dev 2, If 2, Class=Vendor Specific Class,
> Driver=btusb, 12M
> >     |__ Port 4: Dev 2, If 3, Class=Application Specific Interface,
> Driver=, 12M
> >     |__ Port 12: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
> >     |__ Port 12: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
> 
> 
> However, if the device is connected after the system boots (or
> disconnected and reconnected), it is not detected at all. No messages
> show up in dmesg upon connection and no additional devices show up in
> the output of lspci & lsusb. Strangely enough, USB devices connected to
> the external hub do still receive power.
> 
> I also have the following options relating to PCI hotplug set in my
> kernel config:
> 
> > CONFIG_HOTPLUG_PCI_PCIE=y
> > CONFIG_HOTPLUG_PCI=y
> > CONFIG_HOTPLUG_PCI_ACPI=y
> > CONFIG_HOTPLUG_PCI_ACPI_IBM=y
> 
> I'm running the 4.4.2 kernel, booted via EFI. From what I've read,
> Thunderbolt hotplug has been working since 3.17, controlled by the
> CONFIG_THUNDERBOLT option. However regardless of whether this option is
> enabled or disabled, hotplug does not appeare to work on my hardware.
> From reading the in-kernel help text for this option, I suspect that
> it's only relevant for the older Cactus Ridge Thunderbolt controller
> present in 2012-era MacBooks.

Can you open a report at http://bugzilla.kernel.org, category
drivers/PCI, and attach complete "lspci -vv" output (run as root) and
complete dmesg logs, both when hub is attached at boot, and when
booting without hub and attaching hub later?

I don't know much about Thunderbolt.  But since it appears as a PCI
device, I would expect some sort of hotplug notification when you
attach the hub.  If pciehp handles hotplug, it looks like we should
see something from pcie_isr() in the dmesg log.

Since you don't see that, I suspect we're getting ACPI notifications
via the acpiphp driver.  I'm not as familiar with that, so I don't
know what if anything it logs.  If you're inclined, you could add some
printks in

  acpiphp_add_context()
  acpi_device_hotplug()
  acpiphp_hotplug_notify()
  hotplug_event()

Then we'd at least see if we get any ACPI notifications.

Bjorn
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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