Good morning, > Can you try the below hack? It should tear down all tunnels during > reboot so the firmware should see pristine path configuration spaces > (assuming it is looking at them and failing because if already configure > paths). > > diff --git a/drivers/thunderbolt/tb.c b/drivers/thunderbolt/tb.c > index 1711dc19b1e2..e0544843e242 100644 > --- a/drivers/thunderbolt/tb.c > +++ b/drivers/thunderbolt/tb.c > @@ -1982,13 +1982,7 @@ static void tb_stop(struct tb *tb) > cancel_delayed_work(&tcm->remove_work); > /* tunnels are only present after everything has been initialized */ > list_for_each_entry_safe(tunnel, n, &tcm->tunnel_list, list) { > - /* > - * DMA tunnels require the driver to be functional so we > - * tear them down. Other protocol tunnels can be left > - * intact. > - */ > - if (tb_tunnel_is_dma(tunnel)) > - tb_tunnel_deactivate(tunnel); > + tb_tunnel_deactivate(tunnel); > tb_tunnel_free(tunnel); > } > tb_switch_remove(tb->root_switch); That doesn't change the behaviour unfortunately. I did find out two (confusing) things, though. The network interface on the dock is an Intel I255-LMvP, in linux it's eth1. When I do this before the reboot: echo 1 > /sys/class/net/eth1/device/remove the device is removed and then added again immedidately: [ 31.930950] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready [ 77.496059] igc 0000:2c:00.0 eth1: PHC removed [ 77.670531] pci 0000:2c:00.0: Removing from iommu group 21 [ 78.551553] pci 0000:2c:00.0: [8086:5502] type 00 class 0x020000 [ 78.552412] pci 0000:2c:00.0: reg 0x10: [mem 0x00000000-0x000fffff] [ 78.553194] pci 0000:2c:00.0: reg 0x1c: [mem 0x00000000-0x00003fff] [ 78.554128] pci 0000:2c:00.0: PME# supported from D0 D3hot D3cold [ 78.555110] pci 0000:2c:00.0: Adding to iommu group 21 [ 78.555913] pcieport 0000:04:04.0: ASPM: current common clock configuration is inconsistent, reconfiguring [ 78.566265] pci_bus 0000:05: Allocating resources [ 78.566285] pci_bus 0000:2c: Allocating resources [ 78.566296] pci 0000:2c:00.0: BAR 0: assigned [mem 0x82000000-0x820fffff] [ 78.567075] pci 0000:2c:00.0: BAR 3: assigned [mem 0x82100000-0x82103fff] [ 78.567862] igc 0000:2c:00.0: enabling device (0000 -> 0002) [ 78.568671] igc 0000:2c:00.0: PTM enabled, 4ns granularity [ 78.626297] pps pps0: new PPS source ptp1 [ 78.627161] igc 0000:2c:00.0 (unnamed net_device) (uninitialized): PHC added [ 78.653444] igc 0000:2c:00.0: 4.000 Gb/s available PCIe bandwidth (5.0 GT/s PCIe x1 link) [ 78.654448] igc 0000:2c:00.0 eth1: MAC: 5c:60:ba:71:ea:be [ 78.655307] pci_bus 0000:05: Allocating resources [ 78.655327] pci_bus 0000:2c: Allocating resources [ 81.598703] igc 0000:2c:00.0 eth1: NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX [ 81.599729] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready If I reboot now, I can see the network interface in the firmware! And now for the confusing part: I do exactly the same steps as above, but whith an external display connected to the dock. Even if I don't touch this display in Linux (the i915 driver isn't loaded, just efi framebuffer), then the net interface is gone in the firmware after the reboot... Also, after the echo 1 > /sys/class/net/eth1/device/remove the device doesn't show up in linux again: [ 10.158596] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready [ 42.773958] igc 0000:2c:00.0 eth1: PHC removed [ 42.962208] pci 0000:2c:00.0: Removing from iommu group 21 I'm not sure if this is some weird coincidence or if it can help to bring ligth to this issue... Thanks and best regards, Christian