diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2024-11-01 15:44:23 -1000 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2024-11-01 15:44:23 -1000 |
commit | 05b92660cdfe53a49425467fa64b5ac4451a7f9e (patch) | |
tree | cae967d6042e4bdc1af5ec83de0fa64b6acec7f7 | |
parent | 269ce3bd62e8ad83dadc80a2f755a799697ca4a3 (diff) | |
parent | f3c3ccc4fe49dbc560b01d16bebd1b116c46c2b4 (diff) | |
download | linux-05b92660cdfe53a49425467fa64b5ac4451a7f9e.tar.gz linux-05b92660cdfe53a49425467fa64b5ac4451a7f9e.tar.bz2 linux-05b92660cdfe53a49425467fa64b5ac4451a7f9e.zip |
Merge tag 'pci-v6.12-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci
Pull pci fix from Bjorn Helgaas:
- Enable device-specific ACS-like functionality even if the device
doesn't advertise an ACS capability, which got broken when adding
fancy ACS kernel parameter (Jason Gunthorpe)
* tag 'pci-v6.12-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci:
PCI: Fix pci_enable_acs() support for the ACS quirks
-rw-r--r-- | drivers/pci/pci.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 7d85c04fbba2..225a6cd2e9ca 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -1067,8 +1067,15 @@ static void pci_std_enable_acs(struct pci_dev *dev, struct pci_acs *caps) static void pci_enable_acs(struct pci_dev *dev) { struct pci_acs caps; + bool enable_acs = false; int pos; + /* If an iommu is present we start with kernel default caps */ + if (pci_acs_enable) { + if (pci_dev_specific_enable_acs(dev)) + enable_acs = true; + } + pos = dev->acs_cap; if (!pos) return; @@ -1077,11 +1084,8 @@ static void pci_enable_acs(struct pci_dev *dev) pci_read_config_word(dev, pos + PCI_ACS_CTRL, &caps.ctrl); caps.fw_ctrl = caps.ctrl; - /* If an iommu is present we start with kernel default caps */ - if (pci_acs_enable) { - if (pci_dev_specific_enable_acs(dev)) - pci_std_enable_acs(dev, &caps); - } + if (enable_acs) + pci_std_enable_acs(dev, &caps); /* * Always apply caps from the command line, even if there is no iommu. |