Re: [PATCH 06/24] thunderbolt: Introduce thunderbolt bus and connection manager

From: Mika Westerberg
Date: Wed May 24 2017 - 06:43:48 EST


On Wed, May 24, 2017 at 12:28:21PM +0200, Lukas Wunner wrote:
> On Thu, May 18, 2017 at 05:38:56PM +0300, Mika Westerberg wrote:
> > Thunderbolt fabric consists of one or more switches. This fabric is
> > called domain and it is controlled by an entity called connection
> > manager. The connection manager can be either internal (driven by a
> > firmware running on the host controller) or external (software driver).
> > This driver currently implements support for the latter.
> >
> > In order to manage switches and their properties more easily we model
> > this domain structure as a Linux bus. Each host controller adds a domain
> > device to this bus, and these devices are named as domainN where N
> > stands for index or id of the current domain.
>
> What is the rationale for using a bus? Do you intend to attach a driver
> to each domain and/or switch? Unless you do, a class might be more
> appropriate.

It is used to make switches (and the host) identification available for
the userspace. This identification information is used to make a
decision whether or not a device should be authorized.

There will be (in subsequent patches, currently work in progress) also
other type of devices (XDomain) which XDomain service drivers bind to in
order to send data, like IP traffic over Thunderbolt link(s).

And last, Thunderbolt is actually a bus as far as I can tell so we model
it accordingly ;-)