diff options
Diffstat (limited to 'drivers/pci/pcie/aspm.c')
-rw-r--r-- | drivers/pci/pcie/aspm.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/pci/pcie/aspm.c b/drivers/pci/pcie/aspm.c index f289ca9bf18d..5b7056cec00c 100644 --- a/drivers/pci/pcie/aspm.c +++ b/drivers/pci/pcie/aspm.c | |||
@@ -303,9 +303,6 @@ static void pcie_get_aspm_reg(struct pci_dev *pdev, | |||
303 | pos = pci_find_capability(pdev, PCI_CAP_ID_EXP); | 303 | pos = pci_find_capability(pdev, PCI_CAP_ID_EXP); |
304 | pci_read_config_dword(pdev, pos + PCI_EXP_LNKCAP, ®32); | 304 | pci_read_config_dword(pdev, pos + PCI_EXP_LNKCAP, ®32); |
305 | info->support = (reg32 & PCI_EXP_LNKCAP_ASPMS) >> 10; | 305 | info->support = (reg32 & PCI_EXP_LNKCAP_ASPMS) >> 10; |
306 | /* 00b and 10b are defined as "Reserved". */ | ||
307 | if (info->support == PCIE_LINK_STATE_L1) | ||
308 | info->support = 0; | ||
309 | info->latency_encoding_l0s = (reg32 & PCI_EXP_LNKCAP_L0SEL) >> 12; | 306 | info->latency_encoding_l0s = (reg32 & PCI_EXP_LNKCAP_L0SEL) >> 12; |
310 | info->latency_encoding_l1 = (reg32 & PCI_EXP_LNKCAP_L1EL) >> 15; | 307 | info->latency_encoding_l1 = (reg32 & PCI_EXP_LNKCAP_L1EL) >> 15; |
311 | pci_read_config_word(pdev, pos + PCI_EXP_LNKCTL, ®16); | 308 | pci_read_config_word(pdev, pos + PCI_EXP_LNKCTL, ®16); |
@@ -659,8 +656,10 @@ void pcie_aspm_exit_link_state(struct pci_dev *pdev) | |||
659 | free_link_state(link); | 656 | free_link_state(link); |
660 | 657 | ||
661 | /* Recheck latencies and configure upstream links */ | 658 | /* Recheck latencies and configure upstream links */ |
662 | pcie_update_aspm_capable(root); | 659 | if (parent_link) { |
663 | pcie_config_aspm_path(parent_link); | 660 | pcie_update_aspm_capable(root); |
661 | pcie_config_aspm_path(parent_link); | ||
662 | } | ||
664 | out: | 663 | out: |
665 | mutex_unlock(&aspm_lock); | 664 | mutex_unlock(&aspm_lock); |
666 | up_read(&pci_bus_sem); | 665 | up_read(&pci_bus_sem); |