diff options
Diffstat (limited to 'arch/powerpc/platforms/pseries')
-rw-r--r-- | arch/powerpc/platforms/pseries/eeh.c | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/arch/powerpc/platforms/pseries/eeh.c b/arch/powerpc/platforms/pseries/eeh.c index 8011088392d..309d38ef732 100644 --- a/arch/powerpc/platforms/pseries/eeh.c +++ b/arch/powerpc/platforms/pseries/eeh.c | |||
@@ -984,7 +984,8 @@ int __exit eeh_ops_unregister(const char *name) | |||
984 | */ | 984 | */ |
985 | void __init eeh_init(void) | 985 | void __init eeh_init(void) |
986 | { | 986 | { |
987 | struct device_node *phb, *np; | 987 | struct pci_controller *hose, *tmp; |
988 | struct device_node *phb; | ||
988 | int ret; | 989 | int ret; |
989 | 990 | ||
990 | /* call platform initialization function */ | 991 | /* call platform initialization function */ |
@@ -1000,19 +1001,9 @@ void __init eeh_init(void) | |||
1000 | 1001 | ||
1001 | raw_spin_lock_init(&confirm_error_lock); | 1002 | raw_spin_lock_init(&confirm_error_lock); |
1002 | 1003 | ||
1003 | np = of_find_node_by_path("/rtas"); | 1004 | /* Enable EEH for all adapters */ |
1004 | if (np == NULL) | 1005 | list_for_each_entry_safe(hose, tmp, &hose_list, list_node) { |
1005 | return; | 1006 | phb = hose->dn; |
1006 | |||
1007 | /* Enable EEH for all adapters. Note that eeh requires buid's */ | ||
1008 | for (phb = of_find_node_by_name(NULL, "pci"); phb; | ||
1009 | phb = of_find_node_by_name(phb, "pci")) { | ||
1010 | unsigned long buid; | ||
1011 | |||
1012 | buid = get_phb_buid(phb); | ||
1013 | if (buid == 0 || !of_node_to_eeh_dev(phb)) | ||
1014 | continue; | ||
1015 | |||
1016 | traverse_pci_devices(phb, eeh_early_enable, NULL); | 1007 | traverse_pci_devices(phb, eeh_early_enable, NULL); |
1017 | } | 1008 | } |
1018 | 1009 | ||