[PATCH V4 0/3] PCI/ASPM: reconfigure ASPM following hotplug for POLICY_DEFAULT

Bjorn Helgaas helgaas at kernel.org
Mon Mar 13 14:46:16 PDT 2017


On Mon, Mar 13, 2017 at 04:48:02PM -0400, Sinan Kaya wrote:
> y
> (POLICY_DEFAULT), current code is querying the enable/disable
> states from ASPM registers to determine the policy.
> 
> For example, a BIOS could set the power saving state to performance
> and clear all ASPM control registers. A balanced ASPM policy could
> enable L0s and disable L1. A power conscious BIOS could enable both
> L0s and L1 to trade off latency and performance vs. power.
> 
> After hotplug removal, pcie_aspm_exit_link_state() function clears
> the ASPM registers. An insertion following hotplug removal reads
> incorrect policy as ASPM disabled even though ASPM was enabled
> during boot.
> 
> This is caused by the fact that same function is used for reconfiguring
> ASPM regardless of the of the power on state.
> 
> ------------------------
> Changes from v3 (https://lkml.org/lkml/2017/3/8/670)
> ------------------------
> - call pcie_aspm_init_link_state() for every device, maybe from
> pci_init_capabilities()
> 
> - for bridges, have pcie_aspm_init_link_state() allocate a
> link_state, regardless of whether it currently has any children,
> and save the ASPM settings done by firmware
> 
> - for endpoints, have pcie_aspm_init_link_state() do the actual ASPM
> setup of the link as it currently does
> 
> - for endpoints, change pcie_aspm_exit_link_state() so it cleans up
> the device's own state and disables ASPM if necessary, but doesn't
> remove the parent's link_state
> 
> - for bridges, change pcie_aspm_exit_link_state() so it frees the
> bridge's own link_state
> 
> Sinan Kaya (3):
>   PCI/ASPM: divide ASPM capability init into pre and post init
>   PCI/ASPM: move part of ASPM initialization to pci_init_capabilities
>   PCI/ASPM: move link_state cleanup to bridge remove
> 
>  drivers/pci/pcie/aspm.c | 175 +++++++++++++++++++++++++++++++++++-------------
>  drivers/pci/probe.c     |   3 +
>  include/linux/pci.h     |   6 ++
>  3 files changed, 136 insertions(+), 48 deletions(-)

What is this series based on?  Unless they depend on other in-flight
patches, I apply patches to branches based on my "master" branch,
which is typically -rc1 or -rc2 (it's currently v4.11-rc1).  These
don't apply to either.

Bjorn



More information about the linux-arm-kernel mailing list