diff options
author | Bjorn Helgaas <bhelgaas@google.com> | 2018-06-06 16:10:06 -0500 |
---|---|---|
committer | Bjorn Helgaas <bhelgaas@google.com> | 2018-06-06 16:10:06 -0500 |
commit | 8e069da28dfb09b78938395ebfb45a279507faf3 (patch) | |
tree | ba3c9aa3fe53563bd80b5e62de63b82da8bb02db /drivers/pci/pcie | |
parent | 08b5b2f7831a5378434bd8cc19e9239f3a3b6134 (diff) | |
parent | 56abbf8ad73c89d0a4c3c84b1449ceaaabd1b8c7 (diff) | |
download | linux-stable-8e069da28dfb09b78938395ebfb45a279507faf3.tar.gz linux-stable-8e069da28dfb09b78938395ebfb45a279507faf3.tar.bz2 linux-stable-8e069da28dfb09b78938395ebfb45a279507faf3.zip |
Merge branch 'pci/dpc'
- clear interrupt status in top half to avoid interrupt storm (Oza
Pawandeep)
* pci/dpc:
PCI/DPC: Clear interrupt status in interrupt handler top half
Diffstat (limited to 'drivers/pci/pcie')
-rw-r--r-- | drivers/pci/pcie/dpc.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c index 6064041409d2..d6436681c535 100644 --- a/drivers/pci/pcie/dpc.c +++ b/drivers/pci/pcie/dpc.c @@ -104,7 +104,7 @@ static pci_ers_result_t dpc_reset_link(struct pci_dev *pdev) } pci_write_config_word(pdev, cap + PCI_EXP_DPC_STATUS, - PCI_EXP_DPC_STATUS_TRIGGER | PCI_EXP_DPC_STATUS_INTERRUPT); + PCI_EXP_DPC_STATUS_TRIGGER); pci_read_config_word(pdev, cap + PCI_EXP_DPC_CTL, &ctl); pci_write_config_word(pdev, cap + PCI_EXP_DPC_CTL, @@ -225,6 +225,9 @@ static irqreturn_t dpc_irq(int irq, void *context) if (dpc->rp_extensions && reason == 3 && ext_reason == 0) dpc_process_rp_pio_error(dpc); + pci_write_config_word(pdev, cap + PCI_EXP_DPC_STATUS, + PCI_EXP_DPC_STATUS_INTERRUPT); + schedule_work(&dpc->work); return IRQ_HANDLED; |