ANNOUNCE: thunderbolt-utils-v0.1-rc1

From: Rajat Khandelwal
Date: Tue Jul 18 2023 - 12:33:25 EST


Hi,

This is an official announcement that 'thunderbolt-utils', a collection of
user-space utilities for the TBT/USB4 subsystem is now made public for its first
release candidate.

# What is it?

The utilities comprise 'lstbt', similar in lines with 'lspci' and 'lsusb',
which polls the TBT/USB4 subsystem's information including enumerated
retimers.

The secondary component of the utilities is the goal towards providing
a collection of available wrappers to provide the abstraction of configuring
the subsystem in user-space. This is made possible via porting the DMA layer
from kernel-space to user-space for the subsystem in an IOMMU-protected
environment.

# Why?

Thunderbolt/USB4, a relatively newer industry standard with its v2 released
past year is now increasingly being adopted.

'lstbt' serves as the first incorporation of a user-space helper library for the
subsystem that fulfills the following requirements and provides advantages
throughout the Linux community.
1. Better subsystem exposure to the user: The library provides the subsystem's
information in a compact and legible format to the user with detailed
functionalities available using the verbose option. Apart from serving as a handy
library, it exports the information using TBT/USB4 keywords like domains, routers,
ports, etc., most of which are unperceived to the users as of now.
2. Better debugging: Since the library extracts valuable information like the routers'
functionalities (PM, protocol-tunneling, e.g., PCIe, USB, and DP, various states,
negotiated parameters, bandwidth used, NVM, etc.), it will serve as a very vital
tool for Linux debuggers throughout the industry.
3. Automation exposure: Automation being increasingly adopted in various industries
as a way to aid in debugs, detect faults autonomously, or even create dedicated scripts
around the subsystems, the library will be utilized as the primary go-to option for the
TBT/USB4 subsystem.

The secondary component of the utilities is providing wrappers for the user to configure
the subsystem. This is probably the first prefatory incorporation of such utilities
which would help the users who wish to handle the subsystem outside the kernel-space.
This subsequently provides the user better controllability over the subsystem which
obviously would pave the way for the development of independent software around it, which
can provide the users to derive dedicated functionalities over the subsystem.
This is in its rudimentary phase as of now.

Repository: https://github.com/intel/thunderbolt-utils

Thanks
Rajat