Bug 115931

Summary: Thunderbolt 3 dock not working on Dell XPS 13 9350
Product: Drivers Reporter: Martin Andersson (martin.andersson)
Component: PCIAssignee: drivers_pci (drivers_pci)
Status: NEW ---    
Severity: normal CC: damien, frankshin82, frederik.schwan, ikoptev, prarit, q3aiml+kernel, raniere
Priority: P1    
Hardware: Intel   
OS: Linux   
Kernel Version: 4.5.0-rc6 Subsystem:
Regression: No Bisected commit-id:
Attachments: dmesg with dock attached on boot
lscpi -vv with dock attached on boot
lsusb -vv with dock attached on boot
Dmesg of dock working with dsmethod patch

Description Martin Andersson 2016-04-05 21:25:22 UTC
I have a Dell XPS 13 9350 laptop with a Dell Thunderbolt 3 dock (TB15)
that I'm trying to get to talk to each other.

* The dock appears as a usb hub when I run lspci and lsusb but I can't see any usb devices that I attach or the audio and network controllers in the dock
* If I attach the dock after boot not even the usb hub shows up

All firmware is updated as of 2016 apr 05

Could be related to https://bugzilla.kernel.org/show_bug.cgi?id=115121
Comment 1 Martin Andersson 2016-04-05 21:26:10 UTC
Created attachment 211851 [details]
dmesg with dock attached on boot
Comment 2 Martin Andersson 2016-04-05 21:26:57 UTC
Created attachment 211861 [details]
lscpi -vv with dock attached on boot
Comment 3 Martin Andersson 2016-04-05 21:27:24 UTC
Created attachment 211871 [details]
lsusb -vv with dock attached on boot
Comment 4 Prarit Bhargava 2016-04-07 15:05:48 UTC
Martin, please try 

http://marc.info/?l=linux-acpi&m=145929159015853&w=2

and let us know if it works.  Users in 

https://bugzilla.kernel.org/show_bug.cgi?id=115121

have had positive testing results.

Thanks,

P.
Comment 5 Prarit Bhargava 2016-04-07 15:35:21 UTC
Oh wait.  Sorry, I just noticed your issue is with the DOCK.

Yes -- the Thunderbolt3 dock will NOT work with Linux ATM because of a lack of support :(.  The 0x1576 ID has been introduced via a pci_id patchset, however, no support exists yet for it.

What the above patch will do, however, is at least prevent the system from hanging or spitting out task hung messages, so the test is still worthwhile IMO.

P.
Comment 6 Martin Andersson 2016-04-08 12:53:34 UTC
Thanks for the feedback!

I will try the patch and report back.

The patch doesn't apply on 4.6-rc2 though but I can try it on 4.5.

Regarding thunderbolt3, that's what I thought. Dell are supposedly working with Intel to get it implemented [1]. But who want's to wait? ;)

[1] http://en.community.dell.com/techcenter/os-applications/f/4613/p/19678284/20890806?rfsh=1457684236357
Comment 7 Martin Andersson 2016-04-08 13:31:07 UTC
Sorry, the patch does apply. I'm compiling a kernel right now.
Comment 8 Martin Andersson 2016-04-08 14:53:45 UTC
This is what happens when i hotplug in 4.6-rc2 (from dmesg):

[53663.089646] ACPI Error: [\_SB_.PCI0.LPCB.H_EC.CHRG] Namespace lookup failure, AE_NOT_FOUND (20160108/psargs-359)
[53663.089651] ACPI Error: Method parse/execution failed [\PNOT] (Node ffff88046e0ce4b0), AE_NOT_FOUND (20160108/psparse-542)
[53663.089655] ACPI Error: Method parse/execution failed [\_SB.AC._PSR] (Node ffff88046e0e12a8), AE_NOT_FOUND (20160108/psparse-542)
[53663.089659] ACPI Exception: AE_NOT_FOUND, Error reading AC Adapter state (20160108/ac-128)

I have no issues with hung tasks.

This happens when I unplug the dock:

[53750.575424] ACPI Error: [\_SB_.PCI0.LPCB.H_EC.CHRG] Namespace lookup failure, AE_NOT_FOUND (20160108/psargs-359)
[53750.575446] ACPI Error: Method parse/execution failed [\PNOT] (Node ffff88046e0ce4b0), AE_NOT_FOUND (20160108/psparse-542)
[53750.575452] ACPI Error: Method parse/execution failed [\_SB.AC._PSR] (Node ffff88046e0e12a8), AE_NOT_FOUND (20160108/psparse-542)
[53750.575466] ACPI Exception: AE_NOT_FOUND, Error reading AC Adapter state (20160108/ac-128)

With the patch applied the kernel detects a bunch of new pci-devices. As expected the dock is not functional but it is at least detected!

4.6-rc2+patch hotplug:

[   66.296077] ACPI Error: [SPRT] Namespace lookup failure, AE_ALREADY_EXISTS (20160108/dswload2-330)
[   66.296083] ACPI Exception: AE_ALREADY_EXISTS, During name lookup/catalog (20160108/psobject-227)
[   66.296085] ACPI Error: Method parse/execution failed [\_GPE._E42] (Node ffff88046e0cee38), AE_ALREADY_EXISTS (20160108/psparse-542)
[   66.296091] ACPI Error: Method parse/execution failed [\_GPE._E42] (Node ffff88046e0cee38), AE_ALREADY_EXISTS (20160108/psparse-542)
[   66.296096] ACPI Exception: AE_ALREADY_EXISTS, while evaluating GPE method [_E42] (20160108/evgpe-592)
[   66.349057] pci 0000:01:00.0: [8086:1576] type 01 class 0x060400
[   66.349245] pci 0000:01:00.0: supports D1 D2
[   66.349248] pci 0000:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   66.349432] pci 0000:01:00.0: System wakeup disabled by ACPI
[   66.351799] pci 0000:02:00.0: [8086:1576] type 01 class 0x060400
[   66.351993] pci 0000:02:00.0: supports D1 D2
[   66.351996] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   66.352171] pci 0000:02:01.0: [8086:1576] type 01 class 0x060400
[   66.352346] pci 0000:02:01.0: supports D1 D2
[   66.352348] pci 0000:02:01.0: PME# supported from D0 D1 D2 D3hot D3cold
[   66.352506] pci 0000:02:02.0: [8086:1576] type 01 class 0x060400
[   66.352679] pci 0000:02:02.0: supports D1 D2
[   66.352681] pci 0000:02:02.0: PME# supported from D0 D1 D2 D3hot D3cold
[   66.352877] pci 0000:01:00.0: PCI bridge to [bus 02-39]
[   66.352888] pci 0000:01:00.0:   bridge window [mem 0xc4000000-0xda0fffff]
[   66.352906] pci 0000:01:00.0:   bridge window [mem 0xa0000000-0xc1ffffff 64bit pref]
[   66.353010] pci 0000:03:00.0: [8086:1575] type 00 class 0x088000
[   66.353043] pci 0000:03:00.0: reg 0x10: [mem 0xda000000-0xda03ffff]
[   66.353067] pci 0000:03:00.0: reg 0x14: [mem 0xda040000-0xda040fff]
[   66.353282] pci 0000:03:00.0: supports D1 D2
[   66.353284] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[   66.353464] pci 0000:02:00.0: PCI bridge to [bus 03]
[   66.353486] pci 0000:02:00.0:   bridge window [mem 0xda000000-0xda0fffff]
[   66.353583] pci 0000:02:01.0: PCI bridge to [bus 04-38]
[   66.353604] pci 0000:02:01.0:   bridge window [mem 0xc4000000-0xd9efffff]
[   66.353611] pci 0000:02:01.0:   bridge window [mem 0xa0000000-0xc1ffffff 64bit pref]
[   66.353696] pci 0000:02:02.0: PCI bridge to [bus 39]
[   66.353705] pci 0000:02:02.0:   bridge window [mem 0xd9f00000-0xd9ffffff]
[   66.353749] pci_bus 0000:02: Allocating resources
[   66.353819] pci 0000:02:01.0: bridge window [io  0x1000-0x0fff] to [bus 04-38] add_size 1000
[   66.353850] pci 0000:02:01.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 1000 min_align 1000
[   66.353852] pci 0000:01:00.0: bridge window [io  0x1000-0x0fff] to [bus 02-39] add_size 1000
[   66.353855] pci 0000:01:00.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 1000 min_align 1000
[   66.353857] pci 0000:01:00.0: res[13]=[io  0x1000-0x1fff] res_to_dev_res add_size 1000 min_align 1000
[   66.353860] pci 0000:01:00.0: BAR 13: assigned [io  0x2000-0x2fff]
[   66.353863] pci 0000:02:01.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 1000 min_align 1000
[   66.353865] pci 0000:02:01.0: res[13]=[io  0x1000-0x1fff] res_to_dev_res add_size 1000 min_align 1000
[   66.353867] pci 0000:02:01.0: BAR 13: assigned [io  0x2000-0x2fff]
[   66.353869] pci 0000:02:00.0: PCI bridge to [bus 03]
[   66.353876] pci 0000:02:00.0:   bridge window [mem 0xda000000-0xda0fffff]
[   66.353897] pci 0000:02:01.0: PCI bridge to [bus 04-38]
[   66.353900] pci 0000:02:01.0:   bridge window [io  0x2000-0x2fff]
[   66.353906] pci 0000:02:01.0:   bridge window [mem 0xc4000000-0xd9efffff]
[   66.353911] pci 0000:02:01.0:   bridge window [mem 0xa0000000-0xc1ffffff 64bit pref]
[   66.353918] pci 0000:02:02.0: PCI bridge to [bus 39]
[   66.353935] pci 0000:02:02.0:   bridge window [mem 0xd9f00000-0xd9ffffff]
[   66.353945] pci 0000:01:00.0: PCI bridge to [bus 02-39]
[   66.353948] pci 0000:01:00.0:   bridge window [io  0x2000-0x2fff]
[   66.353954] pci 0000:01:00.0:   bridge window [mem 0xc4000000-0xda0fffff]
[   66.353958] pci 0000:01:00.0:   bridge window [mem 0xa0000000-0xc1ffffff 64bit pref]
[   66.354148] pcieport 0000:01:00.0: enabling device (0006 -> 0007)
[   66.354693] pcieport 0000:02:01.0: enabling device (0006 -> 0007)

Unplug:
[  233.763575] pci_bus 0000:02: Allocating resources
[  243.857273] pci_bus 0000:03: busn_res: [bus 03] is released
[  243.857457] pci_bus 0000:04: busn_res: [bus 04-38] is released
[  243.857613] pci_bus 0000:39: busn_res: [bus 39] is released
[  243.857762] pci_bus 0000:02: busn_res: [bus 02-39] is released
Comment 9 Prarit Bhargava 2016-04-08 14:59:00 UTC
Thanks Martin.  When I plug the Dell dock in here I see very similar warnings:

[  374.978633] ACPI Error: [SPRT] Namespace lookup failure, AE_ALREADY_EXISTS (20160108/dswload2-330)
[  374.979059] ACPI Exception: AE_ALREADY_EXISTS, During name lookup/catalog (20160108/psobject-227)
[  374.979488] ACPI Error: Method parse/execution failed [\_GPE._E42] (Node ffff8804714e55c8), AE_ALREADY_EXISTS (20160108/psparse-542)
[  374.980140] ACPI Error: Method parse/execution failed [\_GPE._E42] (Node ffff8804714e55c8), AE_ALREADY_EXISTS (20160108/psparse-542)
[  374.980565] ACPI Exception: AE_ALREADY_EXISTS, while evaluating GPE method [_E42] (20160108/evgpe-592)

but the PCI bridges appear, as does the Thunderbolt NHI.

I dunno what to do with this BZ :/.  It is really a lack of support that is the problem and like you've pointed out, Dell & Intel are working on that.

Perhaps I can try and find someone who is involved in that effort ...

P.
Comment 10 Martin Andersson 2016-04-08 15:05:47 UTC
It would be very cool it you could figure something out about the Thunderbolt3 support.

I'm more than willing to beta test any patches.
Comment 11 frank604 2016-04-09 18:14:53 UTC
For me the dsmethod patch fixed the dock.  Here is the first scenario as I just got the dock to work.

-Patch dsmethod.
-Compile 4.6-rc2
-Boot into new kernel.
-After X starts I plugged in thunderbolt 3 for wd15 dock
-Nothing shows up on external monitor that is plugged into dock but xrandr shows a new monitor "DP1-1".  (Note: when I plugged in same monitor via a thunderbolt adapter it will show as DP1.)
-Ran my xrandr script
-Monitor connected to dock is now displaying screen
-Connected corsair keyboard via usb 3 on dock (works)
-Connected razer mouse via usb on dock (works)

I haven't tried to boot with the dock attached nor have I unplugged dock.
Comment 12 frank604 2016-04-09 18:16:38 UTC
Created attachment 212281 [details]
Dmesg of dock working with dsmethod patch
Comment 13 Martin Andersson 2016-04-11 08:21:37 UTC
Hi,

The Dell WD15 dock doesn't appear to be a thunderbolt dock. It uses Display Port and usb over the usb-c connector but there is no mention of thunderbolt.

I'm glad the patch worked for you though!
Comment 14 frank604 2016-04-11 15:31:19 UTC
Hi Martin,

Sorry to create the noise.  Upon another glance at the specs you are completely right on this one.  The WD 15 does not feature the thunderbolt 3.  I didn't pay too much attention.  Good luck on the TB15 connectivity.