summaryrefslogtreecommitdiffstats
path: root/drivers/pci/pcie/aer/aerdrv.h
diff options
context:
space:
mode:
authorZhang, Yanmin <yanmin_zhang@linux.intel.com>2009-04-30 14:48:29 +0800
committerJesse Barnes <jbarnes@virtuousgeek.org>2009-05-05 12:20:57 -0700
commit029091df01116aff8dea89ce96a0a2534401803a (patch)
tree271c4560592f5b58ba55cb34d28780300ec13a65 /drivers/pci/pcie/aer/aerdrv.h
parentf328ddc154605be11c4ca38fee6ace8adb140087 (diff)
downloadblackbird-op-linux-029091df01116aff8dea89ce96a0a2534401803a.tar.gz
blackbird-op-linux-029091df01116aff8dea89ce96a0a2534401803a.zip
PCI: Fix pci-e port driver slot_reset bad default return value
When an upstream port reports an AER error to root port, kernel starts error recovery procedures. The default return value of function pcie_portdrv_slot_reset is PCI_ERS_RESULT_NONE. If all port service drivers of the downstream port under the upstream port have no slot_reset method in pci_error_handlers, AER recovery would stop without resume. Below patch against 2.6.30-rc3 fixes it. Signed-off-by: Zhang Yanmin <yanmin.zhang@linux.intel.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Diffstat (limited to 'drivers/pci/pcie/aer/aerdrv.h')
-rw-r--r--drivers/pci/pcie/aer/aerdrv.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/pci/pcie/aer/aerdrv.h b/drivers/pci/pcie/aer/aerdrv.h
index c7ad68b6c6d6..aa14482a4779 100644
--- a/drivers/pci/pcie/aer/aerdrv.h
+++ b/drivers/pci/pcie/aer/aerdrv.h
@@ -95,6 +95,9 @@ struct aer_broadcast_data {
static inline pci_ers_result_t merge_result(enum pci_ers_result orig,
enum pci_ers_result new)
{
+ if (new == PCI_ERS_RESULT_NONE)
+ return orig;
+
switch (orig) {
case PCI_ERS_RESULT_CAN_RECOVER:
case PCI_ERS_RESULT_RECOVERED:
OpenPOWER on IntegriCloud