PCI/DPC: Add and use DPC Status register field definitions
authorBjorn Helgaas <bhelgaas@google.com>
Tue, 16 Jan 2018 23:37:50 +0000 (17:37 -0600)
committerBjorn Helgaas <helgaas@kernel.org>
Tue, 30 Jan 2018 21:26:25 +0000 (15:26 -0600)
Add definitions for DPC Status register fields and use them in the code.
No functional change intended.

Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Reviewed-by: Keith Busch <keith.busch@intel.com>
Reviewed-by: Sinan Kaya <okaya@codeaurora.org>
drivers/pci/pcie/pcie-dpc.c
include/uapi/linux/pci_regs.h

index 0f4eb6111ab4c68b9c04575e590630243c0f7cf5..7eb9bc7d4bfdb4153808f267fbfc33f3ae1ee3bb 100644 (file)
@@ -211,8 +211,8 @@ static irqreturn_t dpc_irq(int irq, void *context)
        dev_info(dev, "DPC containment event, status:%#06x source:%#06x\n",
                status, source);
 
-       reason = (status >> 1) & 0x3;
-       ext_reason = (status >> 5) & 0x3;
+       reason = (status & PCI_EXP_DPC_STATUS_TRIGGER_RSN) >> 1;
+       ext_reason = (status & PCI_EXP_DPC_STATUS_TRIGGER_RSN_EXT) >> 5;
 
        dev_warn(dev, "DPC %s detected, remove downstream devices\n",
                 (reason == 0) ? "unmasked uncorrectable error" :
index 70c2b2ade0483fde34bdcd77a4cf4bcabac94252..970a0dc535c4b86a2ad85b963f6a8889620d9e45 100644 (file)
 
 #define PCI_EXP_DPC_STATUS             8       /* DPC Status */
 #define  PCI_EXP_DPC_STATUS_TRIGGER    0x01    /* Trigger Status */
+#define  PCI_EXP_DPC_STATUS_TRIGGER_RSN        0x06    /* Trigger Reason */
 #define  PCI_EXP_DPC_STATUS_INTERRUPT  0x08    /* Interrupt Status */
 #define  PCI_EXP_DPC_RP_BUSY           0x10    /* Root Port Busy */
+#define  PCI_EXP_DPC_STATUS_TRIGGER_RSN_EXT 0x60 /* Trig Reason Extension */
 
 #define PCI_EXP_DPC_SOURCE_ID          10      /* DPC Source Identifier */