Subject: [Bug] Apple Thunderbolt Ethernet Adapter not Working After Suspend & Resume

From: Christian Schwarz <[email-masked]>
Date: Wed, 28 Oct 2015 17:26:27 +0100

(Greg Kroah-Hartman told me to contact his mailing list. For the
original bug check [1])
(Since this is my first bug-report to a Linux Kernel mailing list, I
hope I met all the formal expectations.)

---

==Summary==

Apple Thunderbolt Ethernet Adapter not Working After Suspend & Resume

==Overview==

On a Retina MacBook Pro 11,3, with an Apple Thunderbolt Ethernet Adapter
plugged in, the previously working adapter does not work after suspend &
resume.

==Steps to Reproduce==

1) Boot the Retina MacBook Pro 11,3. Plug in the Apple Thunderbolt
Ethernet Adapter. (Thunderbolt hot-plugging works on my setup.) The
adapter is usable now (Link is reported up, lspci output in attachment).
Suspend the machine (I close the lid which works when disabling 'XHCI'
in `/proc/acpi/wakeup`)

3) Resume the machine (Open the lid)

4) The adapter does not work now. It is reported DOWN by `ip link`.
lspci output shows different lables (see attachments). Many error
messages in log output.

==Actual Result==

As described above: The Thunderbolt Ethernet Adapter does not work
anymore after resume.
Unplug and re-plugin does not resolve the issue.
(See additional information for my current workarounds)

==Expected Result==

The Thunderbolt Ethernet Adapter should continue to work link before
suspend.

==Build Data & Hardware==

Linux 4.3.0-rc7
https://www.kernel.org/pub/linux/kernel/v4.x/testing/linux-4.3-rc7.tar.xz
Kernel Config: See attachment
Userland: Arch Linux
Retina MacBook Pro 11,3
http://www.everymac.com/systems/apple/macbook_pro/specs/macbook-pro-core-i7-2.3-15-dual-graphics-late-2013-retina-display-specs.html
Apple Thunderbolt Ethernet Adapter (labeled BCM2590 on the backside,
can't explain why this identifier differs from lspci output. I think
this is not of critical importance for this bug report.)

==Addtitional Information==

Workaround 1: The obvious workaround is to unplug the adapter before
suspending.
Workaround 2: If the machine is in the state described in "Steps to
Reproduce", unplug the adapter in normal operation, the suspend and
resume, then plug-in again. The adapter works again.
	
==Attachments==

kernel_config
The kernel configuration file of my system.

thunderbolt_ethernet_normal_plugin_unplug.log
Log output of what happens when just plugging in and shortly after
unplugging the adapter. All this works as expected. (meant as a possible
reference)

thunderbolt_ethernet_after_resume.log
Log output of what happens after resuming the system (as in "Steps to
Reproduce")

thunderbolt_ethernet_lspci_before_suspend.txt
lspci -k output before suspending the system (as in "Steps to Reproduce")

thunderbolt_ethernet_lspci_after_resume.log
lspci -k output after resuming the system (as in "Steps to Reproduce")

thunderbolt_ethernet_workaround_2_after_resume.log
Log output of what happens when resuming like in workaround 2

---

[1] https://bugzilla.kernel.org/show_bug.cgi?id=106681#c10