summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBjorn Helgaas <bhelgaas@google.com>2026-04-13 20:50:01 +0300
committerBjorn Helgaas <bhelgaas@google.com>2026-04-13 20:50:01 +0300
commitb3a631e43fe92736e64d583dbfc9f8ca5dcead56 (patch)
treeaffb5420f6863878439f88990c88c721879de2b3
parent6de23f81a5e08be8fbf5e8d7e9febc72a5b5f27f (diff)
parent1ab4a3c805084d752ec571efc78272295a9f2f74 (diff)
downloadlinux-b3a631e43fe92736e64d583dbfc9f8ca5dcead56.tar.xz
Merge branch 'pci/aer'
- Clear only error bits in PCIe Device Status to avoid accidentally clearing Emergency Power Reduction Detected (Shuai Xue) - Check for AER errors even in devices without drivers (Lukas Wunner) * pci/aer: PCI/AER: Stop ruling out unbound devices as error source PCI/AER: Clear only error bits in PCIe Device Status
-rw-r--r--drivers/pci/pci.c7
-rw-r--r--drivers/pci/pcie/aer.c2
2 files changed, 3 insertions, 6 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c
index 8479c2e1f74f..8e3e4e24c909 100644
--- a/drivers/pci/pci.c
+++ b/drivers/pci/pci.c
@@ -2241,10 +2241,9 @@ EXPORT_SYMBOL_GPL(pci_set_pcie_reset_state);
#ifdef CONFIG_PCIEAER
void pcie_clear_device_status(struct pci_dev *dev)
{
- u16 sta;
-
- pcie_capability_read_word(dev, PCI_EXP_DEVSTA, &sta);
- pcie_capability_write_word(dev, PCI_EXP_DEVSTA, sta);
+ pcie_capability_write_word(dev, PCI_EXP_DEVSTA,
+ PCI_EXP_DEVSTA_CED | PCI_EXP_DEVSTA_NFED |
+ PCI_EXP_DEVSTA_FED | PCI_EXP_DEVSTA_URD);
}
#endif
diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c
index d916378bc707..c4fd9c0b2a54 100644
--- a/drivers/pci/pcie/aer.c
+++ b/drivers/pci/pcie/aer.c
@@ -1041,8 +1041,6 @@ static bool is_error_source(struct pci_dev *dev, struct aer_err_info *e_info)
* 3) There are multiple errors and prior ID comparing fails;
* We check AER status registers to find possible reporter.
*/
- if (atomic_read(&dev->enable_cnt) == 0)
- return false;
/* Check if AER is enabled */
pcie_capability_read_word(dev, PCI_EXP_DEVCTL, &reg16);