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

Reply via email to