A new release of bolt is out: 0.9.1 - Unstable icy waters. This is a bug-fix release that addresses some issue on integrated Thunderbolt controller.
Intel's Ice Lake is the first architecture where the Thunderbolt controller is part of the CPU die. This is quite a big difference. There is a good article on wikichip called "A Look At The Ice Lake Thunderbolt 3 Integration" for those that are curious about the technical details. What matters for
bolt is that there is no DROM, which means that the udev device representing the host switch does not have the usual name and id attributes for the device and vendor. Additionally, the
unique_id attribute has a different UUID every boot. This breaks one of the fundamental assumptions for
boltd, which used the
unique_id of the host to uniquely identify the corresponding Thunderbolt domain. This is important because we store host devices and domains in the store. Now, with the uuid changing this means that 1) we can not match the previously stored domains and hosts to the ones after a reboot and thus will accumulate "stale" domains in the store. Ironically, the fact that the host device also does not have any name and id information means that
boltd would refuse to create the
BoltDevice for those which meant we did at least not accumulate the stale host devices in the store. It did break the detection of the generation, i.e. if it is Thunderbolt 3 or USB 4.
To address all these issues, a couple of changes were made to
boltd: 1) The PCI id of the native host interface (NHI) is used to detect if we are dealing with an integrated Thunderbolt controller and if so, neither the domain nor the host is stored. 2) If the host udev device does not have name or id information, the SMBIOS/DMI info that is exposed via sysfs is used transparently. 3) The bolt store is now versioned and thus can be upgraded. If no version info is detected, it means the store has version
0 and will be upgraded to
1. On that update, the store is scanned and all stored domains that are currently not online are removed, thus removing the stale domains.
The release already is in Fedora rawhide (aka F34, bodhi) and should also hit the stable releases (F33, F32) soon. It is updated on Arch already, thanks Jaro! Testing would be very welcome. I also encourage all other distributions to upgrade to it.