diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2022-05-25 00:42:21 +0300 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2022-05-25 00:42:21 +0300 |
commit | 55fd033bae79a2d51a1804f10dc54b1182a8aa32 (patch) | |
tree | 231f19292b0de4bcb2745569e26e1169df54a510 /drivers/pci | |
parent | ae0d0d18a8056b59a84384d617eeca3e6c43ccc4 (diff) | |
parent | 203926da2bff8e172200a2f11c758987af112d4a (diff) | |
download | linux-55fd033bae79a2d51a1804f10dc54b1182a8aa32.tar.xz |
Merge branch 'pci/error'
- Clear AER "multiple errors" bits to avoid race that left them set forever
(Kuppuswamy Sathyanarayanan)
* pci/error:
PCI/AER: Clear MULTI_ERR_COR/UNCOR_RCV bits
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/pcie/aer.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c index 9fa1f97e5b27..7952e5efd6cf 100644 --- a/drivers/pci/pcie/aer.c +++ b/drivers/pci/pcie/aer.c @@ -101,6 +101,11 @@ struct aer_stats { #define ERR_COR_ID(d) (d & 0xffff) #define ERR_UNCOR_ID(d) (d >> 16) +#define AER_ERR_STATUS_MASK (PCI_ERR_ROOT_UNCOR_RCV | \ + PCI_ERR_ROOT_COR_RCV | \ + PCI_ERR_ROOT_MULTI_COR_RCV | \ + PCI_ERR_ROOT_MULTI_UNCOR_RCV) + static int pcie_aer_disable; static pci_ers_result_t aer_root_reset(struct pci_dev *dev); @@ -1196,7 +1201,7 @@ static irqreturn_t aer_irq(int irq, void *context) struct aer_err_source e_src = {}; pci_read_config_dword(rp, aer + PCI_ERR_ROOT_STATUS, &e_src.status); - if (!(e_src.status & (PCI_ERR_ROOT_UNCOR_RCV|PCI_ERR_ROOT_COR_RCV))) + if (!(e_src.status & AER_ERR_STATUS_MASK)) return IRQ_NONE; pci_read_config_dword(rp, aer + PCI_ERR_ROOT_ERR_SRC, &e_src.id); |