diff options
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/pci.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 363a5c60bf9e..9f1fec14723f 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -1915,10 +1915,6 @@ void pci_enable_ari(struct pci_dev *dev) if (!pci_is_pcie(dev) || dev->devfn) return; - pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ARI); - if (!pos) - return; - bridge = dev->bus->self; if (!bridge || !pci_is_pcie(bridge)) return; @@ -1937,10 +1933,14 @@ void pci_enable_ari(struct pci_dev *dev) return; pci_read_config_word(bridge, pos + PCI_EXP_DEVCTL2, &ctrl); - ctrl |= PCI_EXP_DEVCTL2_ARI; + if (pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ARI)) { + ctrl |= PCI_EXP_DEVCTL2_ARI; + bridge->ari_enabled = 1; + } else { + ctrl &= ~PCI_EXP_DEVCTL2_ARI; + bridge->ari_enabled = 0; + } pci_write_config_word(bridge, pos + PCI_EXP_DEVCTL2, ctrl); - - bridge->ari_enabled = 1; } /** |