1What: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service> 2Date: Sep 2026 3KernelVersion: v7.2 4Contact: Mika Westerberg <mika.westerberg@linux.intel.com> 5Description: 6 Configuration group for a stream Thunderbolt/USB4 7 service. It is possible to create groups even if there 8 is no connection yet to the other host. Once a 9 connection established and there is stream service on 10 the remote side that matches, this configuration is 11 applied to it. 12 13 To find the service name you can run tblist from tbtools [1]: 14 15 # tblist -A 16 ... 17 Domain 0 Route 3 Index 0: stream 18 19 [1] https://github.com/intel/tbtools 20 21What: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name 22Date: Sep 2026 23KernelVersion: v7.2 24Contact: Mika Westerberg <mika.westerberg@linux.intel.com> 25Description: 26 Creates new stream with $name and fills it with the 27 default values. If there is an advertised remote stream 28 with the same name, uses its values as the default. 29 30What: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/busy_poll 31Date: Nov 2026 32KernelVersion: v7.3 33Contact: Mika Westerberg <mika.westerberg@linux.intel.com> 34Description: 35 Instead of using interrupts for completing the frames in 36 the TX/RX rings, busy poll them directly from the 37 read(2) and write(2) calls. This burns more CPU cycles 38 but provides lower latency for applications that need it. 39 40 This also makes poll(2) return EPOLLERR because 41 interrupts do not provide wakeup anymore. Likewise a 42 blocking read(2) without available data busy-spins until 43 data arrives or a signal is received. 44 45What: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/index 46Date: Sep 2026 47KernelVersion: v7.2 48Contact: Mika Westerberg <mika.westerberg@linux.intel.com> 49Description: 50 This matches the X in /dev/tbstreamX and allows userspace 51 to map the configfs directory to the corresponding character 52 device. 53 54What: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/in_hopid 55Date: Sep 2026 56KernelVersion: v7.2 57Contact: Mika Westerberg <mika.westerberg@linux.intel.com> 58Description: 59 In HopID used with the read path of the tunnel. Available HopIDs 60 for tunneling start from 8. You can pass also -1 for automatic 61 allocation. The allocated value can be read here. Writing 0 will 62 de-allocate if the stream is not in use. 63 64 To figure out the maximum HopID you can run tbget from 65 tbtools for the lane adapter. For example below we check 66 for lane adapter number 1 (first USB4 port): 67 68 # tbget -r 0 -a 1 -D ADP_CS_5.Max\ Input\ HopID 69 19 70 71 This allows to use anything between 8 and 19 inclusive. 72 73What: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/out_hopid 74Date: Sep 2026 75KernelVersion: v7.2 76Contact: Mika Westerberg <mika.westerberg@linux.intel.com> 77Description: 78 Out HopID used with the write path of the tunnel. Available HopIDs 79 for tunneling start from 8. You can pass also -1 for automatic 80 allocation. The allocated value can be read here. Writing 0 will 81 de-allocate if the stream is not in use. See @in_hopid 82 for how to figure out the maximum HopID. 83 84What: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/ring_size 85Date: Sep 2026 86KernelVersion: v7.2 87Contact: Mika Westerberg <mika.westerberg@linux.intel.com> 88Description: 89 Size of the TX/RX rings. Can be adjusted between 32 and 90 4096. The default is 256. 91 92What: /sys/kernel/config/thunderbolt/stream/<xdomain>.<service>/$name/throttling 93Date: Sep 2026 94KernelVersion: v7.2 95Contact: Mika Westerberg <mika.westerberg@linux.intel.com> 96Description: 97 Interrupt throttling rate in ns. Lower values can give 98 better latency. The default is 8192 ns. 99