Hi, Am 27.12.22 um 15:28 schrieb Mika Westerberg: > Hi, > > On Fri, Dec 23, 2022 at 12:24:35PM +0100, Christian Schaubschläger wrote: >> Hello list, >> >> I'm having an issue which I guess might be related to thunderbolt 4. >> >> I have an HP EliteBook 630 G9 notebook and an HP Thunderbolt Dock G4, both with Thunderbolt 4. I run linux on it and need a working network interface (the one on the dock) in the UEFI firmware for PXE boot. >> >> When I come from a cold boot, the thunderbolt connection works well both in the UEFI firmware (I can do PXE), and also later in linux. After a reboot from linux, the dock disappears from the PCI bus and is no longer accessible in the UEFI firmware. Hence a PXE boot is not possible. When I then boot into linux again, the dock is there again, working just fine. >> >> On my machine the thunderbolt controller has the PCI address 0000.00.0d.2, and the PCI bridge to the dock has the address 0000.00.07.0. >> I've attached the PCI config spaces of these two devices as they are seen from the UEFI firmeware from two different states: >> >> 1. When the machine comes from a cold boot. In that state the UEFI firmware sees the dock and all devices on the dock. >> 2. When the machine comes from a linux reboot. In that state the dock is not visible on the PCI bus. >> >> The config spaces of the mentioned two devices are different in the two states. >> >> Note: once the machine is in state 2, it is necessary to remove the power supply from the dock (or physically disconnect and re-connect the thunderbolt cable) in order to get it working in UEFI again. That's what "cold boot" above actually means. >> >> Also, when the machine is in state 2 and boots into Windows the dock does not not become visible on the PCI bus. Interestingly, after a subsequent reboot from Windows it does become avialable in UEFI again (no need to disconnect the power supply or thunderbolt cable in this case!!) >> >> So I guess the linux kernel does something on shutdown (or misses to do something) that prevents the dock to wake up again after the reboot in the UEFI firmware. >> >> I'm observing this on all kernels I've tried (5.18.x, 6.0.x, 6.1.x; also when I run a vanilla Ubuntu 22.04 this happens); the logs below are from a pre-release kernel from today (which will be 6.2-rc1 in a few days). I've also experimented with some powersaving related settings on the kernel command line, unfortunately without success. >> >> Can anyone confirm this behaviour? > First of all can you check if you are running Intel or Microsoft driver > for the Thunderbolt controller? It can be seen in Device Manager > somehow. It is possible that Windows and Linux use different "connection > manager" so that explains why there is a difference in behaviour. The TB contoller in Windows uses the Intel driver, the dock itself a driver from Microsoft. > In case of Linux this is software connection manager so it is Linux that > does all the tunneling. In case of Windows it may be also firmware > connection manager so it is handled in the firmware (and this might > explain why it magically works after rebooting from Windows). > > In general this depends on the BIOS setting whether there is PCIe tunnel > or not. Typically there is something like "boot from Thunderbolt" or > similar option that turns it on so I suggest checking if you have > such option. Unfortunately there is no such BIOS setting on this machine... But as described above: when the laptop comes from a cold boot (with power supply removed before, etc.), then there _is_ a PCIe tunnel in the UEFI firmware; so the firmware can do that. Only after a reboot from Linux something prohibits the firmware from re-establishing the tunnel again. And I'm not sure if this is a kernel issue or a firmware issue, but it clearly makes a valid use case (pxe boot after linux) impossible. Can I do anything to bring more light to this problem? Thanks and best regards, Christian