From: Mika Westerberg <mika.westerberg@linux.intel.com>
To: Mario Limonciello <mario.limonciello@amd.com>
Cc: Lukas Wunner <lukas@wunner.de>,
Bjorn Helgaas <helgaas@kernel.org>,
bhelgaas@google.com, andreas.noever@gmail.com,
michael.jamet@intel.com, YehezkelShB@gmail.com,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-usb@vger.kernel.org, Alexander.Deucher@amd.com
Subject: Re: [PATCH 2/2] PCI: Ignore PCIe ports used for tunneling in pcie_bandwidth_available()
Date: Fri, 3 Nov 2023 07:48:07 +0200 [thread overview]
Message-ID: <20231103054807.GN17433@black.fi.intel.com> (raw)
In-Reply-To: <67e7d200-52aa-44b9-8e87-e416e3d53a6c@amd.com>
On Thu, Nov 02, 2023 at 11:22:05AM -0500, Mario Limonciello wrote:
> On 11/2/2023 10:33, Lukas Wunner wrote:
> > On Thu, Nov 02, 2023 at 10:26:31AM -0500, Mario Limonciello wrote:
> > > On 11/2/2023 10:21, Lukas Wunner wrote:
> > > > On Wed, Nov 01, 2023 at 08:14:31PM -0500, Mario Limonciello wrote:
> > > > > Considering this I think it's a good idea to move that creation of the
> > > > > device link into drivers/pci/pci-acpi.c and store a bit in struct
> > > > > pci_device to indicate it's a tunneled port.
> > > > >
> > > > > Then 'thunderbolt' can look for this directly instead of walking all
> > > > > the FW nodes.
> > > > >
> > > > > pcie_bandwidth_available() can just look at the tunneled port bit
> > > > > instead of the existence of the device link.
> > > >
> > > > pci_is_thunderbolt_attached() should already be doing exactly what
> > > > you want to achieve with the new bit. It tells you whether a PCI
> > > > device is behind a Thunderbolt tunnel. So I don't think a new bit
> > > > is actually needed.
> > >
> > > It's only for a device connected to an Intel TBT3 controller though; it
> > > won't apply to USB4.
> >
> > Time to resurrect this patch here...? :)
> >
> > https://lore.kernel.org/all/20220204182820.130339-3-mario.limonciello@amd.com/
>
> That thought crossed my mind, but I don't think it's actually correct.
> That's the major reason I didn't resurrect that series.
>
> The PCIe topology looks like this:
>
> ├─PCIe tunneled root port
> | └─PCIe bridge/switch (TBT3 or USB4 hub)
> | └─PCIe device
> └─PCIe root port
> └─USB 4 Router
>
> In this topology the USB4 PCIe class device is going to be the USB4 router.
> This *isn't* a tunneled device.
>
> The two problematic devices are going to be that PCIe bridge (TBT or USB4
> hub) and PCIe tunneled root port.
> Looking for the class is going to mark the wrong device for the "USB 4
> Router".
>
> I looked through the USB4 spec again and I don't see any way that such a
> port can be distinguished.
>
> I feel the correct way to identify it is via the relationship specified in
> ACPI.
Just to add here, for discrete (eg. add in USB4 host controllers) the
USB4 spec defines DVSEC capability that can be used to figure out the
same information as the ACPI above so at least we should make the code
work so that adding the DVSEC support later on is still possible with
minimal effort :)
> FWIW I also think that that all the kernel users of
> pci_is_thunderbolt_attached() *should* be using dev_is_removable().
I tend to agree with this. There can be other "mediums" than
USB4/Thunderbolt that can carry PCIe packets.
next prev parent reply other threads:[~2023-11-03 5:48 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-31 13:34 [PATCH 1/2] PCI: Move the `PCI_CLASS_SERIAL_USB_USB4` definition to common header Mario Limonciello
2023-10-31 13:34 ` [PATCH 2/2] PCI: Ignore PCIe ports used for tunneling in pcie_bandwidth_available() Mario Limonciello
2023-10-31 23:02 ` kernel test robot
2023-11-01 22:52 ` Bjorn Helgaas
2023-11-02 1:14 ` Mario Limonciello
2023-11-02 10:31 ` Mika Westerberg
2023-11-02 12:07 ` Bjorn Helgaas
2023-11-02 12:17 ` Mika Westerberg
2023-11-02 15:21 ` Lukas Wunner
2023-11-02 15:26 ` Mario Limonciello
2023-11-02 15:33 ` Lukas Wunner
2023-11-02 16:22 ` Mario Limonciello
2023-11-03 5:48 ` Mika Westerberg [this message]
2023-11-02 15:47 ` Bjorn Helgaas
2023-11-02 17:28 ` Lukas Wunner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231103054807.GN17433@black.fi.intel.com \
--to=mika.westerberg@linux.intel.com \
--cc=Alexander.Deucher@amd.com \
--cc=YehezkelShB@gmail.com \
--cc=andreas.noever@gmail.com \
--cc=bhelgaas@google.com \
--cc=helgaas@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=lukas@wunner.de \
--cc=mario.limonciello@amd.com \
--cc=michael.jamet@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).