]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
PCI/DPC: Decode extended reasons
authorKeith Busch <keith.busch@intel.com>
Fri, 3 Feb 2017 21:46:12 +0000 (16:46 -0500)
committerBjorn Helgaas <bhelgaas@google.com>
Fri, 10 Feb 2017 20:35:02 +0000 (14:35 -0600)
Decode the currently defined extended event reasons rather than just using
the generic "extended" explanation.

Signed-off-by: Keith Busch <keith.busch@intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
drivers/pci/pcie/pcie-dpc.c

index 9811b14d9ad8b75dd2fa8b1b08f3f36d3d74c93c..5a261fd4f03df1d6a051f94147011a6a4e012018 100644 (file)
@@ -73,11 +73,15 @@ static irqreturn_t dpc_irq(int irq, void *context)
 
        if (status & PCI_EXP_DPC_STATUS_TRIGGER) {
                u16 reason = (status >> 1) & 0x3;
+               u16 ext_reason = (status >> 5) & 0x3;
 
-               dev_warn(&dpc->dev->device, "DPC %s triggered, remove downstream devices\n",
+               dev_warn(&dpc->dev->device, "DPC %s detected, remove downstream devices\n",
                         (reason == 0) ? "unmasked uncorrectable error" :
                         (reason == 1) ? "ERR_NONFATAL" :
-                        (reason == 2) ? "ERR_FATAL" : "extended error");
+                        (reason == 2) ? "ERR_FATAL" :
+                        (ext_reason == 0) ? "RP PIO error" :
+                        (ext_reason == 1) ? "software trigger" :
+                                            "reserved error");
                schedule_work(&dpc->work);
        }
        return IRQ_HANDLED;