Hi, On Thu, Apr 18, 2024 at 03:43:08PM -0400, Esther Shimanovich wrote: > Thank you for your response! It is very much appreciated. > > On the Tiger Lake device I was testing on, the usb4-host-interface > value is NOT listed in its ACPI. > > I then decided to query the ACPI values collected from devices in my > office, to see if this issue is limited to my device. > Ice Lake - 4 devices, none had "usb4-host-interface" > Tiger Lake - 31 devices, none have "usb4-host-interface" > Alder Lake - 32 devices, I see that 15 of them have > "usb4-host-interface" in their ACPI > Raptor Lake - 1 device, does not have "usb4-host-interface" > > It looks like only Alder Lake has usb4-host-interface listed in its > ACPI for whatever reason. The reason is that it is there only for "software connection manager" systems. That's Chrome TGL and then all ADL and beyond (with integrated Thunderbolt/USB4). > It seems like I cannot use usb4-host-interface as a determinant > whether the CPU has Thunderbolt capabilities (thus not needing a > discrete Thunderbolt chip). > ExternalFacingPort is listed in devices that don't have CPUs with > Thunderbolts, so that can't be a determinant. > > Am I missing something? "ExternalFacingPort" is there for all firmware and software connection manager systems but only if they use IOMMU for DMA security (also /sys/bus/thunderbolt/devices/domainX/iommu_dma_protection == 1). So this is all integrated (Ice Lake+), then Alpine Ridge, Titan Ridge and Maple Ridge based recent systems. That leaves out still older systems with firmware connection manager with the "legacy" security settings. This is pretty much Alpine and Titan Ridge and I think those you can identify using their PCI IDs directly as the list will not be too big. Something like this taken from the drivers/thunderbolt/nhi.h: #define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_LP_BRIDGE 0x15c0 #define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_4C_BRIDGE 0x15d3 #define PCI_DEVICE_ID_INTEL_ALPINE_RIDGE_C_2C_BRIDGE 0x15da #define PCI_DEVICE_ID_INTEL_TITAN_RIDGE_2C_BRIDGE 0x15e7 #define PCI_DEVICE_ID_INTEL_TITAN_RIDGE_4C_BRIDGE 0x15ea #define PCI_DEVICE_ID_INTEL_TITAN_RIDGE_DD_BRIDGE 0x15ef In addition to this some of the systems used the BIOS "assisted" enumeration which means that the controller is actually only present if you have either USB or Thunderbolt device connected. Othertimes it is not present at all (not sure if you want to label these differently though). In summary if you want to find out if the CPU has an integrated Thunderbolt/USB4 controller (I think this is what you ask above) then the best bet would be to use "ExternalFacingPort" because that is present in all those systems.