summaryrefslogtreecommitdiff
path: root/drivers/pci/access.c
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2024-05-17 02:14:09 +0300
committerBjorn Helgaas <bhelgaas@google.com>2024-05-17 02:14:09 +0300
commit83711a1ab210cf59d30a3e65f72268f5404c1870 (patch)
tree65f9202cc2aa46c84b87f4c4f71d76eb3f388f01 /drivers/pci/access.c
parenta6faf3f450ecdb084128751e8fda0e515283da39 (diff)
parent934edcd436dca0447e0d3691a908394ba16d06c3 (diff)
downloadlinux-83711a1ab210cf59d30a3e65f72268f5404c1870.tar.xz
Merge branch 'pci/cxl'
- Lock the upstream bridge while using it to perform a Secondary Bus Reset (Dave Jiang) - Return failure when attempting Secondary Bus Reset below a CXL Port that has SBR masked (Dave Jiang) - Add a "cxl_bus" reset method that temporarily unmasks SBR (Dave Jiang) - Add a warning if we reset a CXL type 3 memory device that was in use while being reset (Dave Jiang) * pci/cxl: cxl: Add post-reset warning if reset results in loss of previously committed HDM decoders PCI/CXL: Add 'cxl_bus' reset method for devices below CXL Ports PCI/CXL: Fail bus reset if upstream CXL Port has SBR masked PCI: Lock upstream bridge for pci_reset_function() PCI/CXL: Move CXL Vendor ID to pci_ids.h
Diffstat (limited to 'drivers/pci/access.c')
-rw-r--r--drivers/pci/access.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/pci/access.c b/drivers/pci/access.c
index 6449056b57dd..36f10c7f9ef5 100644
--- a/drivers/pci/access.c
+++ b/drivers/pci/access.c
@@ -275,6 +275,8 @@ void pci_cfg_access_lock(struct pci_dev *dev)
{
might_sleep();
+ lock_map_acquire(&dev->cfg_access_lock);
+
raw_spin_lock_irq(&pci_lock);
if (dev->block_cfg_access)
pci_wait_cfg(dev);
@@ -329,6 +331,8 @@ void pci_cfg_access_unlock(struct pci_dev *dev)
raw_spin_unlock_irqrestore(&pci_lock, flags);
wake_up_all(&pci_cfg_wait);
+
+ lock_map_release(&dev->cfg_access_lock);
}
EXPORT_SYMBOL_GPL(pci_cfg_access_unlock);