diff options
Diffstat (limited to 'arch/powerpc/kernel/eeh.c')
-rw-r--r-- | arch/powerpc/kernel/eeh.c | 15 |
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; |