Re: [PATCH 0/2] Mark USB4 controllers as is_thunderbolt

Mika Westerberg
2022-02-07T15:54:54Z

Hi,

On Mon, Feb 07, 2022 at 03:00:19PM +0000, Deucher, Alexander wrote:
> [Public]
>
> > -----Original Message-----
> > From: Mika Westerberg <mika.westerberg@linux.intel.com>
> > Sent: Monday, February 7, 2022 1:42 AM
> > To: Limonciello, Mario <Mario.Limonciello@amd.com>
> > Cc: Bjorn Helgaas <bhelgaas@google.com>; Andreas Noever
> > <andreas.noever@gmail.com>; open list:PCI SUBSYSTEM <linux-
> > pci@vger.kernel.org>; open list:THUNDERBOLT DRIVER <linux-
> > usb@vger.kernel.org>; Michael Jamet <michael.jamet@intel.com>; Yehezkel
> > Bernat <YehezkelShB@gmail.com>; Deucher, Alexander
> > <Alexander.Deucher@amd.com>
> > Subject: Re: [PATCH 0/2] Mark USB4 controllers as is_thunderbolt
> >
> > Hi Mario,
> >
> > On Fri, Feb 04, 2022 at 12:28:18PM -0600, Mario Limonciello wrote:
> > > Various drivers in the kernel use `pci_is_thunderbolt_attached` to
> > > designate behaving differently from a device that is internally in the
> > > machine. This function relies upon the `is_thunderbolt` designation
> > > which checks for a specific capability only set on Intel controllers.
> > >
> > > Non-Intel USB4 designs should also match this designation so that they
> > > can be treated the same regardless of the host they're connected to.
> >
> > Not objecting this if really needed but since USB4 is supposed to be
> > transparent to the native (tunneled) protocol, I would rather try to figure out
> > if there is really need to change driver behaviour whether it is connected
> > over USB4 or plugged natively on the PCIe slot.
> >
> > Can you elaborate a bit what kind of functionality needs this? Perhaps we can
> > figure a better alternative?
>
> In the AMD GPU driver we use it to determine which dGPU is built into
> a platform vs. externally connected since the internal one uses ACPI
> for certain things and the external one does not. There are probably
> other ways to determine this, but it's not in place at the moment.

Can't you check if the device is behind a hotplug bridge? Then for
certain it is "removable".

The other option is to look for ACPI companion (ACPI_COMPANION()) of the
device. AFAICT dGPUs don't have one (as the BIOS does not know in
advance what will be connected to the hotplug ports) whereas internal
does typically have one.