Re: [PATCH v5 2/8] PCI: Allow runtime PM on Thunderbolt ports

From: Rafael J. Wysocki
Date: Mon Jan 30 2017 - 02:15:48 EST

On Sat, Jan 28, 2017 at 11:09 PM, Bjorn Helgaas <helgaas@xxxxxxxxxx> wrote:
> On Sun, Jan 15, 2017 at 09:03:45PM +0100, Lukas Wunner wrote:
>> Currently PCIe ports are only allowed to go to D3 if the BIOS is dated
>> 2015 or newer to avoid potential issues with old chipsets. However for
>> Thunderbolt we know that even the oldest controller, Light Ridge (2010),
>> is able to suspend its ports to D3 just fine.
>> We're about to add runtime PM for Thunderbolt on the Mac. Apple has
>> released two EFI security updates in 2015 which encompass all machines
>> with Thunderbolt, but the achieved power saving should be made available
>> to users even if they haven't updated their BIOS. To this end,
>> special-case Thunderbolt in pci_bridge_d3_possible().
> I think this whole paragraph is unnecessary detail. I first thought
> you had some connection with a firmware security issue, but now I see
> the only point is that if you have pre-2015 firmware, you could update
> it since newer firmware is available.
>> This allows the Thunderbolt controller to power down but the root port
>> to which the Thunderbolt controller is attached remains in D0 unless
>> the EFI update is installed. Users can pass pcie_port_pm=force on the
>> kernel command line if they cannot install the EFI update but still want
>> to benefit from the additional power saving of putting the root port
>> into D3. In practice, root ports can be suspended to D3 without issues
>> at least on 2012 Ivy Bridge machines.
> I'm not sure I like advertising pcie_port_pm=force. That just means a
> few leet folks will use this parameter and run in a subtly different
> configuration than everybody else, and possibly trip over subtly
> different issues. The audience (users who read kernel change logs and
> are willing to use special boot parameters, but who can't install an
> EFI update) seems small.

That basically is for somebody who has a product and knows that the
feature works there, but doesn't want or simply can't patch the kernel
(which is shipped by a distro or similar).