[Public]
-----Original Message----- From: Mika Westerberg mika.westerberg@linux.intel.com Sent: Friday, February 11, 2022 04:35 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>; open list:RADEON and AMDGPU DRM DRIVERS <amd- gfx@lists.freedesktop.org>; open list:DRM DRIVERS <dri- devel@lists.freedesktop.org>; open list:DRM DRIVER FOR NVIDIA GEFORCE/QUADRO GPUS nouveau@lists.freedesktop.org; open list:X86 PLATFORM DRIVERS platform-driver-x86@vger.kernel.org; Michael Jamet michael.jamet@intel.com; Yehezkel Bernat YehezkelShB@gmail.com; Lukas Wunner lukas@wunner.de; Deucher, Alexander Alexander.Deucher@amd.com Subject: Re: [PATCH v2 4/9] PCI: mark USB4 devices as removable
Hi Mario,
On Thu, Feb 10, 2022 at 04:43:24PM -0600, Mario Limonciello wrote:
USB4 class devices are also removable like Intel Thunderbolt devices.
Drivers of downstream devices use this information to declare functional differences in how the drivers perform by knowing that they are connected to an upstream TBT/USB4 port.
This may not be covering the integrated controllers. For discrete, yes but if it is the PCIe root ports that start the PCIe topology (over the PCIe tunnels) this does not work.
For integrated we have the "usb4-host-interface" ACPI property that tells this for each port:
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.mi crosoft.com%2Fen-us%2Fwindows-hardware%2Fdrivers%2Fpci%2Fdsd-for-pcie- root-ports%23mapping-native-protocols-pcie-displayport-tunneled-through- usb4-to-usb4-host- routers&data=04%7C01%7Cmario.limonciello%40amd.com%7C64e5b663f 97b40f4035a08d9ed4a3162%7C3dd8961fe4884e608e11a82d994e183d%7C0%7 C0%7C637801725176496963%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLj AwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000&sd ata=7BvPgExVP8Upvi25EEbqH9TacFDZ4zpCEKOfoBJWcxs%3D&reserved=0
and for discrete there is the PCIe DVSEC that can be used (see the USB4 spec archive it includes the "USB4 DVSEC Version 1.0.pdf" that has more information). I would expect AMD controller (assuming it is discrete) implements this too.
So I'm proposing that we mark the devices that are below PCIe ports (root, downstream) that fall in the above categories as "removable". This is then not dependent on checking the USB4 controller and how it is setup in a particular system.
Thanks for all of the great suggestions! I've incorporated them in v3.