PCI/ASPM: Restore parent state to parent, child state to child
authorKai-Heng Feng <kai.heng.feng@canonical.com>
Mon, 6 May 2024 05:16:02 +0000 (13:16 +0800)
committerBjorn Helgaas <bhelgaas@google.com>
Mon, 6 May 2024 19:12:40 +0000 (14:12 -0500)
There's a typo that makes parent device uses child LNKCTL value and vice
versa. This causes Micron NVMe to trigger a reboot upon system resume.

Correct the typo to fix the issue.

Fixes: 64dbb2d70744 ("PCI/ASPM: Disable L1 before configuring L1 Substates")
Link: https://lore.kernel.org/r/20240506051602.1990743-1-kai.heng.feng@canonical.com
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
[bhelgaas: update subject]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/pci/pcie/aspm.c

index 2428d278e015ab99b2989b01a6762806cebb549b..47761c7ef267ab984fe93638eb7f2f485c119064 100644 (file)
@@ -177,8 +177,8 @@ void pci_restore_aspm_l1ss_state(struct pci_dev *pdev)
        /* Restore L0s/L1 if they were enabled */
        if (FIELD_GET(PCI_EXP_LNKCTL_ASPMC, clnkctl) ||
            FIELD_GET(PCI_EXP_LNKCTL_ASPMC, plnkctl)) {
-               pcie_capability_write_word(parent, PCI_EXP_LNKCTL, clnkctl);
-               pcie_capability_write_word(pdev, PCI_EXP_LNKCTL, plnkctl);
+               pcie_capability_write_word(parent, PCI_EXP_LNKCTL, plnkctl);
+               pcie_capability_write_word(pdev, PCI_EXP_LNKCTL, clnkctl);
        }
 }