[PATCH V5 0/4] PCI/ASPM: reconfigure ASPM following hotplug for POLICY_DEFAULT

Sinan Kaya okaya at codeaurora.org
Mon Mar 27 21:37:31 PDT 2017


Hi Mayurkumkar,

On 3/25/2017 5:38 PM, Sinan Kaya wrote:
> When the operating system is booted with the default ASPM policy
> (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 power on state.
> 
> ------------------------
> Changes from v4 (http://www.spinics.net/lists/linux-pci/msg59245.html)
> ------------------------
> - pci_aspm_init(): Fix function comment.  Called for every device we
>   enumerate.
> 	Upstream link partner:  Shouldn't need to check pdev->link_state
>         (should always be NULL for a brand-new device).
> 
> - pcie_aspm_init_link_state(): Called for bridges (upstream end of
>     link) after all children have been enumerated.  No longer needs to
>     check aspm_support_enabled or pdev->has_secondary_link or the VIA
>     quirk: pci_aspm_init() already checked that stuff, so we only need
>     to check pdev->link_state here.
> 
> - split the last patch into two
>   PCI/ASPM: move link_state cleanup to bridge remove
>   PCI/ASPM: save power on values during bridge init
> 
> - create bugzilla (https://bugzilla.kernel.org/show_bug.cgi?id=194895)
> - add fixes tags
> 
> Sinan Kaya (4):
>   PCI/ASPM: introduce pci_aspm_init() and add to pci_init_capabilities()
>   PCI/ASPM: add init hook to device_add
>   PCI/ASPM: save power on values during bridge init
>   PCI/ASPM: move link_state cleanup to bridge remove
> 
>  drivers/pci/pcie/aspm.c | 93 +++++++++++++++++++++++++++++++++----------------
>  drivers/pci/probe.c     |  3 ++
>  drivers/pci/remove.c    |  3 +-
>  include/linux/pci.h     |  2 ++
>  4 files changed, 69 insertions(+), 32 deletions(-)
> 

Can you test this on your system and provide your tested-by if all good?

Sinan

-- 
Sinan Kaya
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum, a Linux Foundation Collaborative Project.



More information about the linux-arm-kernel mailing list