mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-05 06:18:45 -04:00
PCI/ASPM: Set ASPM_STATE_L1 when driver enables L1.1 or L1.2
Previously pci_enable_link_state(PCIE_LINK_STATE_L1_1) enabled only ASPM_STATE_L1_1 and did not enable ASPM_STATE_L1. The L1.1 state only works when L1 is enabled, so enable ASPM_STATE_L1 in addition, and do the same for L1.2. The only current caller is vmd_pm_enable_quirk(), which enables *all* ASPM states, so this should have no functional effect. [bhelgaas: commit log] Link: https://lore.kernel.org/r/20230504111301.229358-4-ajayagarwal@google.com Signed-off-by: Ajay Agarwal <ajayagarwal@google.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
committed by
Bjorn Helgaas
parent
25edb25d79
commit
80950a5460
@@ -1174,14 +1174,15 @@ int pci_enable_link_state(struct pci_dev *pdev, int state)
|
||||
link->aspm_default |= ASPM_STATE_L0S;
|
||||
if (state & PCIE_LINK_STATE_L1)
|
||||
link->aspm_default |= ASPM_STATE_L1;
|
||||
/* L1 PM substates require L1 */
|
||||
if (state & PCIE_LINK_STATE_L1_1)
|
||||
link->aspm_default |= ASPM_STATE_L1_1;
|
||||
link->aspm_default |= ASPM_STATE_L1_1 | ASPM_STATE_L1;
|
||||
if (state & PCIE_LINK_STATE_L1_2)
|
||||
link->aspm_default |= ASPM_STATE_L1_2;
|
||||
link->aspm_default |= ASPM_STATE_L1_2 | ASPM_STATE_L1;
|
||||
if (state & PCIE_LINK_STATE_L1_1_PCIPM)
|
||||
link->aspm_default |= ASPM_STATE_L1_1_PCIPM;
|
||||
link->aspm_default |= ASPM_STATE_L1_1_PCIPM | ASPM_STATE_L1;
|
||||
if (state & PCIE_LINK_STATE_L1_2_PCIPM)
|
||||
link->aspm_default |= ASPM_STATE_L1_2_PCIPM;
|
||||
link->aspm_default |= ASPM_STATE_L1_2_PCIPM | ASPM_STATE_L1;
|
||||
pcie_config_aspm_link(link, policy_to_aspm_state(link));
|
||||
|
||||
link->clkpm_default = (state & PCIE_LINK_STATE_CLKPM) ? 1 : 0;
|
||||
|
||||
Reference in New Issue
Block a user