aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/eeh.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/kernel/eeh.c')
-rw-r--r--arch/powerpc/kernel/eeh.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/eeh.c b/arch/powerpc/kernel/eeh.c
index f4b7a227f183..148db72a8c43 100644
--- a/arch/powerpc/kernel/eeh.c
+++ b/arch/powerpc/kernel/eeh.c
@@ -921,6 +921,13 @@ void eeh_add_device_late(struct pci_dev *dev)
921 eeh_sysfs_remove_device(edev->pdev); 921 eeh_sysfs_remove_device(edev->pdev);
922 edev->mode &= ~EEH_DEV_SYSFS; 922 edev->mode &= ~EEH_DEV_SYSFS;
923 923
924 /*
925 * We definitely should have the PCI device removed
926 * though it wasn't correctly. So we needn't call
927 * into error handler afterwards.
928 */
929 edev->mode |= EEH_DEV_NO_HANDLER;
930
924 edev->pdev = NULL; 931 edev->pdev = NULL;
925 dev->dev.archdata.edev = NULL; 932 dev->dev.archdata.edev = NULL;
926 } 933 }
@@ -1023,6 +1030,14 @@ void eeh_remove_device(struct pci_dev *dev)
1023 else 1030 else
1024 edev->mode |= EEH_DEV_DISCONNECTED; 1031 edev->mode |= EEH_DEV_DISCONNECTED;
1025 1032
1033 /*
1034 * We're removing from the PCI subsystem, that means
1035 * the PCI device driver can't support EEH or not
1036 * well. So we rely on hotplug completely to do recovery
1037 * for the specific PCI device.
1038 */
1039 edev->mode |= EEH_DEV_NO_HANDLER;
1040
1026 eeh_addr_cache_rmv_dev(dev); 1041 eeh_addr_cache_rmv_dev(dev);
1027 eeh_sysfs_remove_device(dev); 1042 eeh_sysfs_remove_device(dev);
1028 edev->mode &= ~EEH_DEV_SYSFS; 1043 edev->mode &= ~EEH_DEV_SYSFS;