Public bug reported: System Environment: - Ubuntu Release: Ubuntu 26.04.1 LTS - Kernel Package: linux-image-7.0.0-31-generic (7.0.0-31.31) - Host Hardware: Alienware 16X Aurora (Intel Core Ultra 9 275HX Arrow Lake-HX) - Thunderbolt Root Port: Intel Meteor Lake/Arrow Lake TB4 Root Port #0 [8086:7ec4] - External Enclosure: ASMedia ASM2464PD USB4 / PCIe bridge - Storage Drive: WD_BLACK SN7100 1TB NVMe PCIe 4.0 SSD
1. What was expected to happen: When booting Ubuntu directly from an external NVMe SSD connected to a rear USB4 / Thunderbolt 4 port, the motherboard UEFI BIOS successfully negotiates the 40 Gbps link, builds a pre-boot PCIe Gen 4 x4 tunnel, and loads GRUB into memory. The kernel is expected to preserve this pre-existing tunnel across the handover and mount the root filesystem to load the desktop. 2. What happened instead: During early kernel initialization, the thunderbolt.ko module probes and executes nhi_reset() because thunderbolt.host_reset defaults to 1 (upstream kernel commit 59a54c5f3dbd). This host router reset tears down the active pre-boot PCIe tunnel created by the UEFI firmware. As a consequence: - The external NVMe storage controller disappears from the PCIe bus (-ENODEV). - The initramfs bootloader waits indefinitely for the root partition UUID to appear. - Boot drops into an emergency recovery shell: "ALERT! UUID=... does not exist." 3. Root Cause & Verified Workaround: Passing `thunderbolt.host_reset=0` (along with `thunderbolt.clx=0 pcie_port_pm=off`) on the kernel command line prevents nhi_reset() during probe, leaving the pre-boot UEFI tunnel intact across the kernel handover. With `thunderbolt.host_reset=0`: - The external drive stays enumerated at /dev/nvme0n1 without link drops. - Boot proceeds immediately to the desktop. - Full PCIe Gen 4 x4 link speed (16.0 GT/s x4, ~3,588 MB/s read) and Host Memory Buffer (64 MB HMB) are fully operational. 4. Suggested Resolution: The kernel thunderbolt driver should detect whether a valid pre-boot tunnel is hosting the active boot filesystem before issuing nhi_reset(), or default host_reset to 0 when pre-existing boot tunnels are active. 5. Reference & Attached Logs: - Attached: version.log, lspci-vnvn.log - Reproduction scripts and standalone test suite: https://github.com/StickwoodJr/usb4-nvme-direct-boot ** Affects: linux (Ubuntu) Importance: Undecided Status: New ** Attachment added: "Kernel version signature (/proc/version_signature) and full lspci -vnvn hardware topology" https://bugs.launchpad.net/bugs/2167764/+attachment/6001168/+files/system-debug-logs.txt -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2167764 Title: thunderbolt.host_reset=1 default tears down pre-boot UEFI PCIe tunnels, breaking external NVMe direct boot over USB4 To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2167764/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
