[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