Mika Westerberg
2022-Feb-14 07:34 UTC
[Nouveau] [PATCH v3 05/12] PCI: Detect root port of internal USB4 devices by `usb4-host-interface`
Hi Bjorn, On Fri, Feb 11, 2022 at 03:45:46PM -0600, Bjorn Helgaas wrote:> On Fri, Feb 11, 2022 at 01:32:43PM -0600, Mario Limonciello wrote: > > The root port used for PCIe tunneling should be marked as removable to > > ensure that the entire chain is marked removable. > > > > This can be done by looking for the device property specified in > > the ACPI tables `usb4-host-interface`. > > > > Suggested-by: Mika Westerberg <mika.westerberg at linux.intel.com> > > Link: https://docs.microsoft.com/en-us/windows-hardware/drivers/pci/dsd-for-pcie-root-ports#mapping-native-protocols-pcie-displayport-tunneled-through-usb4-to-usb4-host-routers > > Signed-off-by: Mario Limonciello <mario.limonciello at amd.com> > > --- > > drivers/pci/pci-acpi.c | 10 ++++++++++ > > drivers/pci/pci.h | 5 +++++ > > drivers/pci/probe.c | 1 + > > 3 files changed, 16 insertions(+) > > > > diff --git a/drivers/pci/pci-acpi.c b/drivers/pci/pci-acpi.c > > index a42dbf448860..6368e5633b1b 100644 > > --- a/drivers/pci/pci-acpi.c > > +++ b/drivers/pci/pci-acpi.c > > @@ -1391,6 +1391,16 @@ void pci_acpi_cleanup(struct device *dev, struct acpi_device *adev) > > } > > } > > > > +bool pci_acpi_is_usb4(struct pci_dev *dev) > > +{ > > + struct acpi_device *adev = ACPI_COMPANION(&dev->dev); > > + > > + if (!adev) > > + return false; > > + return fwnode_property_present(acpi_fwnode_handle(adev), > > + "usb4-host-interface"); > > Maybe it's obvious to everybody but me that "USB4" means this device > is removable. The Microsoft reference above doesn't say anything > about removability. > > My expectation is that "USB" (like "PCI" and "PCIe") tells me > something about how a device is electrically connected and how > software can operate it. It doesn't really tell me anything about > whether those electrical connections are permanent, made through an > internal slot, or made through an external connector and cable.It is used to identify "tunneled" ports (whether PCIe, USB 3.x or DisplayPort). Tunnels are created by software (in Linux it is the Thunderbolt driver) and are dynamic in nature. The USB4 links go over USB Type-C cable which also is something user can plug/unplug freely. I would say it is reasonable expectation that anything behind these ports can be assumed as "removable".
Lukas Wunner
2022-Feb-14 08:52 UTC
[Nouveau] [PATCH v3 05/12] PCI: Detect root port of internal USB4 devices by `usb4-host-interface`
On Mon, Feb 14, 2022 at 09:34:26AM +0200, Mika Westerberg wrote:> On Fri, Feb 11, 2022 at 03:45:46PM -0600, Bjorn Helgaas wrote: > > My expectation is that "USB" (like "PCI" and "PCIe") tells me > > something about how a device is electrically connected and how > > software can operate it. It doesn't really tell me anything about > > whether those electrical connections are permanent, made through an > > internal slot, or made through an external connector and cable. > > It is used to identify "tunneled" ports (whether PCIe, USB 3.x or > DisplayPort). Tunnels are created by software (in Linux it is the > Thunderbolt driver) and are dynamic in nature. The USB4 links go over > USB Type-C cable which also is something user can plug/unplug freely. > > I would say it is reasonable expectation that anything behind these > ports can be assumed as "removable".USB gadgets may be soldered to the mainboard. Those cannot be unplugged freely. It is common practice to solder USB Ethernet or USB FTDI serial ports and nothing's preventing a vendor to solder USB4/Thunderbolt gadgets.