PCI/ASPM: Disable only ASPM_STATE_L1 when driver disables L1
authorAjay Agarwal <ajayagarwal@google.com>
Thu, 4 May 2023 11:12:57 +0000 (16:42 +0530)
committerBjorn Helgaas <bhelgaas@google.com>
Thu, 18 May 2023 21:51:13 +0000 (16:51 -0500)
Previously pci_disable_link_state(PCIE_LINK_STATE_L1) disabled L1SS as well
as L1.  This is unnecessary since pcie_config_aspm_link() takes care that
L1SS is not enabled if L1 is disabled.

Disable only ASPM_STATE_L1 when the caller disables L1.  No functional
changes intended.

This is consistent with aspm_attr_store_common(), which disables only L1,
not L1SS, when L1 is disabled via the sysfs "l1_aspm" file.

[bhelgaas: commit log]
Link: https://lore.kernel.org/r/20230504111301.229358-2-ajayagarwal@google.com
Signed-off-by: Ajay Agarwal <ajayagarwal@google.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
drivers/pci/pcie/aspm.c

index db32335039d611a91b83d9badfc7a5ca365d2e18..8c8352eeee529165a65ade8523cfba3557cd6ce4 100644 (file)
@@ -1098,8 +1098,7 @@ static int __pci_disable_link_state(struct pci_dev *pdev, int state, bool sem)
        if (state & PCIE_LINK_STATE_L0S)
                link->aspm_disable |= ASPM_STATE_L0S;
        if (state & PCIE_LINK_STATE_L1)
-               /* L1 PM substates require L1 */
-               link->aspm_disable |= ASPM_STATE_L1 | ASPM_STATE_L1SS;
+               link->aspm_disable |= ASPM_STATE_L1;
        if (state & PCIE_LINK_STATE_L1_1)
                link->aspm_disable |= ASPM_STATE_L1_1;
        if (state & PCIE_LINK_STATE_L1_2)