Re: [RFC PATCH 17/22] thunderbolt: Add initial support for USB4

From: Mika Westerberg
Date: Tue Oct 01 2019 - 11:34:30 EST


On Tue, Oct 01, 2019 at 05:22:13PM +0200, Greg KH wrote:
> On Tue, Oct 01, 2019 at 02:59:06PM +0000, Mario.Limonciello@xxxxxxxx wrote:
> >
> >
> > > -----Original Message-----
> > > From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
> > > Sent: Tuesday, October 1, 2019 9:54 AM
> > > To: Mika Westerberg
> > > Cc: linux-usb@xxxxxxxxxxxxxxx; Andreas Noever; Michael Jamet; Yehezkel Bernat;
> > > Rajmohan Mani; Nicholas Johnson; Lukas Wunner; Alan Stern; Limonciello, Mario;
> > > Anthony Wong; linux-kernel@xxxxxxxxxxxxxxx
> > > Subject: Re: [RFC PATCH 17/22] thunderbolt: Add initial support for USB4
> > >
> > >
> > > [EXTERNAL EMAIL]
> > >
> > > On Tue, Oct 01, 2019 at 04:09:05PM +0300, Mika Westerberg wrote:
> > > > On Tue, Oct 01, 2019 at 02:47:48PM +0200, Greg Kroah-Hartman wrote:
> > > > > > - Thunderbolt Controller driver. This driver is required if you
> > > > > > - want to hotplug Thunderbolt devices on Apple hardware or on PCs
> > > > > > - with Intel Falcon Ridge or newer.
> > > > > > + USB4 (Thunderbolt) driver. USB4 is the public spec based on
> > > > > > + Thunderbolt 3 protocol. This driver is required if you want to
> > > > > > + hotplug Thunderbolt and USB4 compliant devices on Apple
> > > > > > + hardware or on PCs with Intel Falcon Ridge or newer.
> > > > >
> > > > > Wait, did "old" thunderbolt just get re-branded as USB4?
> > > >
> > > > Not but the driver started supporting USB4 as well :)
> > > >
> > > > USB4 is pretty much public spec of Thunderbolt 3 but with some
> > > > differences in register layouts (this is because Thunderbolt uses some
> > > > vendor specific capabilities which are now moved to more "standard"
> > > > places).
> > >
> > > Ok, then we need to rename the Kconfig option as well, otherwise no one
> > > will "know" that this changed, so they will not be prompted for it.
> > >
> > > > > Because if I have an "old" laptop that needs Thunderbolt support, how am
> > > > > I going to know it is now called USB4 instead?
> > > >
> > > > Well the Kconfig option tries to have both names there:
> > > >
> > > > tristate "USB4 (Thunderbolt) support"
> > > >
> > > > and then
> > > >
> > > > USB4 (Thunderbolt) driver. USB4 is the public spec based on
> > > > Thunderbolt 3 protocol. This driver is required if you want to hotplug
> > > > Thunderbolt and USB4 compliant devices on Apple hardware or on PCs
> > > > with Intel Falcon Ridge or newer.
> > > >
> > > > and the Kconfig option is still CONFIG_THUNDERBOLT. I know this is
> > > > confusing but I don't have better ideas how we can advertise both. I
> > > > borrowed this "format" from firewire.
> > >
> > > CONFIG_USB4 instead?
> >
> > How about CONFIG_USB4_PCIE?
> >
> > I think that will help align that certain aspects of USB4 can be built optionally.
>
> What aspects? We don't have that here at all.
>
> I guess the parts of USB4 that are not just this "hook up the PCIe
> lane" that need to still be developed?

Actually PCIe tunneling is already there in the driver. USB4 has one bit
that is needed to be set before PCIe tunneling can happen (we do that in
patch 17/22) but other than that the existing PCIe tunneling code in the
driver works as is.