From: Lukas Wunner <lukas@wunner.de>
To: Bjorn Helgaas <helgaas@kernel.org>
Cc: Esther Shimanovich <eshimanovich@chromium.org>,
Bjorn Helgaas <bhelgaas@google.com>,
Rajat Jain <rajatja@google.com>,
"Rafael J. Wysocki" <rafael.j.wysocki@intel.com>,
Mika Westerberg <mika.westerberg@linux.intel.com>,
linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] PCI: Detect and trust built-in TBT chips
Date: Sun, 25 Aug 2024 16:57:03 +0200 [thread overview]
Message-ID: <ZstGP0EgttNAxjp2@wunner.de> (raw)
In-Reply-To: <20240806220406.GA80520@bhelgaas>
On Tue, Aug 06, 2024 at 05:04:06PM -0500, Bjorn Helgaas wrote:
> On Tue, Aug 06, 2024 at 09:39:11PM +0000, Esther Shimanovich wrote:
> > Some computers with CPUs that lack Thunderbolt features use discrete
> > Thunderbolt chips to add Thunderbolt functionality. These Thunderbolt
> > chips are located within the chassis; between the root port labeled
> > ExternalFacingPort and the USB-C port.
>
> So is this fundamentally a firmware defect? ACPI says a Root Port is
> an "ExternalFacingPort", but the Root Port is actually connected to an
> internal Thunderbolt chip, not an external connector?
We're the victim of an ambiguity in Microsoft's spec here:
The spec says that ExternalFacingPort is used to identify externally
exposed PCIe hierarchies. But the spec mandates that the property
shall only exist under the Root Port ACPI device scope.
OEMs follow that spec to a T by specifying ExternalFacingPort below
the Root Port, even though the Root Port itself is not external facing
but connects to a discrete Thunderbolt controller which is soldered down
to the mainboard. In reality the external facing ports extend from the
discrete controller, but Microsoft's spec doesn't allow marking them
as such.
Here's the relevant spec language:
"This ACPI object enables the operating system to identify externally
exposed PCIe hierarchies, such as Thunderbolt. This object must be
implemented in the Root Port ACPI device scope.
Note: On systems shipping with Windows 10, version 1803, this object
should only be implemented on PCIe Root Ports of Thunderbolt hierarchies."
https://learn.microsoft.com/en-us/windows-hardware/drivers/pci/dsd-for-pcie-root-ports#identifying-externally-exposed-pcie-root-ports
It's probably safe to assume that Microsoft intended the ExternalFacingPort
property to only be used on SoC-integrated Thunderbolt controllers,
in which case a Root Port is indeed external facing. But that didn't
stop OEMs from also specifying the property on Root Ports above
soldered-down discrete Thunderbolt controllers. The spec doesn't
explicitly forbid that.
Thanks,
Lukas
next prev parent reply other threads:[~2024-08-25 15:06 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-06 21:39 [PATCH] PCI: Detect and trust built-in TBT chips Esther Shimanovich
2024-08-06 22:04 ` Bjorn Helgaas
2024-08-07 6:54 ` Mika Westerberg
2024-08-07 21:17 ` Esther Shimanovich
2024-08-08 5:22 ` Mika Westerberg
2024-08-25 14:57 ` Lukas Wunner [this message]
2024-08-07 7:17 ` Mika Westerberg
2024-08-07 21:15 ` Esther Shimanovich
2024-08-08 5:01 ` Mika Westerberg
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=ZstGP0EgttNAxjp2@wunner.de \
--to=lukas@wunner.de \
--cc=bhelgaas@google.com \
--cc=eshimanovich@chromium.org \
--cc=helgaas@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mika.westerberg@linux.intel.com \
--cc=rafael.j.wysocki@intel.com \
--cc=rajatja@google.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