void pci_save_dpc_state(struct pci_dev *dev);
 void pci_restore_dpc_state(struct pci_dev *dev);
 void pci_dpc_init(struct pci_dev *pdev);
+void dpc_process_error(struct pci_dev *pdev);
+pci_ers_result_t dpc_reset_link(struct pci_dev *pdev);
 #else
 static inline void pci_save_dpc_state(struct pci_dev *dev) {}
 static inline void pci_restore_dpc_state(struct pci_dev *dev) {}
 
        return 0;
 }
 
-static pci_ers_result_t dpc_reset_link(struct pci_dev *pdev)
+pci_ers_result_t dpc_reset_link(struct pci_dev *pdev)
 {
        u16 cap;
 
        return 1;
 }
 
-static irqreturn_t dpc_handler(int irq, void *context)
+void dpc_process_error(struct pci_dev *pdev)
 {
-       struct pci_dev *pdev = context;
        u16 cap = pdev->dpc_cap, status, source, reason, ext_reason;
        struct aer_err_info info;
 
                pci_cleanup_aer_uncorrect_error_status(pdev);
                pci_aer_clear_fatal_status(pdev);
        }
+}
+
+static irqreturn_t dpc_handler(int irq, void *context)
+{
+       struct pci_dev *pdev = context;
+
+       dpc_process_error(pdev);
 
        /* We configure DPC so it only triggers on ERR_FATAL */
        pcie_do_recovery(pdev, pci_channel_io_frozen, dpc_reset_link);